数据空间
您当前的位置: 首页 /数据知识

图像数据增强方法一览(附python代码)

发布时间:[2018-09-27] 来源:编辑:hely
点击量:

中国企业数据治理联盟www.chinaedg.com/

进入》主数据管理      企业数据治理     信息资源规划      数据安全管理

在图像分类任务中,图像数据增强一般是大多数人会采用的方法之一,这是由于深度学习对数据集的大小有一定的要求,若原始的数据集比较小,无法很好地满足网络模型的训练,从而影响模型的性能,而图像增强是对原始图像进行一定的处理以扩充数据集,能够在一定程度上提升模型的性能。
本文是我目前正在研究一项内容,总结图像数据增强的一些方法及其有效性。本研究的目的是学习如何增加训练数据集的大小,通过有限或少量数据来训练获得具有鲁棒性的卷积网络模型。

这项研究要求列出我们可以想到的所有图像增强方法,并列举出所有这些组合,以尝试和改善图像分类模型的性能。那么,能够想到的一些最简单的增强方法有翻转、平移、旋转、缩放,分离单个rgb三个颜色通道以及添加噪声。更激动人心的增强方法是比较热门的使用生成对抗网络模型,有时交替使用遗传算法和生成对抗网络。此外,还提出了一些创造性方法,例如将类似于Instagram中的高亮滤镜应用于图像、应用随机区域锐化滤镜,以及基于聚类技术添加平均图像等。本文将展示如何使用NumPy对图像进行扩充。

下面是上述提到的增强技术的总结及说明,如果你能想到其它任何方法来增强图像,并可以提高图像分类器的性能,请在留言区评论。

9.jpg

原始图像

增强

所有的数据增强都是在没有OpenCV库的情况下,使用Numpy完成。

10.jpg

翻转|Flipping

对图像进行翻转是最流行的图像数据增强方法之一。这主要是由于翻转图像操作的代码简单,以及对于大多数问题而言,对图像进行翻转操作能够提升模型的性能。下面的模型可以被认为是看到左鞋而不是右鞋,因此通过这种数据增加,模型对于看到鞋的潜在变化会变得更加鲁棒。

11.jpg

12.jpg

平移|Translations

很容易想象对完成检测任务的分类器进行平移增强能够提升其性能,好像这个分类模型试图检测鞋子何时在图像中而不是是否在图像中。这些平移操作将有助于它在无法看清整个鞋子的情况下认出鞋子来。

13.jpg

左移

14.jpg

15.jpg

右移

16.jpg

17.jpg

上移

18.jpg

19.jpg

下移

20.jpg

加噪|Noise

对图像加噪音是一种有趣的图像增强技术,现在我开始对这类操作变得更加熟悉。我已经看过很多关于对抗网络训练的有趣论文,当将一些噪音加入到图像后,模型无法对图像进行正确分类。我仍然在寻找能产生比下图更好的加噪方法。添加噪声可能有助于使得畸变更加明显,并使得模型更加鲁棒。

21.jpg

加噪

22.jpg

生成对抗网络|GAN

我阅读了很多关于生成对抗网络的文献,文献中很多都使用生成对抗网络进行数据增强,我对此也比较感兴趣,下面是我使用MNIST数据集生成的一些图像。

23.jpg

GAN生成图像

正如我们从上图中看到的,它们确实看起来像数字379,但实际上,将其送进数字手写体分类器中,它们并不能被识别为对应的数字。

感谢你阅读本文,希望你现在知道如何实现对基本数据进行扩充,以改进自己搭建的分类模型!

Connor Shorten,对深度学习、算法理论和生物信息学感兴趣

文章原标题《Image Augmentation Examples in Python》,译者:海棠


发表评论 共有条评论
用户名: 密码:
匿名发表