前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习: 数据扩充 (Data Augmentation)

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

作者头像
JNingWei
发布2018-09-27 15:12:55
7.5K0
发布2018-09-27 15:12:55
举报
文章被收录于专栏:JNing的专栏

Introduction

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

其本质即:

代码语言:javascript
复制
缺少海量数据时,为了保证模型的有效训练,一分钱掰成两半花。

数据扩充方法包括:

简单方法

复杂方法

翻转、旋转、尺度变换、随机抠取、色彩抖动

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. 另外,如果是 图像检测任务 或者是 图像分割任务 ,记得 将 图像数据 和 标记数据 进行 同步扩充(比如图像翻转时,对应的标记坐标跟着做相应翻转)。这个不要忘了,否则扩充后的新图像对应的却是原图像的标记数据,你觉得这个模型还能训练么。。。 (→_→)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年01月31日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Introduction
  • 方法介绍
    • 1. 翻转
      • 2. 旋转
        • 3. 尺度变换
          • 4. 抠取
            • 5. 色彩抖动
              • 6. Fancy PCA
              • Code
              • Summary
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档