1.数据中心化
2.数据标准化
3.缩放
4.裁剪
5.旋转
6.翻转
7.填充
8.噪声添加
9.灰度变换
10.线性变换
11.仿射变换
12.亮度、饱和度以及对比度变换
transforms.Normalize(
mean,各通道均值
std,各通道标准差
inplace 是否原地操作
)
transforms.CenterCrop( 从图像中心裁剪图片
size 所需裁剪图片尺寸
)
transforms.RandomCrop(
size, 所需裁剪的图片尺寸
padding, 填充设置 当为a时 四周都为a ;为(a,b)时,上下为a左右为b ;(a,b,c,d)表示上下左右
pad_if_needed, 若图像小于设定的size时需要填充
fill, constant时 设置填充的像素值
padding_mode='constant'
1.constant 像素值由fill设定
2.edge 像素值由图像边缘像素决定
3.reflect:镜像填充,最后一个像素不镜像 1 2 3 4 -> 3 2 1 2 3 4 3 2
4.symmetric:镜像填充,最后一个像素镜像 1 2 3 4 ->2 1 1 2 3 4 4 3
)
RandomResizedCrop(
size, 所需裁剪图片的尺寸
scale=(0.08,1.0) 随机裁剪面积比例 默认是0.08*1
ratio=(3/4,4/3) 随机长款比例 默认是3/4/,4/3
interpolation,插值法
plt.image.NEARST 最近邻
plt.image.BILNEAR 双线性
plt.image.BICUBIC
)
TenCrop( TenCrop对这五张图片进行水平垂直镜像获得10张照片
size,
vertical_flip=False 是否进行垂直翻转
)
p:翻转概率
RandomRotation(
degrees, 旋转角度 当为a时 在(-a,a)之间选择旋转角度 ;为(a,b)时,在(a,b)之间选择旋转角度
resample, 重采样方法
expand, 是否扩大图片,以保持原图信息
center 设置旋转点 默认为中心点
)
transforms.Pad{
padding,设置填充大小 当为a时 上下左右都是a
fill=0, 设置填充像素值
padding_mode='constant' 填充模式 constant edge reflect symmetric
}
transforms.ColorJitter{
brightness=0, 亮度调整因子 为(a,b)时 从[a,b]中随机选择 为a时,从[max(0,1-a),1+a]
constrast=0, 对比度参数
saturation=0, 饱和度参数
hue=0 色相参数 当为a时,从[-a,a]中选择,当为(a,b)时,从[a,b]中选择 a b的范围为
[-0.5,0.5]
}
RandomGrayscal(
num_output_channels,输出的通道数只能设置为1,3
p=0.1
)
RandomAffine(
degrees,旋转角度设置
translate=None,平移区间设置 范围时0-1
scale=None,缩放比例设置
fill_color=0,填充颜色设置
shear=None,错且角度
resample=False 重采样
)
RandomErasing(
p=0.5,
scale=(0.02,0.33) 遮挡区域的面积
ration=(0.3,3.3) 遮挡区域长宽比
value=0,遮挡的像素值
inplace=False
)
lambda[arg1,arg2....]:expression
例子:
transforms.TenCrop(200,vertical_filp=True)
transforms.Lambda(lambda crops:torch.stack([transforms.Totensor()(crop) for crop in crops])
1.仅接受一个参数,返回一个参数
2.注意上下游的输出与输入
通过类实现多参数输入
class YouTransforms(object):
def __init__(self,...):
...
def __call__(self,img):
....
return img
以椒盐噪声为例:
信噪比是衡量噪声的比例
class AddPepperNoise(object):
def __init__(self,snr,p): snr 信噪比 P概率
self.snr=snr
self.p=p
def __call__(self,img):
...
具体实现和过程
...
return img