文章目录
1. 数据增强
1.1. 中心化
transforms.ToTensor()
呃…这方法有点尴尬针对图片的,或者元素值在[0,255]之间的矩阵,将所有元素值缩放到[0,1]之间,不适用一般的张量
1.2. 标准化
-
transforms.Normalize()
- 功能: o u t p u t = i n p u t − m e a n s t d output = \displaystyle\frac{input - mean}{std} output=stdinput−mean
transforms.Normalize(mean, std, inplace=False)
- 主要参数
- mean:各通道的均值
- std:各通道的标准差
- inplace:是否原地操作
1.3. 缩放
transforms.Resize()
- 主要参数
- size
如果是整数则代表方形缩放,否则是矩形,要给出长度为2的序列
- size
- 主要参数
1.4. 裁剪
-
transforms.CenterCrop()
- 功能:从图像中心裁剪图片
- 主要参数:
- size:所需裁剪图片尺寸,可以是整数或长度为2的序列
-
transforms.RandomCrop()
-
功能:从图片中随机裁剪出尺寸为size的图片
transforms.RandomCrop(size, padding=None, pad_if_need=False, fill=0, padding_mode='constant')
-
主要参数:
- size:尺寸大小
- padding:设置填充大小
- 当为a时,四边填充a个像素
- 当为(a,b)时。左右填充a个像素,上下填充b个像素
- 当为(a,b,c,d)时,左、上、右、下分别填充a,b,c,d个像素
- pad_if_need:若图像小于设定size,则填充
- padding_mode:填充模式
- constant:像素值由fill设定
- edge:像素值由图像边缘像素决定
- reflect:镜像填充,最后一个像素不镜像,e.g.
[1,2,3,4]→[3,2,1,2,3,4,3,2]
- symmetric:镜像填充,最后一个像素镜像,e.g.
[1,2,3,4]→[2,1,1,2,3,4,4,3]
- fill:
padding_mode=constant
时,设置的填充值
-
-
transforms.RandomResizedCrop()
-
功能:随机大小长宽比裁剪图片
transforms.RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(3/4, 4/3), interpolation)
-
主要参数:
- size:所需裁剪图片尺寸
- scale:随机裁剪面积比例
- ratio:随机长宽比
- interpolation:插值方法
PIL.Image.NEAREST
PIL.Image.BILINEAR
PIL.Image.BICUBIC
-
-
transforms.FiveCrop()
-
transforms.TenCrop()
1.5. 旋转
-
transforms.RandomRotation()
transforms.RandomRotation(degrees,resample=False,expand=False,center=None)
-
主要参数:
-
degrees:旋转角度
当为 a a a时,在 ( − a , a ) (-a,a) (−a,a)之间选择旋转角度
当为 ( a , b ) (a,b) (a,b)时,在 ( a , b ) (a,b) (a,b)之间选择旋转角度
-
resample:重采样方法
-
expand:是否扩大图片,以保持原图信息
-
center:旋转中心,默认是图片中心
-
-
1.6. 翻转
transforms.RandomHorizontalFlip()
和transforms.RandomVerticalFlip()
-
功能:依概率水平(左右)或垂直(上下)翻转图片
-
主要参数:概率p
1.7. 填充
-
transforms.Pad()
transforms.Pad(padding, fill=0, padding_mode='constant')
-
主要参数:
- padding:设置填充大小
- 当为a时,四边填充a个像素
- 当为(a,b)时。左右填充a个像素,上下填充b个像素
- 当为(a,b,c,d)时,左、上、右、下分别填充a,b,c,d个像素
- padding_mode:填充模式
- constant:像素值由fill设定
- edge:像素值由图像边缘像素决定
- reflect:镜像填充,最后一个像素不镜像,e.g.
[1,2,3,4]→[3,2,1,2,3,4,3,2]
- symmetric:镜像填充,最后一个像素镜像,e.g.
[1,2,3,4]→[2,1,1,2,3,4,4,3]
- fill:
padding_mode=constant
时,设置的填充值(R,G,B)或灰度值(Gray)
- padding:设置填充大小
1.8. 亮度、对比度、饱和度和色相变换
- 用到时再查吧~~,现在没心情
1.9. 空间几何变换
- 看不懂…太数学了
1.10. 遮挡
-
transforms.RandomErasing()
transforms.RandomErasing(p=0.5, scale=(0.02,0.33), ratio=(0.3,3.3), value=0, inplace=False)
- 功能:对图片进行随机遮挡
- 主要参数:
- p:概率值,执行该操作的概率
- scale:遮挡区域面积
- ratio:遮挡区域长宽比
- value:设置遮挡区域像素值
1.11 自定义lambda方法
-
transforms.Lambda()
transforms.Lambda(lambda)
实现一些简单的操作,主要由于调用多个数据增强方法时,输入输出不匹配,可以用自定义的lambda方法实现输入输出匹配
2. 选择操作
2.1 RandomChoice
-
功能:从一系列transforms方法中随机挑选一个执行
transforms.RandomChoice([transforms1, transforms2, transforms3])
2.2 RandomApply
-
功能:依据概率执行一组transforms操作
transforms.RandomApply([transforms1, transforms2, transforms3], p=0.5)
2.3 RandomOrder
-
功能:对一组transforms操作打乱顺序执行
transforms.RandomOrder([transforms1, transforms2, transforms3])
3. 自定义transforms方法
-
自定义transforms要素
- 仅接受一个参数,返回一个参数
- 注意上下文的输入于输出
class MyTransforms(object): def __init__(self, ...): # 这里可以传入多参数 pass def __call__(self, img): pass