文章目录
torchvision.transforms
作用:数据预处理方法,数据增强,提升泛化能力
-
数据增强又称为数据增广,数据扩增,它是对训练集进行变换,使训练集更丰富,从而让模型更具泛化能力。
- 策略:原则:让训练集与测试集更接近
- 空间位置:平移
- 色彩:灰度图,色彩抖动
- 形状:仿射变换
- 上下文场景:遮挡,填充
- ……
- 策略:原则:让训练集与测试集更接近
-
包括:数据中心化、数据标准化、缩放、裁剪、旋转、翻转、填充、噪声添加、灰度变换、线性变换、仿射变换、亮度、饱和度及对比度变换等
transforms.normalize:数据标准化, 加快模型收敛
-
output = (input – mean) / std
- mean(R,G,B)及std(R,G,B)是对应3通道的参数值,按照归一化公式(x-mean)/std使得所有元素归一化到(-1,1)之间
-
参数
- mean:各通道的均值
- std:各通道的标准差
- inplace:是否原地操作
-
功能:逐channel的对图像进行标准化(均值变为0,标准差变为1),可以加快模型的收敛
transforms.ToTensor():归一化
- 功能:将shape为(H, W, C)的nump.ndarray或img转为shape为(C, H, W)的tensor,其将每一个数值归一化到[0,1],其归一化方法比较简单,直接除以255即可。
裁剪
.CenterCrop:中心裁剪
-
功能:
- 从图像中心裁剪图片
-
参数:
- size:所需裁剪图片尺寸
.RandomCrop:随机裁剪
-
功能:
- 从图片中随机裁剪出尺寸为size的图片
-
参数:
- size:所需裁剪图片尺寸
- padding:设置填充大小。当为a时,上下左右均填充a个像素,当为(a,b)时,上下填充b个像素,左右填充a个像素。当为(a,b,c,d)时,左上右下分别填充abcd
- 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时,设置填充的像素值
.RandomResizedCrop: 随机大小、长宽比裁剪图片
- 参数:
- size:所需裁剪图片尺寸
- scale:随机裁剪面积比例,默认(0.08,1)
- ratio:随机长宽比,默认(3/4,4/3)
- interpolation:插值方法
- PIL.Image.NEAREST最近邻
- PIL.Image.BILINEAR双线性
- PIL.Image.BICUBIC
FiveCrop: 在图片的左上角、左下角、右上角、右下角和中心裁剪出尺寸为size的5张图片
TenCrop:在图像的上下左右以及中心裁剪出尺寸为size的5张图片,TenCrop对着5张图片进行水平或者垂直镜像获得10张图片
资料
- https://www.lizenghai.com/archives/46484.html
- https://oldpan.me/archives/use-pytorch-normalization
- https://blog.csdn.net/u014484247/article/details/79997357?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2