在 PyTorch
中, transforms
是一种用于数据转换和增强的工具,特别是在构建神经网络训练数据集时非常有用。 transforms
模块提供了一系列用于对图像、文本和其他数据类型进行预处理和转换的函数。 transforms
工具箱提供了很多可以用于数据预处理的工具,可以总结为四大类:
# 一、裁剪 ——Crop
- 中心裁剪:
transforms.CenterCrop
- 随机裁剪:
transforms.RandomCrop
- 随机长宽比裁剪:
transforms.RandomResizedCrop
- 上下左右中心裁剪:
transforms.FiveCrop
- 上下左右中心裁剪后翻转,
transforms.TenCrop
# 二、翻转和旋转 ——Flip and Rotation
- 依概率 p 水平翻转:
transforms.RandomHorizontalFlip(p=0.5)
- 依概率 p 垂直翻转:
transforms.RandomVerticalFlip(p=0.5)
- 随机旋转:
transforms.RandomRotation
# 三、图像变换
- resize:transforms.Resize
- 标准化:transforms.Normalize
- 转为 tensor,并归一化至 [0-1]:transforms.ToTensor
- 转灰度图:transforms.Grayscale
- 填充:
transforms.Pad
- 修改亮度、对比度和饱和度:
transforms.ColorJitter
- 线性变换:
transforms.LinearTransformation()
- 仿射变换:
transforms.RandomAffine
- 依概率 p 转为灰度图:
transforms.RandomGrayscale
- 将数据转换为 PILImage:
transforms.ToPILImage
transforms.Lambda
:Apply a user-defined lambda as a transform.
# 四、对 transform 操作,使数据增强更灵活
- transforms.Compose:将 transforms 组合在一起
transforms.RandomChoice(transforms)
, 从给定的一系列transforms
中选一个进行操作transforms.RandomApply(transforms, p=0.5)
,给一个transform
加上概率,依概率进行操作transforms.RandomOrder
,将 transforms 中的操作随机打乱