[深度学习] 增加样本——弹性变换算法实现

我们都知道,深度学习的成功的原因主要有两点:
(1)当前计算机的计算能力有很大提升;
(2)随着大数据时代的到来,当前的训练样本数目有很大的提升。
然而深度学习的一大问题是,有的问题并没有大量的训练数据,而由于深度神经网络具有非常强的学习能力,如果没有大量的训练数据,会造成过拟合,训练出的模型难以应用。

因此对于一些没有足够样本数量的问题,可以通过已有的样本,对其进行变化,人工增加训练样本。

对于图像而言,常用的增加训练样本的方法主要有对图像进行旋转、移位等仿射变换,也可以使用镜像变换等等,这里介绍一种常用于字符样本上的变换方法,弹性变换算法(Elastic Distortion)。该算法最先是由Patrice等人在2003年的ICDAR上发表的《Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis》提出的,最开始应用在mnist手写体数字识别数据集中,发现对原图像进行弹性变换的操作扩充样本以后,对于手写体数字的识别效果有明显的提升。当前也有很多人把该方法应用到手写体汉字的识别问题中,是一种很普遍的扩充字符样本图像的方式。

下面来详细介绍一下算法流程:

(1)首先需要对图像中的每个像素点(x,y)产生两个-1~1之间的随机数,Δx(x,y)和Δy(x,y),分别表示该像素点的x方向和y方向的移动距离;

(2)生成一个以0为均值,以σ为标准差的高斯核k_nn,并用前面的随机数与之做卷积,并将结果作用于原图像。

作者在这里提出σ的大小与弹性变换的处理结果息息相关,如果σ过小,则生成的结果类似与对图像每个像素进行随机移动,而如果σ过大,则生成的结果与原图基本类似。

但是作者在文中并没有解释高斯核k_nn中n的大小对图像处理结果的影响,下面我的操作结果以n和σ为变量,进行了实验,我的原图是573*573大小,产生的卷积结果实验结果Δx(x,y)和Δy(x,y)各自扩大了100倍(因为Δx(x,y)和Δy(x,y)是-1~1的,如果不扩大的话基本看不出变化),实验结果如下图所示:

  • 15
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值