在 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 中的操作随机打乱