0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

轻松使用TensorFlow进行数据增强

电子设计 来源:电子设计 作者:电子设计 2020-12-14 22:37 次阅读

当我们没有大量不同的训练数据时,我们该怎么办?这是在TensorFlow中使用数据增强在模型训练期间执行内存中图像转换以帮助克服此数据障碍的快速介绍。

图像分类的成功至少在很大程度上受到大量可用训练数据的驱动。暂时不考虑过拟合之类的问题,训练的图像数据越多,建立有效模型的机会就越大。

但是,如果我们没有大量的培训数据,我们该怎么办?立即想到一些针对此特定问题的广泛方法,尤其是迁移学习和数据增强功能。

迁移学习是将现有机器学习模型应用于最初并非预期的场景的过程。这种利用可以节省训练时间并扩展现有机器学习模型的实用性,这些模型可能具有可用的数据和计算,并且已经在非常大的数据集上进行了很长时间的训练。如果我们在大量数据上训练模型,则可以优化结果以对少量数据有效。

数据扩充是现有训练数据集的大小和多样性的增加,而无需手动收集任何新数据。通过对现有数据执行一系列预处理转换,可以获取此增强数据,对于图像数据,这些转换可以包括水平和垂直翻转,倾斜,修剪,旋转等。总而言之,与仅复制相同的数据相反,这种扩充的数据能够模拟各种细微不同的数据点。这些“附加”图像的细微差别应该足以帮助训练更鲁棒的模型。同样,这就是想法。

本文的重点是在TensorFlow中第二种方法的实际实施,以减轻少量图像训练数据(数据增强)的问题,而稍后将对转移学习进行类似的实际处理。

图像增强如何帮助

当卷积神经网络学习图像特征时,我们希望确保这些特征以各种方向出现,以便使经过训练的模型能够识别出人的双腿可以同时出现在图像的垂直和水平方向。除了增加数据点的原始数量之外,增强功能在这种情况下还可以通过采用诸如图像旋转的变换来帮助我们。作为另一个示例,我们还可以使用水平翻转来帮助模型训练识别猫是直立的猫还是被倒置拍照的猫。

数据增强不是万能药;我们不希望它能解决我们所有的小数据问题,但是它可以在许多情况下有效,并且可以通过将其作为一种全面的模型训练方法的一部分,或者与另一种数据集扩展技术(例如,转移学习)

TensorFlow中的图像增强

在TensorFlow中,使用ImageDataGenerator类完成数据扩充。它非常易于理解和使用。整个数据集在每个时期循环,并且数据集中的图像根据选择的选项和值进行转换。这些转换是在内存中执行的,因此不需要其他存储(尽管save_to_dir如果需要,该参数可用于将增强的图像保存到磁盘)。

如果您正在使用TensorFlow,则可能已经使用了ImageDataGenerator简单的方法来缩放现有图像,而没有进行任何其他扩充。可能看起来像这样:

ImageDataGenerator执行增强的更新可能如下所示:

这是什么意思呢?

**rotation/_range**-随机旋转的度数范围;在上述示例中为20度

**width/_shift/_range**-总宽度的一部分(如果值<1,在这种情况下),以随机地水平转换图像;上例中为0.2

**height/_shift/_range**-总高度的一部分(如果值<1,在这种情况下),以垂直方向随机平移图像;上例中为0.2

**shear/_range**-逆时针方向的剪切角,以度为单位,用于剪切转换;上例中为0.2

**zoom/_range**-随机缩放范围;上例中为0.2

**horizontal/_flip**-用于水平随机翻转图像的布尔值;在上面的例子中为真

**vertical/_flip**-布尔值,用于垂直随机翻转图像;在上面的例子中为真

**fill/_mode**-根据“常数”,“最近”,“反射”或“环绕”填充输入边界之外的点;在以上示例中最接近

然后,您可以使用该ImageDataGeneratorflow_from_directory选项指定训练数据的位置(以及选择是否进行验证,如果要创建验证生成器),例如,使用选项,然后使用fit_generator在训练过程中流向您网络的这些增强图像来训练模型。此类代码的示例如下所示:

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8423

    浏览量

    132753
  • tensorflow
    +关注

    关注

    13

    文章

    329

    浏览量

    60540
收藏 人收藏

    评论

    相关推荐

    使用CAN总线进行数据采集的方法

    使用CAN总线进行数据采集的方法通常涉及一系列步骤,这些步骤确保了数据的准确采集、处理和存储。以下是一个详细的方法指南: 一、了解CAN总线系统 首先,需要对CAN总线系统有一定的了解。CAN总线
    的头像 发表于 12-20 18:18 795次阅读

    如何使用ddc进行数据分类

    在探讨如何使用DDC(Dewey Decimal Classification,即杜威十进制分类法)进行数据分类时,我们首先需要明确DDC是一种用于图书馆分类和组织图书的体系,它按照一定的体系将各种
    的头像 发表于 12-18 15:05 272次阅读

    如何使用cmp进行数据库管理的技巧

    使用 cmp 命令进行数据库管理可能不是最直观的方法,因为 cmp 通常用于比较两个文件是否相同。然而,如果你的意图是使用 cmp 来检查数据库文件或备份文件的一致性,以下是一些技巧和步骤,可以帮助
    的头像 发表于 12-17 09:31 129次阅读

    如何使用SQL进行数据分析

    使用SQL进行数据分析是一个强大且灵活的过程,它涉及从数据库中提取、清洗、转换和聚合数据,以便进行进一步的分析和洞察。 1. 数据提取(Da
    的头像 发表于 11-19 10:26 316次阅读

    ADS1299与STM32f407通过SPI进行数据传输的时候,可以直接使用HAL库中的HAL_SPI_Receive函数进行数据传输吗?

    在与STM32f407通过SPI进行数据传输的时候,可以在使能SPI之后,直接使用HAL库中的HAL_SPI_Receive函数进行数据传输吗?还是需要判断DRDY,在DRDY置低之后再使用HAL_SPI_Receive函数?
    发表于 11-13 08:29

    使用TMS320C6000 MCBSP进行数据打包

    电子发烧友网站提供《使用TMS320C6000 MCBSP进行数据打包.pdf》资料免费下载
    发表于 10-26 10:54 0次下载
    使用TMS320C6000 MCBSP<b class='flag-5'>进行数据</b>打包

    使用AI大模型进行数据分析的技巧

    使用AI大模型进行数据分析的技巧涉及多个方面,以下是一些关键的步骤和注意事项: 一、明确任务目标和需求 在使用AI大模型之前,首先要明确数据分析的任务目标,这将直接影响模型的选择、数据收集和处理方式
    的头像 发表于 10-23 15:14 840次阅读

    如何利用海外爬虫IP进行数据抓取

    利用海外爬虫IP进行数据抓取需要综合考虑多个方面。
    的头像 发表于 10-12 07:54 209次阅读

    TensorFlow是什么?TensorFlow怎么用?

    TensorFlow是由Google开发的一个开源深度学习框架,它允许开发者方便地构建、训练和部署各种复杂的机器学习模型。TensorFlow凭借其高效的计算性能、灵活的架构以及丰富的工具和库,在学
    的头像 发表于 07-12 16:38 729次阅读

    使用TensorFlow进行神经网络模型更新

    使用TensorFlow进行神经网络模型的更新是一个涉及多个步骤的过程,包括模型定义、训练、评估以及根据新数据或需求进行模型微调(Fine-tuning)或重新训练。下面我将详细阐述这
    的头像 发表于 07-12 11:51 440次阅读

    tensorflow简单的模型训练

    在本文中,我们将详细介绍如何使用TensorFlow进行简单的模型训练。TensorFlow是一个开源的机器学习库,广泛用于各种机器学习任务,包括图像识别、自然语言处理等。我们将从安装
    的头像 发表于 07-05 09:38 708次阅读

    使用slavefifosync2bit与FPGA进行数据传输时,服务间隔是多少?

    您好,请问使用slavefifosync2bit与FPGA进行数据传输时,服务间隔是多少?
    发表于 07-03 06:21

    TensorFlow的定义和使用方法

    TensorFlow是一个由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护的开源机器学习库。它基于数据流编程(dataflow programming)的概念,将复杂的数学运算表示为
    的头像 发表于 07-02 14:14 804次阅读

    STM32作为主机,通过SPI进行数据交互,发送数据的时候出现乱码怎么解决?

    我们使用ESP32-pico-mini与STM32DIY一款电子产品。使用ESP32做从机,STM32作为主机,通过SPI进行数据交互,当时钟频率为40MHz时,从STM32到ESP32传输音频数据
    发表于 06-12 06:20

    基于BootRom使用CAN引导加载程序(CAN BSL),可以进行数据刷写吗?

    基于BootRom,使用CAN引导加载程序(CAN BSL),可以进行数据刷写吗?需要开发上位机软件吗?英飞凌有没有相关的软件产品可以使用,是DAS吗?
    发表于 06-03 08:17