[MindSpore] 常用视觉变换总结
本文总结了MindSpore中常用的视觉变换类,主要分为两类:基于类的变换(mindspore.dataset.vision)和函数式变换(transforms)。关键变换包括Resize(调整尺寸)、RandomCrop(随机裁剪)、Normalize(标准化)、HWC2CHW(格式转换)等。文章特别提供了ViT/ImageNet和ResNet/CIFAR-10场景下的典型预处理组合建议,如训练
·
📊 MindSpore 常用视觉变换类总结表
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()
]
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)