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在训练过程中流向您网络的这些增强图像来训练模型。此类代码的示例如下所示:

审核编辑 黄昊宇

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

    关注

    67

    文章

    8567

    浏览量

    137256
  • tensorflow
    +关注

    关注

    13

    文章

    336

    浏览量

    62398
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    通过对‌数字音频信号进行数学运算和算法处理的高性能Audio DSP-DU562

    高性能 Audio DSP(音频数字信号处理器)的核心工作原理是通过对‌数字音频信号进行数学运算和算法处理‌,实现音质优化、噪声抑制、空间增强等效果。
    的头像 发表于 04-03 09:26 309次阅读
    通过对‌数字音频信号<b class='flag-5'>进行数</b>学运算和算法处理的高性能Audio DSP-DU562

    请问单片机应用系统为什么需要进行数模以及模数转换?

    单片机应用系统为什么需要进行数模以及模数转换?
    发表于 01-05 07:57

    使用KickStart数据记录器应用轻松进行数据采集

    数据采集(DAQ)或数据记录(Data Logging)是一个从各种物理现象中收集和分析数据的过程。它在工程、科学研究和工业环境中发挥着关键作用,使对温度、压力和电压等参数的实时监测和控制成为可能。
    的头像 发表于 12-09 14:48 3145次阅读
    使用KickStart<b class='flag-5'>数据</b>记录器应用<b class='flag-5'>轻松</b><b class='flag-5'>进行数据</b>采集

    设备PLC没有以太网口如何进行数据采集

    工业在实现数字化转型的过程中,需要对各类自动化设备进行数据采集,其实质是实现对可编程逻辑控制器PLC的数据采集。但对很多老旧设备来说,通常只具备串口、只走TCP通信,甚至出现接口被占用的问题,而
    的头像 发表于 12-03 10:57 698次阅读

    蜂鸟E203怎样外部的摄像头进行数据传输?

    蜂鸟E203怎样外部的摄像头进行数据传输
    发表于 11-05 06:58

    温度循环测试后如何进行数据记录和分析?

    温度循环测试后的数据记录和分析是验证电能质量在线监测装置精度稳定性、功能完整性、硬件可靠性的核心环节,需围绕 “数据溯源可查、分析逻辑闭环、结论依据充分” 展开,结合测试标准(IEC
    的头像 发表于 09-26 14:22 690次阅读

    进行数据校验时如何保证场景覆盖的全面性?

    数据校验中保证场景覆盖的全面性,核心是 从 “数据属性 - 业务逻辑 - 异常边界 - 环境交互” 多维度拆解场景 ,通过系统化梳理、优先级排序和动态迭代,避免因场景遗漏导致校验漏洞。以下是具体
    的头像 发表于 09-25 17:42 827次阅读

    如何使用运行数据趋势分析验证装置准确性?

    负荷变化、设备启停、电网事件)高度匹配,且关键参数波动范围在合理区间内。以下是具体实施步骤、核心分析维度及判断标准: 一、前提:数据预处理 —— 确保分析基础有效 在开展趋势分析前,需先对运行数据进行筛选和清洗,避
    的头像 发表于 09-18 10:33 622次阅读
    如何使用运<b class='flag-5'>行数据</b>趋势分析验证装置准确性?

    【上海晶珩睿莓1开发板试用体验】TensorFlow-Lite物体归类(classify)

    目前尚未得知睿莓1开发板上面有NPU或者DPU之类的额外处理器,因此使用树莓派系列使用最广泛的TensorFlow-Lite库进行物体归类,使用CPU运行代码,因此占用的是CPU的算力。在
    发表于 09-12 22:43

    I2S 串行数据输入显示延迟串行数据输出?

    了 USIC。 它似乎基本可以正常工作;SCLK 以正确的速度运行,字地址根据正在写入的通道切换,串行数据输出 (MTSR) 信号根据我从代码传输的内容显示正确的数据。 尽管没有连接从设备,我的逻辑
    发表于 07-14 08:22

    无法将Tensorflow Lite模型转换为OpenVINO™格式怎么处理?

    Tensorflow Lite 模型转换为 OpenVINO™ 格式。 遇到的错误: FrontEnd API failed with OpConversionFailure:No translator found for TFLite_Detection_PostProcess node.
    发表于 06-25 08:27

    STVD使用STM8S005K6T6C内部data eeprom进行数据写入操作问题求解

    1.STVD使用STM8S005K6T6C内部data eeprom进行数据写入操作,使用st-link V2(B2013 21)进行仿真调试,发现寄存器FLASH_CR2写入1是值仍为0x00
    发表于 06-23 06:29

    使用Cypress FX2 EZ USB进行数据采集应用,为什么采集到的数据不是连续的?

    我正在使用Cypress FX2 EZ USB进行数据采集应用。 我已经将其配置为 512 字节,BULK-IN 和 EP6 端点,AUTO IN。我在 labview 中开发了一个应用程序,用于
    发表于 05-28 07:38

    在KaihongOS应用开发中,如何利用Socket进行数据传输

    Socket 在KaihongOS应用开发中,可以利用Socket进行数据传输的能力,支持TCPSocket、UDPSocket、WebSocket和TLSSocket。详细的API接口文档请
    发表于 05-08 07:25

    工业设备运行数据采集管理平台是什么

    工业设备运行数据采集管理平台是一种用于集中采集、管理和分析工业设备运行数据的系统,广泛应用于制造业、能源、化工等多个领域。以下是其定义、功能及应用场景的详细说明: 定义 工业设备运行数据采集管理平台
    的头像 发表于 05-06 14:34 844次阅读