在 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 中的操作随机打乱
更新于 阅读次数