一.torchvision:计算机视觉工具包
torchvision.transforms : 常用的图像预处理方法
torchvision.datasets : 常用数据集的dataset实现,MNIST,CIFAR-10,ImageNet等
torchvision.model : 常用的模型预训练,AlexNet,VGG, ResNet,GoogLeNet等
二.数据增强
数据增强又称为数据增广,数据扩增,它是对训练集进行变换,使训练集更丰富,从而让模型更具泛化能力
三.transforms—裁剪
torchvision.transforms : 常用的图像预处理方法
• 数据中心化
• 数据标准化
• 缩放
• 裁剪
• 旋转
• 翻转 • 填充
• 噪声添加
• 灰度变换
• 线性变换
• 仿射变换
• 亮度、饱和度及对比度变换
3.1 transforms.Normalize()
功能:逐channel的对图像进行标准化
output = (input - mean) / std
• mean:各通道的均值
• std:各通道的标准差
• inplace:是否原地操作
transforms.Normalize(mean, std, inplace=False)
3.2 transforms.CenterCrop()
功能:从图像中心裁剪图片
• size:所需裁剪图片尺寸
3.3 transforms.RandomCrop()
功能:从图片中随机裁剪出尺寸为size的图片
• size:所需裁剪图片尺寸
• padding:设置填充大小
当为a时,上下左右均填充a个像素
当为(a, b)时,上下填充b个像素,左右填充a个像素
当为(a, b, c, d)时,左,上,右,下分别填充a, b, c, d
• pad_if_need:若图像小于设定size,则填充
• padding_mode:填充模式,有4种模式
- constant:像素值由fill设定
- edge:像素值由图像边缘像素决定
- reflect:镜像填充,最后一个像素不镜像,eg:[1,2,3,4] → [3,2,1,2,3,4,3,2]
- symmetric:镜像填充,最后一个像素镜像,eg:[1,2,3,4] → [2,1,1,2,3,4,4,3]
• fill:constant时,设置填充的像素值
transforms.RandomCrop(size, padding=None, pad_if_needed=False, fill=0, padding_mode='constant')
3.4 RandomResizedCrop()
功能:随机大小、长宽比裁剪图片
• size:所需裁剪图片尺寸
• scale:随机裁剪面积比例, 默认(0.08, 1)
• ratio:随机长宽比,默认(3/4, 4/3)
• interpolation:插值方法
PIL.Image.NEAREST
PIL.Image.BILINEAR
PIL.Image.BICUBIC
3.5 FiveCrop()
transforms.FiveCrop(size)
3.6 TenCrop()
transforms.FiveCrop(size)
transforms.TenCrop(size,
vertical_flip=False)
功能:在图像的上下左右以及中心裁剪出尺
寸为size的5张图片,TenCrop对这5张图片
进行水平或者垂直镜像获得10张图片
• size:所需裁剪图片尺寸
• vertical_flip:是否垂直翻转
transforms.TenCrop( size, vertical_flip=False)
四.transforms—翻转、旋转
4.1 RandomHorizontalFlip() RandomVerticalFlip()
功能:依概率水平(左右)或垂直(上下)翻转图片
•p:翻转概率
RandomHorizontalFlip(p=0.5) RandomVerticalFlip(p=0.5)
4.2 RandomRotation()
功能:随机旋转图片
• degrees:旋转角度
当为a时,在(-a,a)之间选择旋转角度
当为(a, b)时,在(a, b)之间选择旋转角度
• resample:重采样方法
• expand:是否扩大图片,以保持原图信息
• center:旋转点设置,默认中心旋转
3.RandomRotation RandomRotation(degrees, resample=False, expand=False, center=None)
五.transforms—图像变换
5.1 Pad()
功能:对图片边缘进行填充
• 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)
transforms.Pad(padding, fill=0, padding_mode='constant')
5.2 ColorJitter
功能:调整亮度、对比度、饱和度和色相
• 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
transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
5.3 Grayscale
RandomGrayscale(num_output_channels,
p=0.1)
5.4 RandomGrayscale
功能:依概率将图片转换为灰度图
• num_ouput_channels:输出通道数
只能设1或3
• p:概率值,图像被转换为灰度图的概率
Grayscale(num_output_channels)