当前位置: 首页 > 科技观察

如果没有足够的数据怎么办?计算机视觉数据增强方法总结

时间:2023-03-16 00:02:48 科技观察

数据不够用怎么办?学者们针对这个问题开发了各种巧妙的解决方案,以避免深度学习模型中数据较少的问题。最近在活体检测和Kaggle比赛的过程中,发现了很多相关的文献资料,整理后分享给大家。一般解决数据量小的问题有以下几种方法:分类任务。通常,仅复制卷积层中的权重,而不复制包括全连接层在内的整个网络。这是非常有效的,因为许多图像数据集共享低级空间特征,这些特征可以通过大数据更好地学习。Self/SemiSupervisedlearning:传统上,要么选择监督路线,然后只用标记数据学习;或选择无监督路径并丢弃标签进行SelfSupervisedlearning,而SemiSupervisedlearning这样的方法是在训练模型时,只需要使用少量标签和大量未标记数据。Few/One-shot和Zero-shotlearning:Few/One-ShotLearning的目的是从每个类别的少量样本/一个样本中学习对象的特征,而Zero-ShotLearning的核心目标是使用经过训练的模型对训练集中没有出现的类别做出相应的预测。近年来,Few/One-ShotLearning和Zero-ShotLearning技术发展迅速,模型的性能得到了极大的提升。正则化技术:dropout、batchnormalization等正则化方法也可以缓解数据过少导致的过拟合现象。数据扩充:数据扩充是在现有数据的基础上生成新的数据。与上述技术相反,数据增强从问题的根源(训练数据集)开始解决问题。使用数据增强方法扩展数据集,不仅有助于利用有限的数据,还可以增加训练集的多样性,减少过拟合,提高模型的泛化能力。在本文中,我们将重点关注DataAugmentation,因为计算机视觉是当前研究领域中最活跃的领域之一,所以本文更侧重于图像增强,但其中许多技术可以应用于其他领域。我们将图像数据增强分为以下四类:BasicImageGeometricTransformationsColorSpaceTransformationsRandomRrase/GridMaskMixup/CutmixMosaicFeaturespaceaugmentationMoExGAN-basedDataAugmentationNASAutoAugmentFastAutoAugmentDADAOtherUDA这是对图像进行几何变换,图像翻转、裁剪、旋转和平移等。您还可以使用对比度、锐化、白平衡、颜色抖动、随机颜色处理和许多其他技术来改变图像的颜色空间。此外,还可以使用遮挡类的方法,如CutOut、RandomRarse、GridMask。Cutmix是切掉一部分区域但不是填充0像素而是随机填充训练集中其他数据的区域像素值。分类结果按一定比例分配。CutMix的操作使模型能够从图像的局部视图中进行识别。提高训练效率有两个目标。在YOLOV4论文中提出了Mosaic数据增强方法。主要思路是随机裁剪四张图片拼接成一张图片作为训练数据。这样做的好处是可以丰富画面的背景。许多深度学习框架都实现了基本的图增强方法,例如torchvision。还有一些更全面、更丰富的数据扩充库,比如相册等。特征空间扩展论文题目:OnFeatureNormalizationandDataAugmentation(MoEx)论文链接:https://arxiv.org/abs/2002.11102代码链接:https://github.com/Boyiliee/MoEx在上面的例子中,我们执行图像空间中的变换,以及特征空间中的变换。在神经网络的帮助下,我们可以非常有效地以低维或高维形式表示图像,这样中间的潜在张量就包含了数据集的所有信息,可以被提取出来做各种事情,包括数据增强.MoEx文章的作者尝试增强特征空间。具体方法如下图所示:1.将hA归一化为h^A,然后计算hB的μB、σB2。然后将h^A反规范化如下:3.使用新的损失函数计算损失:MoEx实验包括:ImageNet、SpeechCommands、IWSLT2014、ModelNet40等,可以说涵盖了图像、NLP、和嗓音。可见其优势是显而易见的。由于数据增强是在特征空间进行的,因此不受输入数据类型的限制,对图像、音频、文本等数据具有通用性。基于GAN的DataAugmentation生成建模是目前最热门的技术之一。生成模型学习数据的分布,而不是数据之间的边界,因此可以生成全新的图像。GAN由两个网络组成:生成器和鉴别器。生成器的工作是生成仅以噪声作为输入的假数据。鉴别器接收真实图像和假图像(由生成器生成)作为输入,并学习识别图像是假的还是真实的。随着这两个网络相互竞争,生成器在对抗训练期间生成图像的能力越来越强,因为最终目标是愚弄鉴别器,鉴别器在区分假货和真实图像方面做得更好。它变得越来越好,因为它的目标是不被欺骗,最终生成器会生成非常真实的假数据。需要注意的是,GAN生成的数据要因地制宜。据说同学们双击本文右下角会有奇效(哈哈)。论文标题:使用生成对抗网络进行数据增强的情感分类。论文链接:https://arxiv.org/abs/1711.00648本文验证了GAN在情感识别中数据增强的有效性。情绪识别数据集FER2013包含7种不同的情绪:愤怒、厌恶、恐惧、快乐、悲伤、惊讶和中性,类是不平衡的。本文使用CycleGAN将其他几个类的图像转化为少数类的样本,使模型的准确率提高了5-10%。论文题目:UnlabeledSamplesGeneratedbyGANImprovethePersonRe-identificationBaselineinvitro论文链接:https://arxiv.org/abs/1701.07717代码链接:https://github.com/layumi/Person-reID_GAN这篇文章是当时是个好主意。如果没有ReIDGAN,那就用原始数据训练一个GAN,然后生成一张图片,用ReID网络生成一个没有标签的伪标签。这样,它就从监督学习转变为半监督学习。基于NAS的DataAugmentation数据增强方法已经广泛应用于各个领域,但即使在一些特定的数据集上找到了合适的数据增强方法,这些方法通常也无法有效地迁移到其他数据集上。例如,在训练过程中水平翻转图像在CIFAR-10数据集上是一种有效的数据增强方法,但由于不同数据集的对称性要求不同,在MNIST上则不是。因此,让网络自主寻找数据增强方法,逐渐成为学术和工程上不可或缺的需求。谷歌DeepMind率先提出AutoAugmentusingNAS方法,利用数据集在数据增强策略搜索空间中评估特定策略的好坏,自动搜索合适的数据增强策略。相关文献还包括:FastAutoAugment和DADA等。论文题目:AutoAugment:SearchingforbestAugmentationpoliciesDirectlyontheDatasetofInterest论文链接:https://arxiv.org/abs/1805.09501代码链接:https://github.com/tensorflow/models/tree/master/research/autoaugmentAutoAugment是谷歌提出的自动选择最优数据增强方案的研究。其基本思想是利用强化学习从数据本身寻找最佳的图像变换策略,针对不同的任务学习不同的增强方法。它是这样工作的:AutoAugment的控制器决定当前看起来最好的增强策略,并通过在特定数据集的子集上运行子实验来测试该策略的泛化能力。子实验完成后,使用近端策略优化算法(ProximalPolicyOptimizationalgorithm,PPO)对控制器进行更新,以验证集的准确率作为更新信号。控制器总共有30个softmax分别预测5个子策略的决策,每个子策略有2个动作,每个动作需要动作类型、幅度和概率。数据增强操作有16个搜索空间:ShearX/Y、TranslateX/Y、Rotate、AutoContrast、Invert、Equalize、Solarize、Posterize、Contrast、Color、Brightness、Sharpness、Cutout、SamplePairing。在实验中发现,现有的AutoAugment学习到的数据增强组合策略,对于门牌号识别等任务,研究表明剪切和平移等几何变换可以达到最好的效果。对于ImageNet中的图像分类任务,AutoAugment学会了不使用裁剪,也不完全反转颜色,因为这些变换会使图像失真。AutoAugment学习的重点是微调颜色和色调分布。AutoAugment的方法在许多数据集上实现了最先进的性能。在CIFAR-10上,错误率仅为1.48%,比之前的state-of-the-art方法高出0.65%;在SVHN上,state-of-the-art的错误率从1.30%提高到1.02%;在一些减少的数据集上,在不使用任何未标记数据的情况下实现了与半监督方法相当的性能;在ImageNet上,达到了前所未有的83.54%的准确率。其他在上面我们介绍了一些针对监督数据的数据增强方法,但是针对监督数据的数据增强大多被认为是“蛋糕上的樱桃”,因为它虽然提供了稳定但有限的性能提升,下面介绍一种数据增强方法在半监督技术将被介绍。论文标题:UnsupervisedDataAugmentationforConsistencyTraining(UDA)论文链接:https://arxiv.org/abs/1904.12848代码链接:https://github.com/google-research/udaUDA训练过程如图下面:1。最小化未标记数据与增强未标记数据上预测分布的KL差异:其中x是原始未标记数据的输入,x^是未标记数据的增强(如:图像上的裁剪、旋转、文本反译后的数据)。2.为了同时使用有标签数据和无标签数据,加入了(1)中定义的有标签数据的SupervisedCross-entropyLoss和consistency/smoothnessgoal的UnsupervisedConsistencyLoss,权重因子λ为我们的训练goal,最终目标的一致性损失函数定义如下:另外,为了解决未标记数据和标记数据不平衡导致的数据过拟合问题,UDA提出了一种新的训练技术TrainingSignalAnnealing(TSAfor简而言之),TSA的思想是随机的随着模型在越来越多的未标记数据上训练,逐渐减少标记数据上的训练信号而不会使它们过拟合。就实验结果而言,UDA在很大程度上优于现有的半监督学习方法。小结众所周知,深度学习模型训练依赖于大量的数据。没有训练数据,即使是好的算法在很大程度上也是无效的。本文总结了几种常见的解决小数据量问题的方法,并对Dataaugment做了详细的总结,希望对大家有所帮助。