pytorch框架中一些代码的解释

预处理函数

class torchvision.transforms.Compose(transforms)

    data_transforms = {'train': transforms.Compose([transforms.RandomSizedCrop(48),transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize([0.5,0.5,0.5], [0.5,0.5,0.5])]),'val': transforms.Compose([transforms.Scale(image_size),transforms.CenterCrop(crop_size),transforms.ToTensor(),transforms.Normalize([0.5,0.5,0.5], [0.5,0.5,0.5])]),}

Compose方法是将多种变换组合起来。

1.crop

裁剪(Crop)—— transforms.CenterCrop:中心裁剪:size:所需要裁剪的尺寸 transforms.RandomCrop:从图片中随机裁剪出尺寸为size的图片
transforms.RandomResizedCrop:随机大小、长宽比裁剪图像
transforms.FiveCrop:在图像上下左右以及中心裁剪出尺寸为size的5张图像
transforms.TenCrop:对裁剪的5张图像进行水平或垂直镜像获得10张图像

transforms.RandomCrop:

size:所需裁剪图像尺寸。
padding:填充大小: 当为a时,上下左右均填充为a个像素,当为(a,b)时,上下填充b个像素,左右填充a个像素,当为(a,b,c,d)时,左、上、右、下分别填充a,b,c,d。
pad_if_need:图像小于设定size,则填充。
padding_mode:填充模式,有四种模式。
1、constant:像素值由fill设定
2、edge:像素值由图像边缘像素决定。
3、reflect:镜像填充,最后一个像素不镜像,
eg:[1,2,3,4]——>[3,2,1,2,3,4,3,2]。
4、symmetric:镜像填充,最后一个像素镜像,
eg:[1,2,3 ,4 ] → [2,1,1,2,3,4,4 ,3 ]。
fill:constant时,设置填充的像素值。

transforms.RandomResizedCrop:

size:裁剪图像大小。
scale:随机裁剪面积比例,默认是(0.08,1)。
ratio:随机长宽比,默认(3/4,4/3)。
interpolation:插值方法,PIL.Image.Nearest\PIL.Image.Bilinear\PIL.Image.Bicubic

————————————————
原文链接:https://blog.csdn.net/weixin_43687366/article/details/107740433

transforms.RandomResizedCrop( ) 将给定图像随机裁剪为不同的大小和宽高比,然后缩放所裁剪得到的图像为制定的大小;(即先随机采集,然后对裁剪得到的图像缩放为同一大小)默认scale=(0.08, 1.0)

from PIL import Image
from torchvision import transforms
import matplotlib.pyplot as plt
img = Image.open(r"F:\code DVC\python image processing\hanli2.png")
print("原图大小:",img.size)
data1 = transforms.RandomResizedCrop(200)(img)
print("随机裁剪后的大小:",data1.size)
data2 = transforms.RandomResizedCrop(200)(img)
data3 = transforms.RandomResizedCrop(100)(img)# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.subplot(2,2,1),plt.imshow(img),plt.axis('off'),plt.title("原图")
#plt.subplot(2,2,1)表示把显示界面分割成2*2的网格。
# 其中,第一个参数是行数,第二个参数是列数,第三个参数表示图形的标号。
plt.subplot(2,2,2),plt.imshow(data1),plt.axis('off'),plt.title("200图1")
plt.subplot(2,2,3),plt.imshow(data2),plt.axis('off'),plt.title("200图2")
plt.subplot(2,2,4),plt.imshow(data3),plt.axis('off'),plt.title("100图3")
plt.show()

2.翻转和旋转

翻转和旋转(Flip and Rotation)
依概率p水平翻转:transforms.RandomHorizontalFlip(p=0.5)
依概率p垂直翻转:transforms.RandomVerticalFlip(p=0.5)
随机旋转:transforms.RandomRotation

3.图像变换

transforms.Pad:对图像边缘进行填充
transforms.ColorJitter:修改图像亮度、对比度饱和度
transforms.Grayscale:转灰度图
transforms.RandomGrayscale:依概率转换为灰度图
transforms.RandomAffine:仿射变换
transforms.LinearTransformation:线性变换
transforms.RandomErasing:随机选择图像中的矩形区域并擦除其像素。 transforms.Lambda
transforms.Resize
transforms.ToTensor:转换为tensor向量
transforms.Normalize:标准化

(1).transform.Normalize经常看到

transform.ToTensor(),
transform.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))

以上面代码为例,ToTensor()能够把灰度范围从0-255变换到0-1之间,而后面的transform.Normalize()则把0-1变换到(-1,1).具体地说,对每个通道而言,Normalize执行以下操作:

image=(image-mean)/std

原文链接:https://blog.csdn.net/jzwong/article/details/104272600

4.transforms的操作

transforms.RandomChoice:从给定的一系列transforms中选一个进行操作
transforms.RandomApply:给一个transforms加上概率,以一定的概率执行该操作
transforms.RandomOrder:将transforms中的操作顺序随机打乱
原文链接:https://blog.csdn.net/weixin_43687366/article/details/107740433

pytorch框架(计算机视觉)一.数据增强相关推荐

  1. 【直播预告】计算机视觉中数据增强原理和实践

    应广大粉丝要求,以后有三AI会多组织直播,分享更多实践的干货知识,下面预告一下下周六的知乎Live直播-计算机视觉中数据增强原理和实践. 1.直播基本信息 时间:2019年4月20日20:00开始. ...

  2. 使用PyTorch和Albumentations进行数据增强与损失函数

    数据扩增 Part 1 数据读取与数据扩增 图像读取 数据扩增 基于图像处理的数据扩增 几何变换 灰度和彩色空间变换 添加噪声和滤波 图像混合(Mixing images) 随机搽除(Random e ...

  3. 【动手学深度学习PyTorch版】27 数据增强

    上一篇请移步[动手学深度学习PyTorch版]23 深度学习硬件CPU 和 GPU_水w的博客-CSDN博客 目录 一.数据增强 1.1 数据增强(主要是关于图像增强) ◼ CES上的真实的故事 ◼ ...

  4. 【Pytorch学习笔记】数据增强

    前言 torchvision 模块包含常用的数据集,模型建构,图像变换算法,分别是torchvision.datasets,torchvision.models,torchvision.transfo ...

  5. Pytorch 目标检测BoundingBox数据增强 详细记录

    目录 1.resize 2 裁剪crop 2.1 中心裁剪center_crop 2.2 随机图像大小裁剪RandomSize_crop 2.3 随机裁剪Random_crop 3.随机翻转rando ...

  6. 【transformer】【pytorch】DeiT的数据增强

    1 main中的相关参数 #函数:def get_args_parser(): parser.add_argument('--input-size', default=224, type=int, h ...

  7. pytorch图像数据增强N大技巧

    数据增强对深度神经网络的训练来说是非常重要的,尤其是在数据量较小的情况下能起到扩充数据的效果. 还记得当时在学习过拟合的解决方法的时候,就有一条就是数据增强,那么我们这次来学习下,在 pytorch ...

  8. PyTorch 学习笔记(二):PyTorch的数据增强与数据标准化

    本文截取自<PyTorch 模型训练实用教程>,获取全文pdf请点击:https://github.com/tensor-yu/PyTorch_Tutorial 文章目录 transfor ...

  9. 论文阅读笔记(15):Deep Subspace Clustering with Data Augmentation,深度子空间聚类+数据增强

    论文阅读笔记(15):Deep Subspace Clustering with Data Augmentation,深度子空间聚类+数据增强 摘要 1 介绍 2 相关工作 带增强的聚类方法 具有一致 ...

最新文章

  1. 关于AttributeError: module ‘numpy‘ has no attribute ‘integer‘的解决方法
  2. java c3p0 配置文件_【c3p0】 C3P0的三种配置方式以及基本配置项详解
  3. vmdk文件怎么安装到虚拟机_【技术分享】虚拟机镜像解析
  4. Sql Server 2005中的快照隔离
  5. 2021牛客暑期多校训练营4 D-Rebuild Tree(prufer序列+树形dp)
  6. mysql explicit_defaults_for_timestamp参数
  7. 时间格式化及操作(moment.js篇)
  8. JAVA定义一个鲜花类_Java作业 题目:16版.情人节送玫瑰花
  9. startActivity流程(上)
  10. 拼多多上架专供湖北平价口罩 每天300万只
  11. 杰魔(Geomagic Design)逆向工程软件学习0-产品逆向工程介绍
  12. matlab插值函数 外插,02-函数插值--Matlab插值函数
  13. 用javascript实现一个打乱文字小程序
  14. “智能营销新图景”梅花网大展华院数据主题演讲
  15. ffmpeg给视频加水印
  16. Onload ‐ TCP
  17. 精图规范1.0----16 交互性 Interactivity
  18. 一边掉眼泪,一边用文字诉说_伤感日志
  19. 90岁的褚时健反思:活着是为了什么?
  20. 【速览】2021年中国风电轴承行业发展现状分析:大功率风电轴承研发进程加快[图]

热门文章

  1. 基于php027网上答疑系统在线答疑
  2. Android APP Camera2应用(02)预览流程
  3. 项目实训-中医药知识图谱7
  4. 从海康萤石看企业经营之不易
  5. getDeclaredFields方法
  6. 各家大牛免费邮箱的每天发信数量限制
  7. MySQL declare语句用法介绍
  8. 750W高PF值充电机用电源方案
  9. 十四.2匀速运动,匀速运动速度的合成和分解
  10. 阿尔卡特朗讯(青岛)2015校园招聘笔试题