基于华为云ModelArts进行数据集预处理 | 【玩转华为云】

举报
yd_216666332 发表于 2023/11/13 13:41:46 2023/11/13
【摘要】 数据预处理在众多深度学习算法中都起着重要作用,数据预处理可以提高模型精度,加快模型收敛速度,提升模型性能,这里主要介绍MindSpore常用的数据预处理方式。

数据集预处理

1基础知识

数据预处理在众多深度学习算法中都起着重要作用,数据预处理可以提高模型精度,加快模型收敛速度,提升模型性能,这里主要介绍MindSpore常用的数据预处理方式。
image.png
数据是深度学习的基础,良好的数据输入可以对整个深度神经网络训练起到非常积极的作用。在训练前对已加载的数据集进行数据处理,可以解决诸如数据量过大、样本分布不均等问题,从而获得更加优化的数据输入。

2代码讲解

  • Shuffle
    对数据集进行混洗,随机打乱数据顺序。设定的buffer_size越大,混洗程度越大,但时间、计算资源消耗也会更大。
    dataset2 = dataset1.shuffle(buffer_size=5)
  • Map
    将指定的函数或算子作用于数据集的指定列数据,实现数据映射操作。用户可以自定义映射函数,也可以直接使用c_transforms或py_transforms中的算子针对图像、文本数据进行数据增强。
    dataset2 = dataset1.map(operations=pyfunc, input_columns=["data"])
  • Batch
    将数据集分批,分别输入到训练系统中进行训练,可以减少训练轮次,达到加速训练过程的目的。
    dataset1 = dataset1.batch(batch_size=2, drop_remainder=False)
    # drop_remainder=False 不去除剩余的数据(不满足batch的数据)
  • Repeat
    对数据集进行重复,达到扩充数据量的目的。repeat和batch操作的顺序会影响训练batch的数量,建议将repeat置于batch之后。
    dataset1 = dataset1.repeat(count=2)
  • Zip
    将两个数据集进行列拼接,合并为一个数据集。如果两个数据集的列名相同,则不会合并,请注意列的命名;如果两个数据集的行数不同,合并后的行数将和较小行数保持一致。
    dataset3 = ds.zip((dataset1, dataset2))

数据增强

1基础知识

在计算机视觉任务中,数据量过小或是样本场景单一等问题都会影响模型的训练效果,可以通过数据增强操作对图像进行预处理,从而提升模型的泛化性。

2代码讲解

  • 随机裁剪图片
    1.import mindspore.dataset.vision.c_transforms as CV 
    2.
    3.# 随机裁剪:输出大小(32x32), padding 方式 左上右下。
    4.random_crop_op = CV.RandomCrop([32, 20], [4, 4, 4, 4])
    5.mnist_dataset1 = mnist_dataset.map(operations=random_crop_op, input_columns=[“image”])

  • 调整图片大小

    1.# 调整图像大小
    2.resize = CV.Resize([20, 35])
    3.mnist_dataset1 = mnist_dataset.map(operations=resize, input_columns=[“image”])

  • 像素值修改

    1.# rescale 缩放系数,shift 平移大小,相当于ax+b
    2.rescale = CV.Rescale(rescale=3, shift=100)
    3.mnist_dataset1 = mnist_dataset.map(operations=rescale, input_columns=[“image”])

  • 图像标准化
    将输入的NumPy图像数组(形状必须为(C, H, W))用给定的均值和标准差进行标准化。
    数组的值必须在(0, 1]范围内。

    1.normalize_op = CV.Normalize(mean=(123.68,116.78,103.94), std=[1, 1, 1])
    2.dataset = dataset.map(operations=normalize_op, input_columns=[“image”])

  • 随机水平翻转图像

    1.# 水平翻转图片,随机翻转概率为1
    2.RandomHorizontalFlip = CV.RandomHorizontalFlip(1)
    3.dataset = dataset1.map(operations=RandomHorizontalFlip, input_columns=[“image”])

  • 转换图像通道

    1.# 转置输入图像从形状(H, W, C)到形状(C, H, W)
    2.HWC2CHW = CV.HWC2CHW()
    3.dataset1 = dataset.map(operations=HWC2CHW, input_columns=[“image”])

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。