pytorch(7)——二十二种transforms数据预处理方法

                                                                                                                                    **一、数据增强**

数据增强:叫数据增广,数据扩增,他是对训练集进行变换,使训练集更丰富从而让模型更具泛化能力。
二、transforms——裁剪
1)transforms.Centercrop
功能:从图像中心裁剪图片
size:所需裁剪图片尺寸
2)
pytorch(7)——二十二种transforms数据预处理方法_第1张图片
功能:从图片中随机裁剪出尺寸为size的图片
padding:设置填充大小
当为a时,上下左右均填充a个像素
当为(a,b)时,上下填充b个像素,左右填充a个像素
当为(a,b,c,d)时,左、上、右、下(顺时针)分别填充a,b,c,d
padding_if_need:若图像设定size,则填充
padding_mode:填充模式,有4种模式
• constant:像素值由fill设定
• edge:像素值由图像边缘像素决定
• reflect:镜像填充,最后一个像素不镜像,如[1,2,3]—>[2,1,2,3,2]
• symmetric:镜像填充,最后一个像素镜像,如[1,2,3]—>[1,1,2,3,3]
3)
pytorch(7)——二十二种transforms数据预处理方法_第2张图片
功能:随机大小、长宽比裁剪图片
• size:所需裁剪图片尺寸
• scale:随机裁剪面积比例, 默认(0.08, 1)
• ratio:随机长宽比,默认(3 /4, 4/3)
• interpolation:插值方法
PIL.Image.NEAREST
PIL.Image.BILINEAR
PIL.Image.BICUBIC
4)
在这里插入图片描述
功能:在图像的上下左右以及中心裁剪出尺寸为size的5张图片
在这里插入图片描述
功能:对这5张图片进行水平或者垂直镜像获得10张图片
• size:所需裁剪图片尺寸
• vertical_flip:是否垂直翻转
三、transforms——翻转和旋转
1)
RandomHorizontalFlip(p=0.5)
RandomVerticalFlip(p=0.5)
功能:依概率水平(左右)或垂直(上下)翻转图片
• p:翻转概率
2)
pytorch(7)——二十二种transforms数据预处理方法_第3张图片
功能:随机旋转图片
• degrees:旋转角度
当为a时,在( -a, a)之间选择旋转角度
当为(a, b)时,在(a, b)之间选择旋转角度
• resample:重采样方法
• expand:是否扩大图片,旋转时图片会相应的扩大
• center:旋转点设置,默认中心旋转
三、transforms——图像变换
1)
在这里插入图片描述
功能:对图片边缘进行填充
• padding:设置填充大小
当为a时,上下左右均填充a个像素
当为(a, b)时,上下填充b个像素,左右填充a个像素
当为(a, b, c, d)时,左,上,右,下分别填充a, b, c, d
• padding_mode:填充模式,有4种模式, constant、 edge、 reflect和symmetric
• fill: constant时,设置填充的像素值, (R, G, B) or (Gray)
2)
pytorch(7)——二十二种transforms数据预处理方法_第4张图片
功能:调整亮度、对比度、饱和度和色相
• brightness:亮度调整因子
当为a时,从[max(0, 1-a), 1+a]中随机选择
当为(a, b)时,从[a, b]中
• contrast:对比度参数,同brightness
• saturation:饱和度参数,同brightness
• hue:色相参数,当为a时,从[-a, a]中选择参数,注: 0<= a <= 0.5
当为(a, b)时,从[a, b]中选择参数,注: -0.5 <= a <= b <= 0.5
3)
pytorch(7)——二十二种transforms数据预处理方法_第5张图片
功能:依概率将图片转换为灰度图
• num_ouput_channels:输出通道数
只能设1或3
• p:概率值,图像被转换为灰度图的概率
4)
pytorch(7)——二十二种transforms数据预处理方法_第6张图片
功能:对图像进行仿射变换,仿射变换是二维的线性变换,由五种基本原子变换构成,分别是旋转、 平移、 缩放、 错切和翻转。
• degrees:旋转角度设置
• translate:平移区间设置,如(a, b), a设置宽(width), b设置高(height)
图像在宽维度平移的区间为 -img_width * a < dx < img_width * a
• scale:缩放比例(以面积为单位)
• fill_color:填充颜色设置
• shear:错切角度设置,有水平错切和垂直错切
若为a,则仅在x轴错切,错切角度在(-a, a)之间
若为(a, b),则a设置x轴角度, b设置y的角度
若为(a, b, c, d),则a, b设置x轴角度, c, d设置y轴角度
• resample:重采样方式,有NEAREST 、 BILINEAR、 BICUBIC
5)
pytorch(7)——二十二种transforms数据预处理方法_第7张图片
功能:对图像进行随机遮挡
• p:概率值,执行该操作的概率
• scale:遮挡区域的面积
• ratio:遮挡区域长宽比
• value:设置遮挡区域的像素值, (R, G, B) or (Gray)
6)
在这里插入图片描述
功能:用户自定义lambda方法
• lambd: lambda匿名函数
lambda [arg1 [,arg2, … , argn]] : expression
如:
transforms.TenCrop(200, vertical_flip=True),
transforms.Lambda(lambda crops:torch.stack([transforms.Totensor()(crop) for crop in crops])),

四、transforms——transforms方法操作
pytorch(7)——二十二种transforms数据预处理方法_第8张图片

五、自定义transforms方法
自定义transforms要素:
1、仅接收一个参数,返回一个参数
2、注意上下游的输出与输入
pytorch(7)——二十二种transforms数据预处理方法_第9张图片
通过类实现多参数传入:
pytorch(7)——二十二种transforms数据预处理方法_第10张图片
举例:添加椒盐噪声
椒盐噪声又称为脉冲噪声,是一种随机出现的白点或者黑点, 白点称为盐噪声,黑色为椒噪声。
信噪比(Signal-Noise Rate, SNR)是衡量噪声的比例,图像中为图像像素的占比。信噪比越大图像的噪声越多。
代码:
pytorch(7)——二十二种transforms数据预处理方法_第11张图片
总结:
pytorch(7)——二十二种transforms数据预处理方法_第12张图片
数据增强实战应用
原则:让训练集与测试集更接近

你可能感兴趣的:(pytorch(7)——二十二种transforms数据预处理方法)