transforms--图像变换
1.pad
transforms.Pad(#对图片边缘进行填充
padding,
#设置填充大小
#当为a时,上下左右均填充a个像素
#当为(a, b)时,上下填充b个像素,左右填充a个像素
#当为(a, b, c, d)时,左,上,右,下分别填充a, b, c, d
padding_mode='constant',#填充模式,有4种模式,constant、edge、reflect和symmetric
fill=0#constant时,设置填充的像素值,(R, G, B) or (Gray)
)
2.ColorJitter
transforms.ColorJitter(#调整亮度、对比度、饱和度和色相
brightness=0,
#亮度调整因子
#当为a时,从[max(0, 1-a), 1+a]中随机选择
#当为(a, b)时,从[a, b]中
contrast=0, #对比度参数,同brightness
saturation=0, #饱和度参数,同brightness
hue=0
#色相参数
#当为a时,从[-a, a]中选择参数,注: 0<= a <= 0.5
#当为(a, b)时,从[a, b]中选择参数,注:-0.5 <= a <= b <= 0.5
)
3.RandomGrayscale和Grayscale
RandomGrayscale(#依概率将图片转换为灰度图
num_output_channels,#输出通道数,只能设1或3
p=0.1#概率值,图像被转换为灰度图的概率
)
Grayscale(
num_output_channels
)
4.RandomAffine
RandomAffine(
#对图像进行仿射变换,仿射变换是二维的线性变换,由五种基本原子变换构成,分别是旋转、平移、缩放、错切和翻转
degrees, #旋转角度设置
translate=None,
#平移区间设置,如(a, b), a设置宽(width),b设置高(height)图像在宽维度平移的区间为 -img_width * a < dx < img_width * a
scale=None, #缩放比例(以面积为单位)
shear=None,
resample=False,
fillcolor=0#填充颜色设置
)
5.RandomErasing
RandomErasing(#对图像进行随机遮挡
p=0.5, #概率值,执行该操作的概率
scale=(0.02, 0.33), #遮挡区域的面积
ratio=(0.3, 3.3), #遮挡区域长宽比
value=0, #设置遮挡区域的像素值,(R, G, B) or (Gray)
inplace=False
)
参考文献:《 Random Erasing Data Augmentation 》
6.transforms.Lambda
transforms.Lambda(#用户自定义lambda方法
lambd
#lambda匿名函数
#lambda [arg1 [,arg2, … , argn]] : expression
)
eg:
transforms.TenCrop(
200,
vertical_flip=True
),
transforms.Lambda(
lambda crops: torch.stack([transforms.Totensor()(crop) for crop in crops])
),
transfroms--transforms方法操作
1. transforms.RandomChoice
transforms.RandomChoice(#从一系列transforms方法中随机挑选一个
[transforms1, transforms2, transforms3]
)
2. transforms.RandomApply
transforms.RandomApply(#依据概率执行一组transforms操作
[transforms1, transforms2, transforms3],
p=0.5
)
3. transforms.RandomOrder
transforms.RandomOrder(#对一组transforms操作打乱顺序
[transforms1, transforms2, transforms3]
)
自定义transforms方法
椒盐噪声 :
椒盐噪声又称为脉冲噪声,是一种随机出现的白点或者黑点, 白点称为盐噪声, 黑色为椒噪声
信噪比(Signal-Noise Rate, SNR):
是衡量噪声的比例,图像中为图像像素的占比
class AddPepperNoise(object):
def __init__(self, snr, p):
self.snr = snr
self.p = p
def __call__(self, img):
```
添加椒盐噪声具体实现过程
```
return img
class Compose(object):
def __call__(self, img):
for t in self.transforms:
img = t(img)
return img