当前位置: 首页 > news >正文

昇思25天学习打卡营第6天|数据变换 Transforms

学习目标:熟练掌握数据变换操作

  • 熟悉mindspore.dataset.transforms接口
  • 实践掌握常用变换

昇思大模型平台学习心得记录
在这里插入图片描述


一、关于mindspore.dataset.transforms

1.1 变换

mindspore.dataset.transforms.Compose将多个数据增强操作组合使用。
mindspore.dataset.transforms.Concatenate在输入数据的某一个轴上进行数组拼接,目前仅支持拼接形状为1D的数组。
mindspore.dataset.transforms.Duplicate将输入的数据列复制得到新的数据列,每次仅可以输入1个数据列进行复制。
mindspore.dataset.transforms.Fill将Tensor的所有元素都赋值为指定的值。
mindspore.dataset.transforms.Mask用给条件判断输入Tensor的内容,并返回一个掩码Tensor。
mindspore.dataset.transforms.OneHot对输入标签进行OneHot编码
mindspore.dataset.transforms.PadEnd对输入Tensor进行填充,要求 pad_shape 与输入Tensor的维度保持一致。
mindspore.dataset.transforms.RandomApply指定一组数据增强处理及其被应用的概率,在运算时按概率随机应用其中的增强处理。
mindspore.dataset.transforms.RandomChoice从一组数据增强变换中随机选择一个进行应用。
mindspore.dataset.transforms.RandomOrder给一个数据增强的列表,随机打乱数据增强处理的顺序。
mindspore.dataset.transforms.Slice对输入进行切片
mindspore.dataset.transforms.TypeCast将输入的Tensor转换为指定数据类型
mindspore.dataset.transforms.Unique对输入张量进行唯一运算,每次只支持对一个数据列进行变换
mindspore.dataset.transforms.Relational关系运算符。

1.2图像视觉变换

mindspore.dataset.vision.AdjustBrightness调整输入图像的亮度
mindspore.dataset.vision.AdjustContrast调整输入图像的对比度
mindspore.dataset.vision.AdjustGamma对输入图像应用伽马校正
mindspore.dataset.vision.AdjustHue调整输入图像的色调
mindspore.dataset.vision.AdjustSaturation调整输入图像的饱和度
mindspore.dataset.vision.AdjustSharpness调整输入图像的锐度
mindspore.dataset.vision.Affine对输入图像进行仿射变换,保持图像中心不动。
mindspore.dataset.vision.AutoAugment应用AutoAugment数据增强方法,基于论文AutoAugment: Learning Augmentation Strategies from Data
mindspore.dataset.vision.AutoContrast在输入图像上应用自动对比度
mindspore.dataset.vision.BoundingBoxAugment对图像的随机标注边界框区域,应用给定的图像变换处理。
mindspore.dataset.vision.CenterCrop对输入图像应用中心区域裁剪
mindspore.dataset.vision.ConvertColor更改图像的色彩空间
mindspore.dataset.vision.Crop在输入图像上裁剪出指定区域。
mindspore.dataset.vision.CutMixBatch对输入批次的图像和标注应用剪切混合转换。
mindspore.dataset.vision.CutOut从输入图像数组中随机裁剪出给定数量正方形区域。
mindspore.dataset.vision.Decode将输入的压缩图像解码为RGB格式。
mindspore.dataset.vision.Equalize对输入图像进行直方图均衡化
mindspore.dataset.vision.Erase使用指定的值擦除输入图像。
mindspore.dataset.vision.FiveCrop在输入PIL图像的中心与四个角处分别裁剪指定尺寸大小的子图。
mindspore.dataset.vision.GaussianBlur使用指定的高斯核对输入图像进行模糊处理。
mindspore.dataset.vision.Grayscale将输入PIL图像转换为灰度图。
mindspore.dataset.vision.HorizontalFlip水平翻转输入图像。
mindspore.dataset.vision.HsvToRgb将输入的HSV格式numpy.ndarray图像换为RGB格式。
mindspore.dataset.vision.HWC2CHW将输入图像的shape从 <H, W, C> 转换为 <C, H, W>
mindspore.dataset.vision.Invert对输入的RGB图像进行色彩反转
mindspore.dataset.vision.LinearTransformation使用指定的变换方阵和均值向量对输入numpy.ndarray图像进行线性变换
mindspore.dataset.vision.MixUp随机混合一批输入的numpy.ndarray图像及其标签。
mindspore.dataset.vision.MixUpBatch对输入批次的图像和标注应用混合转换。
mindspore.dataset.vision.Normalize根据均值和标准差对输入图像进行归一化
mindspore.dataset.vision.NormalizePad根据均值和标准差对输入图像进行归一化,然后填充一个全的额外通道。
mindspore.dataset.vision.Pad填充图像。
mindspore.dataset.vision.PadToSize将图像填充到固定大小
mindspore.dataset.vision.Perspective对输入图像进行透视变换
mindspore.dataset.vision.Posterize减少图像的颜色通道的比特位数,使图像变得高对比度和颜色鲜艳,类似于海报或印刷品的效果。
mindspore.dataset.vision.RandAugment对输入图像应用RandAugment数据增强方法。
mindspore.dataset.vision.RandomAdjustSharpness以给定的概率随机调整输入图像的锐度
mindspore.dataset.vision.RandomAffine对输入图像应用随机仿射变换
mindspore.dataset.vision.RandomAutoContrast以给定的概率自动调整图像的对比度
mindspore.dataset.vision.RandomColor随机调整输入图像的颜色
mindspore.dataset.vision.RandomColorAdjust随机调整输入图像的亮度、对比度、饱和度和色调
mindspore.dataset.vision.RandomCrop对输入图像进行随机区域裁剪
mindspore.dataset.vision.RandomCropDecodeResize"裁剪"、"解码"和"调整尺寸大小"的组合处理。
mindspore.dataset.vision.RandomCropWithBBox在输入图像的随机位置进行裁剪并相应地调整边界框
mindspore.dataset.vision.RandomEqualize以给定的概率随机对输入图像进行直方图均衡化
mindspore.dataset.vision.RandomErasing按照指定的概率擦除输入numpy.ndarray图像上随机矩形区域内的像素
mindspore.dataset.vision.RandomGrayscale按照指定的概率将输入PIL图像转换为灰度图。
mindspore.dataset.vision.RandomHorizontalFlip对输入图像按给定的概率进行水平随机翻转
mindspore.dataset.vision.RandomHorizontalFlipWithBBox按给定的概率,对输入图像及其边界框进行随机水平翻转
mindspore.dataset.vision.RandomInvert以给定的概率随机反转图像的颜色
mindspore.dataset.vision.RandomLighting将AlexNet PCA的噪声添加到图像中。
mindspore.dataset.vision.RandomPerspective按照指定的概率对输入PIL图像进行透视变换
mindspore.dataset.vision.RandomPosterize随机减少图像的颜色通道的比特位数,使图像变得高对比度颜色鲜艳
mindspore.dataset.vision.RandomResizedCrop对输入图像进行随机裁剪,并使用指定的 mindspore.dataset.vision.Inter 插值方式去调整为指定的尺寸大小。
mindspore.dataset.vision.RandomResizedCropWithBBox对输入图像进行随机裁剪且随机调整纵横比,并将处理后的图像调整为指定的尺寸大小并相应地调整边界框
mindspore.dataset.vision.RandomResize对输入图像使用随机选择的 mindspore.dataset.vision.Inter 插值方式去调整它的尺寸大小。
mindspore.dataset.vision.RandomResizeWithBBox对输入图像使用随机选择的 mindspore.dataset.vision.Inter 插值方式去调整它的尺寸大小,并相应地调整边界框的尺寸大小。
mindspore.dataset.vision.RandomRotation在指定的角度范围内,随机旋转输入图像。
mindspore.dataset.vision.RandomSelectSubpolicy策略列表中随机选择一个子策略以应用于输入图像。
mindspore.dataset.vision.RandomSharpness在固定或随机的范围调整输入图像的锐度
mindspore.dataset.vision.RandomSolarize从给定阈值范围内随机选择一个子范围,对位于给定子范围内的像素,将其像素值设置为(255 - 原本像素值)。
mindspore.dataset.vision.RandomVerticalFlip以给定的概率对输入图像在垂直方向进行随机翻转
mindspore.dataset.vision.RandomVerticalFlipWithBBox以给定的概率对输入图像和边界框垂直方向进行随机翻转
mindspore.dataset.vision.Rescale基于给定的缩放平移因子调整图像的像素大小。
mindspore.dataset.vision.Resize对输入图像使用给定的尺寸mindspore.dataset.vision.Inter 插值方式去调整为给定的尺寸大小。
mindspore.dataset.vision.ResizedCrop裁切输入图像的指定区域并放缩到指定尺寸大小。
mindspore.dataset.vision.ResizeWithBBox将输入图像调整为给定的尺寸大小相应地调整边界框的大小。
mindspore.dataset.vision.RgbToHsv将输入的RGB格式numpy.ndarray图像换为HSV格式。
mindspore.dataset.vision.Rotate将输入图像旋转指定的度数。
mindspore.dataset.vision.SlicePatches在水平和垂直方向上将Tensor片为多个
mindspore.dataset.vision.Solarize通过反转阈值内的所有像素值,对输入图像进行曝光
mindspore.dataset.vision.TenCrop在输入PIL图像的中心与四个角分别裁剪指定尺寸大小的子图,并将其翻转图一并返回。
mindspore.dataset.vision.ToNumpy将输入PIL图像转换为numpy.ndarray图像。
mindspore.dataset.vision.ToPIL将 numpy.ndarray 格式的解码图像转换为 PIL.Image.Image 格式的图像。
mindspore.dataset.vision.ToTensor将输入PIL图像或numpy.ndarray图像转换为指定类型的numpy.ndarray图像,图像的像素值范围将从[0, 255]放缩为[0.0, 1.0]shape将从<H, W, C>调整为<C, H, W>
mindspore.dataset.vision.ToType将输入转换为指定的MindSpore数据类型或NumPy数据类型。
mindspore.dataset.vision.TrivialAugmentWide对输入图像应用TrivialAugmentWide数据增强方法。
mindspore.dataset.vision.UniformAugment从指定序列中均匀采样一批数据处理操作,并按顺序随机执行,即采样出的操作也可能不被执行。
mindspore.dataset.vision.VerticalFlip对输入图像进行垂直翻转


二、实践mindspore.dataset.transforms.Compose

写法

import mindspore.dataset.transforms as transformscomposed = transforms.Compose([vision.Rescale(1.0 / 255.0, 0),vision.Normalize(mean=(0.1307,), std=(0.3081,)),vision.HWC2CHW()]
)

应用实践:手写数字Mnist数据集为例

# Begin to show your code!
# Download data from open datasets
import numpy as np
from PIL import Image
import mindspore
from mindspore import nn
from mindspore.dataset import MnistDataset, GeneratorDataset, transforms, vision, text
from download import download
from mindvision.dataset import Mnisturl = "https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/" \"notebook/datasets/MNIST_Data.zip"
# 运行过一次,后面就可注释download语句
path = download(url, "./", kind="zip", replace=True)
train_dataset = MnistDataset('MNIST_Data/train')
test_dataset = MnistDataset('MNIST_Data/test')
print(train_dataset.get_col_names())# MindSpore的dataset使用数据处理流水线(Data Processing Pipeline)
def datapipe(dataset, batch_size):image_transforms = [vision.Rescale(1.0 / 255.0, 0),vision.Normalize(mean=(0.1307,), std=(0.3081,)),vision.HWC2CHW()]label_transform = transforms.TypeCast(mindspore.int32)dataset = dataset.map(image_transforms, 'image')dataset = dataset.map(label_transform, 'label')dataset = dataset.batch(batch_size)return datasetdef my_tokenizer(content):return content.split()composed = transforms.Compose([vision.Rescale(1.0 / 255.0, 0),vision.Normalize(mean=(0.1307,), std=(0.3081,)),vision.HWC2CHW()]
)# Map vision transforms and batch dataset
train_dataset = datapipe(train_dataset, 64)
test_dataset = datapipe(test_dataset, 64)if __name__ == "__main__":train_dataset = MnistDataset('MNIST_Data/train')train_dataset = train_dataset.map(composed, 'image')image, label = next(train_dataset.create_tuple_iterator())print(image.shape)for image, label in test_dataset.create_tuple_iterator():print(f"Shape of image [N, C, H, W]: {image.shape} {image.dtype}")print(f"Shape of label: {label.shape} {label.dtype}")break

在这里插入图片描述


相关文章:

  • Redis分布式锁的应用场景有哪些
  • 【多维动态规划】Leetcode 221. 最大正方形【中等】
  • AI 会淘汰程序员吗?
  • MySQL之如何处理超大分页
  • Qt绘制多线段
  • vue组件深入介绍之插槽
  • [Go 微服务] Kratos 验证码业务
  • PHP电商系统开发指南数据库管理
  • 多线程软件不响应处理
  • JAVA 面试常见问题详解
  • 模板类内部能否含有虚函数?
  • Android动画:提升用户体验的关键技术
  • Python特征工程 — 1.4 特征归一化方法详解
  • 有什么简单方便的提取图片文字的方法?6个软件教你快速提取图片文字
  • day02-广播机制
  • [译]如何构建服务器端web组件,为何要构建?
  • “大数据应用场景”之隔壁老王(连载四)
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • ES6简单总结(搭配简单的讲解和小案例)
  • Gradle 5.0 正式版发布
  • JavaScript中的对象个人分享
  • js写一个简单的选项卡
  • js正则,这点儿就够用了
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Rancher如何对接Ceph-RBD块存储
  • Redis 懒删除(lazy free)简史
  • Spring框架之我见(三)——IOC、AOP
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Vue组件定义
  • 大整数乘法-表格法
  • 面试总结JavaScript篇
  • 如何解决微信端直接跳WAP端
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 突破自己的技术思维
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 小程序开发之路(一)
  • 学习笔记:对象,原型和继承(1)
  • python最赚钱的4个方向,你最心动的是哪个?
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 第二十章:异步和文件I/O.(二十三)
  • ​ssh免密码登录设置及问题总结
  • ######## golang各章节终篇索引 ########
  • #Linux(make工具和makefile文件以及makefile语法)
  • #LLM入门|Prompt#3.3_存储_Memory
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (1)SpringCloud 整合Python
  • (C#)一个最简单的链表类
  • (C)一些题4
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (利用IDEA+Maven)定制属于自己的jar包
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载