位于torchvision.transforms下面。
0 Compose
torchvision.transforms.Compose(transforms)
用法:
transforms.Compose([
transforms.CenterCrop(10),
transforms.ToTensor(),
])
1 常见变换
1-1 Resize
图像尺寸变化
torchvision.transforms.Resize(size, interpolation=2)
size:输出图像的大小
interpolation : 插值,默认的 PIL.Image.BILINEAR, 一共有4中的插值方法
Image.BICUBIC,PIL.Image.LANCZOS,PIL.Image.BILINEAR,PIL.Image.NEAREST
支持采样的方法包括 :
Image.BICUBIC:三次样条插值
Image.BILINEAR:双线性
Image.NEAREST:最低质量
1-2 标准化
对数据按通道进行标准化,即先减均值,再除以标准差,注意是 hwc
torchvision.transforms.Normalize(mean, std)
参数:
mean-均值
std-标准差
1-3 转换为 PILImage
将 tensor 或者 ndarray 的数据转换为 PIL Image 类型数据
torchvision.transforms.ToPILImage(mode=None)
参数:
mode- 为 None 时,为 1 通道, mode=3 通道默认转换为 RGB, 4 通道默认转换为 RGBA
1-4 转为 Tensor
将 PIL Image 或者 ndarray 转换为 tensor,并且归一化至[0-1]
torchvision.transforms.ToTensor
2 裁剪 Crop
2-1 中心裁剪 CenterCrop
依据给定的 size 从中心裁剪
torchvision.transforms.CenterCrop(size)
2-2 随机裁剪 RandomCrop
依据给定的 size 随机裁剪
torchvision.transforms.RandomCrop(size, padding=0, pad_if_needed=False)
参数:
padding-此参数是设置填充多少个 pixel。
pad_if_needed-如果图片小于指定尺寸,是否边缘填充。
2-3 随机长宽比裁剪 RandomResizedCrop
随机大小,随机长宽比裁剪原始图片,最后将图片 resize 到设定好的 size
torchvision.transforms.RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(0.75, 1.33), interpolation=2)
参数:
scale- 随机 crop 的大小区间。
ratio- 随机长宽比设置
interpolation- 插值的方法,默认为双线性插值
2-4 上下左右中心裁剪 FiveCrop
对图片进行上下左右以及中心裁剪,获得 5 张图片,返回一个 4D-tensor
torchvision.transforms.FiveCrop(size)
2-5 上下左右中心裁剪后翻转 TenCrop
对图片进行上下左右以及中心裁剪,然后全部翻转(水平或者垂直),获得 10 张图
片,返回一个 4D-tensor。
torchvision.transforms.TenCrop(size, vertical_flip=False)
参数:
vertical_flip (bool) - 是否垂直翻转,默认为 flase,即默认为水平翻转
3 翻转和旋转(Flip & Rotation)
3-1 随机水平翻转 RandomHorizontalFlip
依据概率 p 对 PIL 图片进行水平翻转
torchvision.transforms.RandomHorizontalFlip(p=0.5)
参数:
p- 概率,默认值为 0.5
3-2 随机垂直翻转 RandomVerticalFlip
依据概率 p 对 PIL 图片进行垂直翻转
torchvision.transforms.RandomVerticalFlip(p=0.5)
参数:
p- 概率,默认值为 0.5
3-3 随机旋转 RandomRotation
依 degrees 随机旋转一定角度
torchvision.transforms.RandomRotation(degrees, resample=False, expand=False, center=None)
参数:
degress- 若为单个数,如 30,则表示在(-30, +30)之间随机旋转;若为 sequence,如(30, 60),则表示在 30-60 度之间随机旋转。
resample- 重采样方法选择,可选NEAREST, BILINEAR, BICUBIC,默认为NEAREST
expand- True:填满输出图片,False:不填充。
center- 可选为中心旋转还是左上角旋转。默认中心旋转
4 图像变换
4-1 亮度对比度饱和度变换
修改亮度、对比度和饱和度
torchvision.transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
参数:
brightness - [max(0, 1 - brightness), 1 + brightness]
contrast - [max(0, 1 - contrast), 1 + contrast]
saturation - [max(0, 1 - saturation), 1 + saturation]
hue - [-hue, hue] && 0<=hue<= 0.5
4-2 转灰度图
将图片转换为灰度图
torchvision.transforms.Grayscale(num_output_channels=1)
参数:
num_output_channels- (int) ,当为 1 时,正常的灰度图,当为 3 时, 3 channel with r ==g == b
4-3 随机转灰度图
依概率 p 将图片转换为灰度图
torchvision.transforms.RandomGrayscale(p=0.1)
4-4 线性变换
对矩阵做线性变化,可用于白化处理
torchvision.transforms.LinearTransformation(transformation_matrix)
参数:
transformation_matrix (Tensor) – tensor [D x D], D = C x H x W
*Applications: - whitening: zero-center the data, compute the data covariance matrix
[D x D] with np.dot(X.T, X), perform SVD on this matrix and pass it as transformation_matrix.
4-5 仿射变换
仿射变换
torchvision.transforms.RandomAffine(degrees, translate=None, scale=None, shear=None, resample=False, fillcolor=0)
参数:
degrees-旋转角度
translate -水平或者垂直移动的范围
scale - 放缩尺度因子
resample-重采样方式NEAREST, BILINEAR, BICUBIC
fillcolor-填充空白区域的颜色
4-6 填充
torchvision.transforms.Pad(padding, fill=0, padding_mode='constant')
参数:
padding-,此参数是设置填充多少个 pixel。
fill- (int or tuple) 填充值
padding_mode- 填充模式,这里ᨀ供了 4 种填充模式, 1.constant 常量。 2.edge 边缘值。 3.reflect 镜像 4. symmetric 对称
5 Lambda
根据用户自定义函数变换。
torchvision.transforms.Lambda(lambd)
参数:
lambd-用户自定义函数
6 对transform操作
6-1 概率transforms
给一个 transform 加上概率,依概率进行操作
torchvision.transforms.RandomApply(transforms, p=0.5)
6-2 随机transforms
从给定的一系列 transforms 中选一个进行操作
torchvision.transforms.RandomChoice(transforms)
6-3 乱序transforms
将 transforms 中的操作随机打乱
torchvision.transforms.RandomOrder(transforms)