训练数据较少时如何生成更多的数据
在图像和物体识别方面,计算机表现优于人类。
像Google和Microsoft这样的大公司在图像识别方面已经超越了人类基准[1,2]。平均而言,人类大约有5%的时间在图像识别任务上犯了错误。截至2015年,微软的图像识别软件的错误率达到4.94%,与此同时,谷歌宣布其软件的错误率降低到4.8%[3]
这是怎么做到的?
这可以通过在包含数百个对象类别、数百万个训练样本的ImageNet数据集上训练深度卷积神经网络来实现[1]。
百万训练数据!
例如,要教计算机从多个角度识别出一只猫猫,可能需要成千上万张涵盖不同角度的照片。
成功训练计算机视觉任务的深层卷积神经网络需要大量数据。这是因为这些神经网络具有多个隐藏的处理层,并且随着层数的增加,需要学习的样本数也随之增加。如果没有足够的训练数据,则该模型往往会很好地学习训练数据,这称为过度拟合。如果模型过拟合,则其泛化能力很差,因此对未见的数据的表现很差。
但是,如果没有大量的训练数据怎么办?
对于我们手头的所有图像识别任务,并不是都会拥有数百万个训练样本。对于某些任务,收集成千上万个样本图像甚至是一个挑战。对于医学图像而言通常是这种情况,例如用于乳房癌检测和定位的乳房X线照相术,用于肺癌检测的胸部X射线或用于定位脑肿瘤的MRI扫描。
这可以归结为一个问题:当我们只有有限的数据时,我们如何训练能够很好地完成这些任务的模型?
使用数据增强(data augmentation)生成更多训练数据
当我们只有少量图像数据用于训练深度卷积神经网络时,我们可以使用数据增强技术从已经拥有的图像数据中生成更多训练数据。
数据增强是一种为原始图像生成多个图像的技术。有几种不同的数据增强技术,Mikolajczyk和Grochowski在他们的论文中[4]将这些技术分为两个子类别:使用基本图像处理的数据增强和使用深度学习方法的数据增强。
几何变换
诸如翻转(Flip),裁剪(Crop),旋转(Rotation)和移位(Translation)之类的几何变换是一些常用的数据增强技术。我们将在本文中简要讨论它们。
翻转
翻转是取任意给定图像的镜像。它是最简单的增强技术之一。图像可以水平或垂直翻转。但是,水平翻转在这两者之间更为常见。
裁剪
裁剪是一种数据增强技术,用于通过裁剪边界像素来减小原始图像的大小。裁剪时不会保留空间尺寸。在这种类型的数据增强中,不能保证转换后的图像与原始图像属于相同的输出标签。
在上面的图像中,通过从左右方向裁剪像素,从原始图像生成了四个图像。裁剪图像的尺寸从256x256减小到227x277。
旋转
图像可以在轴上向左或向右旋转1到359度。1到20度之间的旋转称为轻微旋转,并且是用于增强原始图像的有用技术。随着旋转度的增加,转换后的数据可能无法保留其原始标签。
移位
翻译是一种将图像向左,向右,向上或向下平移的技术。这是一种非常有用的转换技术,可以避免数据中的位置偏差。移位图像时,剩余空间将被填充为0,255或被随机噪声填充,从而保留了图像的原始大小。
基于GAN的数据增强
生成对抗网络(GAN)也称为GAN,是一种生成建模技术,其中可以从数据集中创建人工实例,从而保留原始集的相似特征[9]。
GAN由两个相互竞争的人工神经网络(ANN)组成,即生成器 generator 与判别器 discriminator。生成器创建新的数据实例,而判别器则评估它们的真实性[10]。
这是由GAN生成的人脸图像,这是在人脸上训练出来的。请注意,这些是合成的面孔,而不是真实的人。
这些是一些数据增强技术,通常用于从有限的数据集中生成更多数据,从而可以训练出更有效的卷积神经网络。
Olaf和他的团队在训练数据有限的情况下,利用在图像上的平移、旋转和随机弹性变换等数据增强技术训练U-net体系结构模型,并在2015年ISBI细胞追踪挑战中以较大优势获得这些类别的冠军。
因此,下次在训练卷积神经网络时,请使用这些技术来创建更多数据。
你平时使用了哪些数据增强技术?在下面评论分享的想法。
引用
[1] https://www.eetimes.com/document.asp?doc_id=1325712
[2] https://venturebeat.com/2017/12/08/6-areas-where-artificial-neural-networks-outperform-humans/
[3] https://www.theguardian.com/global/2015/may/13/baidu-minwa-supercomputer-better-than-humans-recognising-images
[4] Mikolajczyk, A., & Grochowski, M. (2018). Data augmentation for improving deep learning in image classification problem. 2018 International Interdisciplinary Phd Workshop (Iiphdw). doi: 10.1109/iiphdw.2018.8388338
[5] Perez, L., & Wang, J. (2017). The efectiveness of data augmentation in image classifcation using deep learning. Stanford University Research Report.
[6] https://snow.dog/blog/data-augmentation-for-small-datasets
[7] https://www.learnopencv.com/understanding-alexnet/
[8] https://nanonets.com/blog/data-augmentation-how-to-use-deep-learning-when-you-have-limited-data-part-2/
[9] Shorten, C., & Khoshgoftaar, T. (2019). A survey on Image Data Augmentation for Deep Learning. Journal Of Big Data, 6(1). doi: 10.1186/s40537–019–0197–0
[10] Henrique, F., & Aranha, C. (2019). Data Augmentation Using GANs. Proceedings Of Machine Learning Research.
[11] Ronneberger, O., Fischer, P., & Brox, T. (2015). U-Net: Convolutional Networks for Biomedical Image Segmentation.