[综述类] 一文道尽深度学习中的数据增强方法(上)

基于图像的数据增强方法发展现状综述 基于图像的数据增强方法发展现状综述 人工智能技术与咨询2022-03-22 20:57 点击蓝字 · 关注我们 来源:《计算机科学与应用》,作者冯晓硕等 关键词:数据增强;图像数据集;图像处理;深度学习 摘要: 摘要:现阶段,基于深度学习的图像处理和识别技术已经发展的十分成熟,但在某些图像识别任务中由于深度学习技术的特点,一些深度神经网络模型层数较多导致的学习能力较强,将图像数据样本中的特征学习的过于充分,使得神经网络模型在训练... 阅读详情

今天带来一次有关于深度学习中的数据增强方法的分享。

00

什么是数据增强

在深度学习项目中,寻找数据花费了相当多的时间。但在很多实际的项目中,我们难以找到充足的数据来完成任务。

为了要保证完美地完成项目,有两件事情需要做好:

1、寻找更多的数据;

2、数据增强。

本篇主要描述数据增强。

什么是数据增强呢?data augmentation,它的意思是让有限的数据产生更多的等价数据。

下面举个实际的例子:

640?wx_fmt=jpeg

上面的左侧大图为原图,右侧小图是对左图做了一些随机的裁剪、旋转操作得来的。右边的每张图对于网络来说都是不同的输入,这样就将数据扩充到10倍。

假如我们输入网络的图片的分辨率大小是256*256,若采用随机裁剪成224*224的方式,那么一张图最多可以产生32*32张图,数据量扩充将近1000倍。

但因许多图相似度太高,实际的效果并不等价。

如果再辅助其他的数据增强方法,将获得更多的数据集,这就是数据增强的本质。    

01

空间几何变换类

1.1 翻转

翻转包括水平翻转和垂直翻转。

640?wx_fmt=jpeg

1.2 crop

裁剪图片的感兴趣区域(ROI),通常在训练的时候,会采用随机裁剪的方法,下图为随机裁剪4次的效果。

640?wx_fmt=jpeg

1.3 旋转

对图像做一定角度对旋转操作,看看效果。

640?wx_fmt=jpeg

1.4.缩放变形

随机选取图像的一部分,然后将其缩放到原图像尺度。

640?wx_fmt=jpeg

1.5 仿射类

仿射变换

同时对图片做裁剪、旋转、转换、模式调整等多重操作。

640?wx_fmt=jpeg

视觉变换

对图像应用一个随机的四点透视变换。

640?wx_fmt=jpeg

分段仿射(PiecewiseAffine)

分段仿射在图像上放置一个规则的点网格,根据正态分布的样本数量移动这些点及周围的图像区域。

640?wx_fmt=jpeg

02

像素颜色变换类

2.1 噪声类

随机噪声是在原来的图片的基础上,随机叠加一些噪声。

高斯噪声

640?wx_fmt=jpeg

CoarseDropout

在面积大小可选定、位置随机的矩形区域上丢失信息实现转换,所有通道的信息丢失产生黑色矩形块,部分通道的信息丢失产生彩色噪声。

640?wx_fmt=jpeg

SimplexNoiseAlpha

产生连续单一噪声的掩模后,将掩模与原图像混合。

640?wx_fmt=jpeg

FrequencyNoiseAlpha

在频域中用随机指数对噪声映射进行加权,再转换到空间域。在不同图像中,随着指数值逐渐增大,依次出现平滑的大斑点、多云模式、重复出现的小斑块。

640?wx_fmt=jpeg

2.2 模糊类

减少各像素点值的差异实现图片模糊,实现像素的平滑化。

高斯模糊

640?wx_fmt=jpeg

ElasticTransformation

根据扭曲场的平滑度与强度逐一地移动局部像素点实现模糊效果。

640?wx_fmt=jpeg

2.3 HSV对比度变换

通过向HSV空间中的每个像素添加或减少V值,修改色调和饱和度实现对比度转换。

640?wx_fmt=jpeg

2.4  RGB颜色扰动

将图片从RGB颜色空间转换到另一颜色空间,增加或减少颜色参数后返回RGB颜色空间。

640?wx_fmt=jpeg

2.5  随机擦除法

对图片上随机选取一块区域,随机地擦除图像信息。

640?wx_fmt=jpeg

2.6  超像素法(Superpixels)

在最大分辨率处生成图像的若干个超像素,并将其调整到原始大小,再将原始图像中所有超像素区域按一定比例替换为超像素,其他区域不改变。

640?wx_fmt=jpeg

2.7  转换法(invert)

按给定的概率值将部分或全部通道的像素值从v设置为255-v。

640?wx_fmt=jpeg

2.8  边界检测(EdgeDetect)

检测图像中的所有边缘,将它们标记为黑白图像,再将结果与原始图像叠加。

640?wx_fmt=jpeg

2.9  GrayScale

将图像从RGB颜色空间转换为灰度空间,通过某一通道与原图像混合。

640?wx_fmt=jpeg

2.10  锐化(sharpen)与浮雕(emboss)

对图像执行某一程度的锐化或浮雕操作,通过某一通道将结果与图像融合。

下图分别是锐化与浮雕效果图。

640?wx_fmt=jpeg

上述两大类方法都是通过调用imgaug库操作实现的。

git地址:https://github.com/aleju/imgaug

官方文档:http://imgaug.readthedocs.io/en/latest/index.html

03

多样本合成类

3.1  SMOTE

SMOTE,Synthetic Minority Over-sampling Technique,通过人工合成新样本来处理样本不平衡问题,提升分类器性能。

类不平衡现象是数据集中各类别数量不近似相等。如果样本类别之间相差很大,会影响分类器的分类效果。假设小样本数据数量极少,仅占总体的1%,所能提取的相应特征也极少,即使小样本被错误地全部识别为大样本,在经验风险最小化策略下的分类器识别准确率仍能达到99%,但在验证环节分类效果不佳。

基于插值的SMOTE方法为小样本类合成新的样本,主要思路为:

(1)定义好特征空间,将每个样本对应到特征空间中的某一点,根据样本不平衡比例确定采样倍率N;

(2)对每一个小样本类样本(x,y),按欧氏距离找K个最近邻样本,从中随机选取一个样本点,假设选择的近邻点为(xn,yn)。在特征空间中样本点与最近邻样本点的连线段上随机选取一点作为新样本点,满足以下公式:

640?wx_fmt=png

(3)重复选取取样,直到大、小样本数量平衡。

在python中,SMOTE算法已经封装到了imbalanced-learn库中,如下图为算法实现的数据增强的实例,左图为原始数据特征空间图,右图为SMOTE算法处理后的特征空间图。

640?wx_fmt=jpeg

3.2  SamplePairing

SamplePairing方法的处理流程如下图所示,从训练集中随机抽取两张图片分别经过基础数据增强操作(如随机翻转等)处理后经像素取平均值的形式叠加合成一个新的样本,标签为原样本标签中的一种。

640?wx_fmt=png

经SamplePairing处理后可使训练集的规模从N扩增到N*N,在CPU上也能完成处理。

训练过程是交替禁用与使用SamplePairing处理操作的结合:

(1)使用传统的数据增强训练网络,不使用SamplePairing 数据增强训练。

(2)在ILSVRC数据集上完成一个epoch或在其他数据集上完成100个epoch后,加入SamplePairing 数据增强训练。

(3)间歇性禁用 SamplePairing。对于 ILSVRC 数据集,为其中的300000 个图像启用SamplePairing,然后在接下来的100000个图像中禁用它。对于其他数据集,在开始的8个epoch中启用,在接下来的2个epoch中禁止。

(4)在训练损失函数和精度稳定后进行微调,禁用SamplePairing。

实验结果表明,因SamplePairing数据增强操作可能引入不同标签的训练样本,导致在各数据集上使用SamplePairing训练的误差明显增加,而在检测误差方面使用SamplePairing训练的验证误差有较大幅度降低。

尽管SamplePairing思路简单,性能上提升效果可观,符合奥卡姆剃刀原理,遗憾的是的可解释性不强,目前尚缺理论支撑。目前仅有图片数据的实验,还需下一步的实验与解读。

3.3  mixup

mixup是基于邻域风险最小化(VRM)原则的数据增强方法,使用线性插值得到新样本数据。

在邻域风险最小化原则下,根据特征向量线性插值将导致相关目标线性插值的先验知识,可得出简单且与数据无关的mixup公式:

640?wx_fmt=png

其中(xn,yn)是插值生成的新数据,(xi,yi) 和 (xj,yj)是训练集中随机选取的两个数据,λ的取值满足贝塔分布,取值范围介于0到1,超参数α控制特征目标之间的插值强度。

mixup的实验丰富,实验结果表明可以改进深度学习模型在ImageNet数据集、CIFAR数据集、语音数据集和表格数据集中的泛化误差,降低模型对已损坏标签的记忆,增强模型对对抗样本的鲁棒性和训练对抗生成网络的稳定性。

mixup处理实现了边界模糊化,提供平滑的预测效果,增强模型在训练数据范围之外的预测能力。

随着超参数α增大,实际数据的训练误差就会增加,而泛化误差会减少。说明mixup隐式地控制着模型的复杂性。随着模型容量与超参数的增加,训练误差随之降低。

尽管有着可观的效果改进,但mixup在偏差—方差平衡方面尚未有较好的解释。在其他类型的有监督学习、无监督、半监督和强化学习中,mixup还有很大的发展空间。

小结:mixup、SMOTE、SamplePairing三者思路上有相同之处,都是试图将离散样本点连续化来拟合真实样本分布,但所增加的样本点在特征空间中仍位于已知小样本点所围成的区域内。但在特征空间中,小样本数据的真实分布可能并不限于该区域中,在给定范围之外适当插值,也许能实现更好的数据增强效果。

更多,欢迎到知乎专栏去投稿与交流,配套资料将放出在github,可扫描二维码进入。

640?wx_fmt=jpeg

640?wx_fmt=png

打一个小广告,我的计算机视觉公开课《AI 图像识别项目从入门到上线》上线了,将讲述从零基础到完成一个实际的项目到微信小程序上线的整个流程,欢迎交流捧场。

640?wx_fmt=jpeg

参考文献:

[1] Chawla N V, Bowyer K W, Hall L O, et al. SMOTE: synthetic minority over-sampling technique[J]. Journal of Artificial Intelligence Research, 2002, 16(1):321-357.

[2] Inoue H. Data Augmentation by Pairing Samples for Images Classification[J]. 2018.

[3] Zhang H, Cisse M, Dauphin Y N, et al. mixup: Beyond Empirical Risk Minimization[J]. 2017.

如果想加入我们,后台留言吧

640?wx_fmt=jpeg640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=png

微信

Longlongtogo

640?wx_fmt=png

公众号内容

1 图像基础|2 深度学习|3 行业信息

640?wx_fmt=jpeg 640?wx_fmt=jpeg

往期精彩

 

【深度学习图像项目实战-从入门到上线1】怎样学会科学的调研并启动一个项目

 

【技术综述】如何Finetune一个小网络到移动端(时

空性能分析篇)

【技术综述】计算机审美,学的怎么样了?

【干货·课程】言有三的深度学习从入门到上线课程

深度学习中的数据增强 关于计算机视觉领域数据增强的一些常用的方法 为什么需要数据增强 : 一般而言,比较成功的神经网络需要大量的参数,许许多多的神经网路的参数都是数以百万计,而使得这些参数可以正确工作则需要大量的数据进行训练,而实际情况中数据并没有我们想象中的那么多 数据增强的作用 : 增加训练的数据量,提高模型的泛化能力 增加噪声数据,提升模型的鲁棒性 如何获得大量的数据 : 一种方法是获得新的数... 阅读详情

相关推荐

最快最好用的数据增强库「albumentations」 一文看懂用法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

Tina姐的博客 7万+

数据增强(Data Augmentation)常用方法汇总

1、数据增强的作用 1)避免过拟合。当数据集具有某种明显的特征,例如数据集中图片基本在同一个场景中拍摄,使用Cutout方法和风格迁移变化等相关方法可避免模型学到跟目标无关的信息。 2)提升模型鲁棒性,降低模型对图像的敏感度。当训练数据都属于比较理想的状态,碰到一些特殊情况,如遮挡,亮度,模糊等情况容易识别错误,对训练数据加上噪声,掩码等方法可提升模型鲁棒性。 3)增加训练数据,提高模型泛化能力。 4)避免样本不均衡。在工业缺陷检测方...

alex1801 9万+

基于深度学习的小目标检测方法综述

随着深度学习的发展,基于深度学习的目标检测技术取得了巨大的进展,但小目标由于像素少,难以提取有效信息,造成小目标的检测面临着巨大的困难和挑战. 为了提高小目标的检测性能,研究人员从网络结构、训练策略、数据处理等方面展开了大量的研究,并取得了一定的进展. 然而,与大、中目标检测相比,目前小目标的检测性能依然存在着较大的差距. 目标尺度是影响目标检测性能的重要因素之一. 目前,无论在公开数据集还是现实世界采集的图像中,小目标的检测精度远远低于大目标和中等尺度目标,并经常出现漏检和误检. 但小目标检测在许多实际

LTzhiyuan的博客 5906

ImgAug图像增强

imgaug常用图像增强方法总结和效果图展示

AutoMan的博客 1590

数据增强综述及albumentations代码使用

数据增强综述及albumentations使用基于基本图形处理的数据增强 本文涉及到的资料: 1.A survey on Image Data Augmentation for Deep Learning 2.Albumentations: Fast and Flexible Image Augmentations 3.Code 基于基本图形处理的数据增强 1.翻转;2.旋转;3.仿射变换;4.色彩空间(RGB、YUV、CMY、HSV,在图像情感分析中会影响标签。最简单的方法就是只改变一个通道。对比度、直方

qq_41917697的博客 6682

深度学习进行数据增强(实战篇)

对数据增强的代码,帮助大家从文件夹中对图片进行处理,本文的图片增强的代码就举例几个,大家可以在搜寻图像增强的方法加入函数即可.

qq_55383558的博客 1万+

imgaug库图像增强指南(18):【iaa.CoarseDropout】初探——如何为图像添加随机遮挡?

在本博客中,我们将向您详细介绍imgaug库的数据增强方法 —— **CoarseDropout方法**。

创作高质量博文,分享知识,共同进步! 2195

利用CiteSpace实现知网专利文献的高效计量与可视化分析

本文详细介绍了如何利用CiteSpace软件对中国知网(CNKI)的专利文献进行高效的文献计量与可视化分析。文章提供了从数据获取、格式转换、参数设置到图谱解读的完整工作流,旨在帮助研究者快速掌握该工具,从而洞察技术领域的研究热点、核心机构、学者合作网络及发展趋势,提升专利情报分析效率。

weixin_28520495的博客 294

数据增强2

数据增强通常是依赖从现有数据生成新的数据样本来人为地增加数据量的过程。这包括对数据进行不同方向的扰动处理或使用深度学习模型在原始数据的潜在空间(latent space)中生成新数据点从而人为的扩充新的数据集。这里我们需要区分两个概念,即增强数据和合成数据合成数据:指在不使用真实世界图像的情况下人工生成数据,合成数据可由GAN或者现如今大火的AGI技术产生; whaosoft aiot http://143ai.com

whaosoft143ai的博客 1112

EDA课程实验:《数字逻辑电路》实验四___基于Minisys 平台 VIVADO工具与Verilog语言

(4)使用 Verilog HDL 实现一个分频器 clock_div,输入的是系统提供的 100MHz 频率,输出的是 1Hz 频率,占空比是 1:2,(实际上可以用一个加 1 计数器来实现降频,输入的是一个 100MHz 频率的方波,对这 个方波计数 1 亿次刚好到 1 秒(1Hz),题目要求输出频率占空比是 1:2,也就是这个 1Hz 的 方波高电平和低电平各 500ms,可以采用计数到中间值的时候输出电平翻转。(1)1) 拨动 SW1~0 为 01,按下 P4 按钮,GLD1~0 为 01;

ssjy_的博客 1298

通过HTTP的方式克隆GitHub上的项目

通过HTTP的方式克隆GitHub上的项目 打开想要下载的项目的网页链接,点击Clone or download绿色的按钮,进行如下步骤实现通过HTP的方式下载项目。 点击红色框圈出的位置: 打开想要存放项目的文件夹,在空白处点击鼠标右键,选择Git Bash Here,打开命令行。 输入git clone 复制的下载地址,回车进行下载。 4.正在下载的界面 5.下载完成。 技多不压身 哦耶✌✌✌ ...

weixin_37826412的博客 3206

图像分类训练技巧之数据增强总结

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达仅作学术分享,不代表本公众号立场,侵权联系删除转载于:作者丨小小将@知乎(已授权)来源丨https://zhuanlan.zhihu.com/p/430563265编辑丨极市平台一个模型的性能除了和网络结构本身有关,还非常依赖具体的训练策略,比如优化器,数据增强以及正则化策略等(当然也很训练数据强相关,训练数据量往往决定模型性能...

小白学视觉 2249

SuperPoint+SuperGlue在HLoc中的实战效果对比:5大公开数据集测试报告

本文在HLoc框架下,对传统SIFT与深度学习组合SuperPoint+SuperGlue在五大公开数据集上的视觉定位效果进行了实战对比测试。报告详细分析了两种方案在Aachen Day-Night、RobotCar Seasons等不同光照、季节及场景下的表现,揭示了SuperPoint+SuperGlue在应对剧烈光照变化和长期外观变化时的显著优势,并提供了基于HLoc模块化设计的选型与配置策略。

weixin_29093169的博客 425

gan 总结 数据增强_【技术综述】一文道尽深度学习中的数据增强方法(下)

深度学习中的数据增强方法的下篇。我们将从以下几个方向入手。1,介绍一下什么是无监督的数据增强方法。2,简单介绍一下GAN生成数据的应用。3,介绍一下AutoAugment为代表的网络自动学习数据增强策略的方法。4,总结。00 什么是无监督数据增强方法我们先看看什么是有监督的数据增强方法。它指的是生成的图片,是在已有的图片上直接做简单的几何变换,像素变化,或者简单的图片融合,如下。上面的增强方法,都...

weixin_42515372的博客 418

RML2016.10a (CNN、LSTM、CNN-LSTM、CNN-LSTM-Multi-head-attention, TensorFlow)

RML2016.10a (CNN、LSTM、CNN-LSTM、CNN-LSTM-Multi-head-attention, TensorFlow) 包含所有数据和代码,支持一键运行(jupyter)

qq_40999533的博客 1485

Codex入门19-数据库操作(解放双手:用自然语言写SQL、建表和数据迁移)

写 SQL 是后端开发的日常,但复杂的 JOIN、子查询、窗口函数总让人头疼。本文教你用 Codex CLI 实现:自然语言直接生成 CREATE TABLE、复杂 SQL 查询、数据库迁移脚本(Prisma/Knex/Alembic)、ORM 模型代码(SQLAlchemy/TypeORM)、甚至自动生成数据库文档。重点强调安全红线——永远不要让 AI 直接连接生产数据库。从需求描述到完整数据库层代码,一篇搞定。

yueyeguzhuo的专栏 234

深度学习中的各种数据增强方法大全

深度学习中的各种数据增强方法大全

1万+

深入浅出之ADown降采样模块(YOLO)

YOLOv9中的ADown模块是一种用于目标检测任务中的下采样操作的卷积块。在深度学习模型中,下采样(downsampling)是减少特征图空间维度的常用技术,它有助于模型在更高层次上捕捉图像的特征,同时减少计算量。ADown模块的设计旨在以一种高效且对性能影响较小的方式进行这一操作。

浩瀚之水的专栏 4179

一文详细综述数据增强方法(附代码)

导读在深度学习时代,数据的规模越大、质量越高,模型就能够拥有更好的泛化能力,数据直接决定了模型学习的上限。然而在实际工程中,采集的数据很难覆盖全部的场景,比如图像的光照条件,同一场景拍摄...

weixin_40920183的博客 7636

15 君正IPC库开发总结

在前面的章节中,我们介绍了君正ISP、视频采集、音频采集、音频播放、云台电机、移动侦测算法、人形侦测算法、移动跟踪算法等的封装。那么,应用层如何使用这些封装好的接口呢?根据设计模式中的依赖倒置原则:高层次的模块不应该依赖于低层次的模块,它们都应该依赖于抽象。因此,应用层应当只能感知到我们封装的接口类,而不应当感知到其对应的具体实现类。

hope_wisdom的技术博客 1665

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

图像数据增强方法综述

来源:Ustinian - kesci.com 原文链接:数据增强方法综述 导语 在深度学习时代,数据的规模越大、质量越高,模型就能够拥有更好的泛化能力,数据直接决定了模型学习的上限。然而在实际工程中,采集的数据很难覆盖全部的场景,比如图像的光照条件,同一场景拍摄的图片可能由于光线不同就会有很大的差异性,那么在训练模型的时候就需要加入光照方面的数据增强。另一方面,即使拥有大量的数据,也应该进行...

heywhaleshequ的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

数据增强方法及代码

文章目录参考链接摘要什么是数据增强空间几何变换类翻转(Flip)裁剪(crop)旋转(rotate)缩放变形(scale)平移变换(shift)颜色变换类噪声变换类其他图像标准化遮挡实例AlexNetYOLO 参考链接 【技术综述】一文道尽深度学习中的数据增强方法(上) - 简书 https://www.jianshu.com/p/99450dbdadcf 【技术综述】一文道尽深度学习中的数据增强...

洛北辰南的博客 2万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【技术综述】 一文道尽深度学习中的数据增强方法(上)

【技术综述】 一文道尽深度学习中的数据增强方法(上) 今天带来一次有关于深度学习中的数据增强方法的分享。 00什么是数据增强 在深度学习项目中,寻找数据花费了相当多的时间。但在很多实际的项目中,我们难以找到充足的数据来完成任务。 为了要保证完美地完成项目,有两件事情需要做好: 1、寻找更多的数据; 2、数据增强。 本篇主要描述数据增强。 什么是数据增...

weixin_30384217的博客 222

深度学习中的数据增强方法都有哪些?

很多实际的项目,我们都难以有充足的数据来完成任务,要保证完美的完成任务,有两件事情需要做好:(1)寻找更多的数据;(2)充分利用已有的数据进行数据增强。今天就来说说数据增强。 1、什么是数据增强? 数据增强也叫数据扩增,意思是在不实质性的增加数据的情况下,让有限的数据产生等价于更多数据的价值。 比如上图,第1列是原图,后面3列是对第1列作一些随机的裁剪、旋转操作得来。 每张图对于网络来说都...

Mr.Ma-master 2万+

【技术综述】一文道尽深度学习中的数据增强方法(下)

【技术综述】一文道尽深度学习中的数据增强方法(下) 深度学习中的数据增强方法的下篇。我们将从以下几个方向入手。1,介绍一下什么是无监督的数据增强方法。2,简单介绍一下GAN生成数据的应用。3,介绍一下AutoAugment为代表的网络自动学习数据增强策略的方法。4,总结。 00 什么是无监督数据增强方法 我们先看看什么是有监督的数据增强方法。它指的是生成的图片...

weixin_30583563的博客 137

【论文阅读笔记】序列数据的数据增强方法综述

【论文阅读笔记】序列数据的数据增强方法综述

qq_44653420的博客 5986
上一篇: 【干货·课程】言有三的深度学习从入门到上线课程
下一篇: 深度学习之路孤单吗?我们带你进组织!
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值