【深度学习】数据扩充 (Data Augmentation)
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:
不是所有 数据扩充方法都可以一股脑儿随便用。比如对于人脸图片,垂直翻转就变得不可行了。因为现实中基本不会出现对倒过来的人脸进行识别,那么垂直翻转后产生的就几乎是对模型有害的噪声了,这会干扰到模型的正常收敛。
另外,如果是 预测位置有关的任务 ,记得 将 图像数据 和 标记数据 进行 同步扩充(比如图像翻转时,对应的标记坐标跟着做相应翻转)。这个不要忘了,否则扩充后的新图像对应的却是原图像的标记数据,你觉得这个模型还能训练么。。。 (→_→)
【深度学习】数据扩充 (Data Augmentation)相关推荐
- 深度学习: 数据扩充 (Data Augmentation)
https://blog.csdn.net/JNingWei/article/details/79219838 Mixup Cutout CutMix Mosaic Data_Augmentation ...
- 吴恩达神经网络和深度学习-学习笔记-38-使用开源的方案+迁移学习+数据增强data augmentation
使用别人的开源成果 想要用现成的网络,最好在网络上找到开源的实现,这要比从头开始实现快得多. 比如:直接在Google上搜索resnets github,找到合适的后点击下载会得到URL,然后在cmd ...
- (python)深度学习 数据扩充 图片的水平、垂直以及水平垂直翻转
深度学习中经常存在数据量不够的情况,所以需要对数据进行扩充,本文使用三种手段扩充数据,分别是图片的水平.垂直.水平垂直翻转.将图像扩充三倍. import os import cv2 import s ...
- 深度学习样本生成data augmentation
在做深度学习图片分类的时候,很多是有些样本不足这个时候我们就会自己生成样本,如opencv对图片旋转,扭曲等等操作.google了一下deep learning data augmentation 发 ...
- HALCON 20.11:深度学习笔记(3)---Data(数据)
HALCON 20.11:深度学习笔记(3)---Data(数据) HALCON 20.11.0.0中,实现了深度学习方法.其中,关于术语"数据"的介绍如下: 术语"数据 ...
- 深度学习数据特征提取:ICCV2019论文解析
深度学习数据特征提取:ICCV2019论文解析 Goal-Driven Sequential Data Abstraction 论文链接: http://openaccess.thecvf.com/c ...
- 深度学习——数据预处理篇
深度学习--数据预处理篇 文章目录 深度学习--数据预处理篇 一.前言 二.常用的数据预处理方法 零均值化(中心化) 数据归一化(normalization) 主成分分析(PCA.Principal ...
- 深度学习数据集中数据差异大_使用差异隐私来利用大数据并保留隐私
深度学习数据集中数据差异大 The modern world runs on "big data," the massive data sets used by governmen ...
- 深度学习数据更换背景_开始学习数据科学的最佳方法是了解其背景
深度学习数据更换背景 数据科学教育 (DATA SCIENCE EDUCATION) 目录 (Table of Contents) The Importance of Context Knowledg ...
最新文章
- 《Decoupling Representation and Classifier》笔记
- 手机移动端网站建设这些细节问题需重视
- 趣谈网络协议笔记-二(第十九讲)
- 【Nodejs篇一】Node js 简介
- TinyMCE的使用
- 基于keras 的神经网络股价预测模型
- 中国物联网2020年将达到1660亿美元的市场规模
- 在同一页面显示多个JavaScript统计图表
- 一文读懂Python 装饰器函数
- 不使用控件的分页实现分页(更灵活)
- Java开发者的十大戒律
- windows下openresty环境配置
- leetcode—13.链表基本操作类题目python解答
- Oracle实例解析:编码与字符集
- 计算机打字比赛海报图,打字比赛宣传海报图片
- am信号包络检波matlab,高频课程设计AM信号包络检波器
- 脉冲电磁阀工作原理图(给到爱学习的你)(转)
- lol登录服务器时显示乱码,lol服务器变成乱码 | 手游网游页游攻略大全
- mysql提权(mof udf 反弹端口)
- AD PCB布板提示The following exception occurred whilst loading section primitive paramenters...解决方法
热门文章
- littlevgl教程 Linux,树莓派littlevGL系列教程:容器控件(lv_cont)
- 机器人或自动化类简历面试小技巧
- 信息系统项目管理师第一章复习内容(持续更新中……)
- 机器学习笔记(1)—— 样本空间、假设空间、版本空间
- Flink SQL自定义connector
- 欧奈尔RPS指标选股!本地数据源快速遍历全市场!股票量化分析工具QTYX-V2.3.1...
- 查询销量最高的产品mysql_MYSQL之——查询练习题
- 二叉树的遍历——层序遍历
- FastAPI 入门教程
- StretchSense 打造了一款真正舒适的手部动作捕捉手套