PyTorch学习DAY2transforms各种操作

人民币二分类

数据

  1. 数据收集-->Img,Label
  2. 数据划分-->train valid test
  3. 数据读取-->DataLoader(Sampler-->Index,Dataset-->Img,Label)
  4. 数据预处理-->transforms

torch.utils.data.DataLoader

功能:构建可迭代的数据装载器

  • dataset:Dataset类,决定数据从哪读取及如何读取
  • batchsize:批大小
  • num_works:是否多进程读取数据
  • shuffle:每个epoch是否乱序
  • drop_last:当样本数不能被batchsize整除时,是否舍弃最后一批数据

epoch与Iteration

  • Epoch:所有训练样本都已输入到模型中,称为一个Epoch
  • Iteration:一批样本输入到模型中,称之为一个Interation
  • Batchsize:批大小,决定一个Epoch有多少个Iteration
  • 样本总数:80,Batchsize:8  1Epoch=10Iteration
  • 样本总数:87,Batchsize:8  1Epoch=10Iteration,当drop_last=True否则1Epoch=11Iteration

torch.utils.data.Dataset

功能:Dataset的抽象类,所有自定义的Dataset需要继承它,并且复写__getitem__()

getitem:接收一个索引,返回一个样本。

读取数据流程图:

PyTorch学习DAY2transforms各种操作_第1张图片

transforms运行机制

transforms

  • torchvision.transforms:常用的图像预处理方法(数据中心化,标准化,缩放,裁剪,旋转,翻转,填充,噪声添加)。
  • torchvision.transforms:常用数据集的dataset实现,MNIST,CIFAR-10,ImageNet等。
  • torchvision.model:常用的模型预训练,AlexNet,VGG,ResNet,GoogleNet等。

transforms.Normalize

功能:逐channel的对图像进行标准化,均值变为0,标准差变为1。(可以加快模型的收敛)

output =  (input - mean) / std

  • mean:各通道的均值
  • std:各通道的标准差
  • inplace:是否原地操作

数据增强

数据增强又称为数据增广,数据扩增,它是对训练集进行变换,使训练集更丰富,从而让模型更具泛化能力。

transforms.CenterCrop

功能:从图像中心裁剪图片

  • size:所需裁剪图片尺寸。

transforms.RandomCrop

功能:从图像中随机裁剪出尺寸为size的图片

  • size:所需裁剪图片尺寸。
  • padding:设置填充大小
  1. 当为a时,上下左右均填充a个像素
  2. 当为(a,b)时,上下填充b个像素,左右填充a个像素
  3. 当为(a,b,c,d)时,左上右下分别填充abcd。
  • pad_if_need:若图像小于设定size则进行填充
  • padding_mode:填充模式,有4种模式
  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时,设置填充的像素值。

RandomResizedCrop

功能:随机大小长宽裁剪图片

  • size:尺寸
  • scale:裁剪面积比,默认(0.08, 1)
  • ratio:随机裁剪长宽比,默认(3/4,4/3)
  • interpolation:插值方法
  1. PIL.Image.NEAREST:最近邻插值
  2. PIL.Image.BILNEAR:双线性插值
  3. PIL.Image.BICUBIC:

FiveCrop

TenCrop

功能:在图像的上下左右以及中心裁剪出尺寸为size的5张图片;对上述5张图片在进行水平或者垂直镜像从而获得10张图片

  • size:尺寸。
  • vertical_flip:是否垂直翻转,设置了就做垂直镜像,不设置就做水平镜像。
  • lambda可以把元组转换成张量的形式。

RandomHorizontalFlip

RandomVerticalFlip

功能:依概率进行水平/垂直翻转

  • p:概率值

RandomRotation

功能:随机旋转

  • degress:旋转角度。
    1. a时:旋转角度(-a到a)
    2. (a, b)时:旋转角度(a到b)
  • resample:重采样方法。
  • expand:是否扩大图片,以保持原图信息。
  • center:设置旋转中心,默认中心旋转。

Pad

  • padding:设置填充大小
  1. a时:上下左右填充a个像素
  2. (a, b)时:上下填充b, 左右填充a
  3. (a, b, c, d)时:左a, 上b, 右c,下d
  • padding_mode:填充模式
  1. constant:由fill指定填充颜色
  2. edge:由图像边缘像素决定填充颜色
  3. reflect:镜像填充,最后一个像素不镜像
  4. symmetric:镜像填充,最后一个像素镜像
  • fill:设置填充颜色

ColorJitter

功能:调整亮度、对比度、饱和度和色相

  • brightness:设置亮度调整因子
  1. a时:从[max(0, 1-a),1+a]中选一个数
  2. (a, b)时:从(a,b)中选一个数
  • contrast:设置对比度参数
  1. a时:从[max(0, 1-a),1+a]中选一个数
  2. (a, b)时:从(a,b)中选一个数
  • saturation:饱和度参数
  1. a时:从[max(0, 1-a)—1+a]中选一个数
  2. (a, b)时:从(a,b)中选一个数
  • hue:色相参数
  1. a时:(-a,a),0 <= a <= 0.5
  2. (a, b)时:(a,b)中选一个,-0.5 <= a <= b <= 0.5

Grayscale

RandomGrayscale

功能:将彩色图转换为灰度图

  • num_output_channels:输出通道数,1–灰度,3–彩色
  • p:被转换为灰度图的概率

RandomAffine

仿射变换,二维的线性变换,旋转,平移,缩放,错切,翻转

  • degress:旋转角度
  • translate:平移区间设置,如(a,b),a设置宽(width),b设置高(height),图像在宽维度平移的区间为-img_width*a < dx < img_width*a
  • scale:缩放比例(以面积为单位)
  • fill_color:填充颜色设置
  • sheer:错切角度,有水平与垂直
  1. a时:在x轴上错切,角度在(-a,a)
  2. (a, b)时:a为x轴错切角度设置,b为y轴错切角度设置
  3. (a, b, c, d)时:x轴(a,b),y轴(c,d)
  • resample:重采样方法
  1. PIL.Image.NEAREST:最近邻插值
  2. PIL.Image.BILNEAR:双线性插值
  3. PIL.Image.BICUBIC:

RandomErasing

功能:对图像进行随机遮挡

  • p:遮挡概率
  • scale:遮挡面积比例
  • ratio:遮挡区域长宽比
  • value:设置遮挡区域的像素值,(R,G,B)or(Gray)

transforms.Lambda

功能:用户自定义lambda方法

  • lambd:lambda匿名函数

lambda[arg1[,arg2, ... , argn]]:expression



图像增强方法的选择策略


transforms.RandomChoice([tran1, tran2, tran3])

功能:从一组transforms中选择一个。


transforms.RandomApply([tran1, tran2], p=0.5)

功能:依据一定概率对一组图像处理方法进行选择。


transforms.RandomOrder([tran1,tran2])

功能:对一组图像处理方法进行打乱顺序,然后按照打乱的顺序对图像进行处理。
 


 自定义transforms

自定义transforms要素:

  1. 仅接收一个参数,返回一个参数。
  2. 注意上下游的输出与输入。

通过类实现多参数传入:

PyTorch学习DAY2transforms各种操作_第2张图片

椒盐噪声

椒盐噪声又称为脉冲噪声,是一种随机出现的白点或者黑点,白点称为盐噪声,黑色为椒噪声。

信噪比(Singal-Noise Rate,SNR)是衡量噪声的比例,图像中为图像像素的占比。

 

数据增强实战

原则:让训练集与测试集更接近。

  • 空间位置:平移。
  • 色彩:灰度图,色彩抖动。
  • 形状:放射变换。
  • 上下文场景:遮挡,填充。、
  • ......

 

你可能感兴趣的:(pytorch,机器学习)