Mindspore中变换有两种, 一种是类, 先创建一个变换类, 然后调用该类实现变换, 以类为基础的变化都是放在
mindspore.dataset.vision
下的; 另一种是Functional, 直接调用函数进行变换, functional变换是放在
import mindspore.dataset.vision as transforms
下的. 实际上这个差不多的, 因此后续不做区分
类名 | 参数及含义 | 作用 |
Resize(size) | size : 目标图像大小,如 (256, 256) | 将图像缩放为指定尺寸 |
CenterCrop(size) | size : 裁剪目标大小 | 从图像中心裁剪出指定大小区域 |
RandomCrop(size) | size : 裁剪目标大小 | 随机裁剪图像的一部分 |
RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(3./4., 4./3.)) | size : 输出大小;scale : 缩放范围;ratio : 宽高比范围 | 随机缩放并裁剪图像,常用于 ImageNet 数据增强 |
Decode() | 无参数 | 解码 JPEG 图像文件 |
Normalize(mean, std) | mean : 各通道均值;std : 各通道标准差 | 对图像进行标准化处理(如 ImageNet 的 [0.485, 0.456, 0.406]) |
HWC2CHW() | 无参数 | 将图像格式从 HWC(Height-Width-Channel)转为 CHW(Channel-Height-Width),适配模型输入 |
ToTensor() | 无参数 | 将图像转换为 Tensor,并归一化到 [0, 1] 区间 |
RandomHorizontalFlip(prob=0.5) | prob : 水平翻转概率 | 以一定概率水平翻转图像 |
RandomVerticalFlip(prob=0.5) | prob : 垂直翻转概率 | 以一定概率垂直翻转图像 |
RandomColorAdjust(brightness=0, contrast=0, saturation=0, hue=0) | brightness : 亮度调整范围;contrast : 对比度调整范围;saturation : 饱和度调整范围;hue : 色调调整范围 | 随机调整图像颜色属性,提升泛化能力 |
TypeCast(dtype) | dtype : 目标数据类型(如 mstype.float32 ) | 转换图像的数据类型 |
RandomCropDecodeResize(size, scale=(0.08, 1.0), ratio=(3./4., 4./3.)) | size : 输出大小;scale , ratio : 同上 | 在解码时随机裁剪并缩放图像,适用于 JPEG 文件,Ascend 加速优化 |
RandomLighting(alpha=1.0) | alpha : PCA 投影噪声强度 | 添加光照变化模拟,提升模型鲁棒性 |
RandomHorizontalFlipWithBBox() | 无参数 | 水平翻转图像的同时同步翻转边界框(用于目标检测) |
ResizeWithBBox(size) | size : 目标大小 | 缩放图像并同步缩放边界框坐标(用于目标检测) |
RandomSampleCropWithBBox() | 无参数 | 随机裁剪图像并更新边界框坐标(用于目标检测) |
🧠 使用建议(Tips)
ViT, ImageNet:
mean = [0.485 * 255, 0.456 * 255, 0.406 * 255]
std = [0.229 * 255, 0.224 * 255, 0.225 * 255]
trans_train = [
transforms.RandomCropDecodeResize(size=224,
scale=(0.08, 1.0),
ratio=(0.75, 1.333)),
transforms.RandomHorizontalFlip(prob=0.5),
transforms.Normalize(mean=mean, std=std),
transforms.HWC2CHW()
]
trans_val = [
transforms.Decode(),
transforms.Resize(224 + 32),
transforms.CenterCrop(224),
transforms.Normalize(mean=mean, std=std),
transforms.HWC2CHW()
]
Resnet+ Cifa10:
trans = []
if usage == "train":
trans += [
vision.RandomCrop((32, 32), (4, 4, 4, 4)),
vision.RandomHorizontalFlip(prob=0.5)
]
trans += [
vision.Resize(resize),
vision.Rescale(1.0 / 255.0, 0.0),
vision.Normalize([0.4914, 0.4822, 0.4465], [0.2023, 0.1994, 0.2010]),
vision.HWC2CHW()
]