Introduction

数据扩充(data augmentation),又名 数据增强 / 数据增广

其本质即:

缺少海量数据时,为了保证模型的有效训练,一分钱掰成两半花。

数据扩充方法包括:

简单方法 复杂方法
翻转、旋转、尺度变换、随机抠取、色彩抖动、高斯噪声、随机模糊、随机擦除 Fancy PCA、监督式抠取、GAN生成

方法介绍

1. 翻转

包括:水平翻转、垂直翻转、水平垂直翻转。OpenCV中的 cv2.flip接口可用于快速实现翻转操作:opencv: cv2.flip 图像翻转 进行 数据增强

原图像:

水平翻转:

垂直翻转:

水平垂直翻转:

2. 旋转

将原图按照一定角度旋转,作为新图像。

常取的旋转角度为 -30°、-15°、15°、30° 等较刚好的角度值。

3. 尺度变换

将图像分辨率变为原图的0.8、0.9、1.1、1.2等倍数,作为新图像。

4. 抠取

  • 随机抠取:在原图的随机位置抠取图像块,作为新图像。
  • 监督式抠取:只抠取含有明显语义信息的图像块。

5. 色彩抖动

对图像原有的像素值分布进行轻微扰动(即加入轻微噪声),作为新图像。
可抖动的维度包括:亮度、锐度、饱和度、对比度。

6. Fancy PCA

对所有训练数据的像素值进行主成分分析(PCA),根据得到的特征向量和特征值计算一组随机值,作为扰动加入到原像素值中。

Code

之前做项目时有写过简易的数据增强工具,已开源:图像算法工具箱。
其中包含了最常见的图像水平翻转、垂直翻转和水平垂直翻转。可将图像数据量扩充为原来的4倍。

Summary

在实际操作中,常将多种数据扩充操作叠加使用,比如,对原图像分别 (水平、垂直、水平垂直)翻转 和 (-30°、-15°、15°、30°)旋转 后,数据量扩充为原来的8倍。此时,再对这组数据统一各进行一次随机扣取,则数据量翻为原来的16倍。与此类同,我们可以将数据扩充为原来的n次方倍,数据量简直不要太海量。。。 ╮( ̄▽ ̄)╭

Note:

  1. 不是所有 数据扩充方法都可以一股脑儿随便用。比如对于人脸图片,垂直翻转就变得不可行了。因为现实中基本不会出现对倒过来的人脸进行识别,那么垂直翻转后产生的就几乎是对模型有害的噪声了,这会干扰到模型的正常收敛。

  2. 另外,如果是 预测位置有关的任务 ,记得 将 图像数据 和 标记数据 进行 同步扩充(比如图像翻转时,对应的标记坐标跟着做相应翻转)。这个不要忘了,否则扩充后的新图像对应的却是原图像的标记数据,你觉得这个模型还能训练么。。。 (→_→)

【深度学习】数据扩充 (Data Augmentation)相关推荐

  1. 深度学习: 数据扩充 (Data Augmentation)

    https://blog.csdn.net/JNingWei/article/details/79219838 Mixup Cutout CutMix Mosaic Data_Augmentation ...

  2. 吴恩达神经网络和深度学习-学习笔记-38-使用开源的方案+迁移学习+数据增强data augmentation

    使用别人的开源成果 想要用现成的网络,最好在网络上找到开源的实现,这要比从头开始实现快得多. 比如:直接在Google上搜索resnets github,找到合适的后点击下载会得到URL,然后在cmd ...

  3. (python)深度学习 数据扩充 图片的水平、垂直以及水平垂直翻转

    深度学习中经常存在数据量不够的情况,所以需要对数据进行扩充,本文使用三种手段扩充数据,分别是图片的水平.垂直.水平垂直翻转.将图像扩充三倍. import os import cv2 import s ...

  4. 深度学习样本生成data augmentation

    在做深度学习图片分类的时候,很多是有些样本不足这个时候我们就会自己生成样本,如opencv对图片旋转,扭曲等等操作.google了一下deep learning data augmentation 发 ...

  5. HALCON 20.11:深度学习笔记(3)---Data(数据)

    HALCON 20.11:深度学习笔记(3)---Data(数据) HALCON 20.11.0.0中,实现了深度学习方法.其中,关于术语"数据"的介绍如下: 术语"数据 ...

  6. 深度学习数据特征提取:ICCV2019论文解析

    深度学习数据特征提取:ICCV2019论文解析 Goal-Driven Sequential Data Abstraction 论文链接: http://openaccess.thecvf.com/c ...

  7. 深度学习——数据预处理篇

    深度学习--数据预处理篇 文章目录 深度学习--数据预处理篇 一.前言 二.常用的数据预处理方法 零均值化(中心化) 数据归一化(normalization) 主成分分析(PCA.Principal ...

  8. 深度学习数据集中数据差异大_使用差异隐私来利用大数据并保留隐私

    深度学习数据集中数据差异大 The modern world runs on "big data," the massive data sets used by governmen ...

  9. 深度学习数据更换背景_开始学习数据科学的最佳方法是了解其背景

    深度学习数据更换背景 数据科学教育 (DATA SCIENCE EDUCATION) 目录 (Table of Contents) The Importance of Context Knowledg ...

最新文章

  1. 《Decoupling Representation and Classifier》笔记
  2. 手机移动端网站建设这些细节问题需重视
  3. 趣谈网络协议笔记-二(第十九讲)
  4. 【Nodejs篇一】Node js 简介
  5. TinyMCE的使用
  6. 基于keras 的神经网络股价预测模型
  7. 中国物联网2020年将达到1660亿美元的市场规模
  8. 在同一页面显示多个JavaScript统计图表
  9. 一文读懂Python 装饰器函数
  10. 不使用控件的分页实现分页(更灵活)
  11. Java开发者的十大戒律
  12. windows下openresty环境配置
  13. leetcode—13.链表基本操作类题目python解答
  14. Oracle实例解析:编码与字符集
  15. 计算机打字比赛海报图,打字比赛宣传海报图片
  16. am信号包络检波matlab,高频课程设计AM信号包络检波器
  17. 脉冲电磁阀工作原理图(给到爱学习的你)(转)
  18. lol登录服务器时显示乱码,lol服务器变成乱码 | 手游网游页游攻略大全
  19. mysql提权(mof udf 反弹端口)
  20. AD PCB布板提示The following exception occurred whilst loading section primitive paramenters...解决方法

热门文章

  1. littlevgl教程 Linux,树莓派littlevGL系列教程:容器控件(lv_cont)
  2. 机器人或自动化类简历面试小技巧
  3. 信息系统项目管理师第一章复习内容(持续更新中……)
  4. 机器学习笔记(1)—— 样本空间、假设空间、版本空间
  5. Flink SQL自定义connector
  6. 欧奈尔RPS指标选股!本地数据源快速遍历全市场!股票量化分析工具QTYX-V2.3.1...
  7. 查询销量最高的产品mysql_MYSQL之——查询练习题
  8. 二叉树的遍历——层序遍历
  9. FastAPI 入门教程
  10. StretchSense 打造了一款真正舒适的手部动作捕捉手套