计算机视觉的数据增广技术大盘点!附涨点神器,已开源!
【摘要】 如果要把深度学习开发过程中几个环节按重要程度排个序的话,相信准备训练数据肯定能排在前几位。要知道一个模型网络被编写出来后,也只是一坨代码而已,和智能基本不沾边,它只有通过学习大量的数据,才能学会如何作推理。因此训练数据其实和一样东西非常像!——武侠小说中的神功秘笈,学之前菜鸟一只,学之后一统江湖!但很可惜的是,训练数据和秘笈还有一个特点很相似,那就是可遇而不可求!也就是说很难获取,除了那些公...
如果要把深度学习开发过程中几个环节按重要程度排个序的话,相信准备训练数据肯定能排在前几位。要知道一个模型网络被编写出来后,也只是一坨代码而已,和智能基本不沾边,它只有通过学习大量的数据,才能学会如何作推理。因此训练数据其实和一样东西非常像!——武侠小说中的神功秘笈,学之前菜鸟一只,学之后一统江湖!
下文所有的代码都来自PaddleClas:
GitHub 链接:
https://github.com/PaddlePaddle/PaddleClas
Gitee 链接:
https://gitee.com/paddlepaddle/PaddleClas
8大数据增广方法
首先咱们先来看看以ImageNet图像分类任务为代表的标准数据增广方法,该方法的操作过程可以分为以下几个步骤:
-
图像解码,也就是将图像转为Numpy格式的数据,简写为 ImageDecode。 -
图像随机裁剪,随机将图像的长宽均裁剪为 224 大小,简写为 RandCrop。 -
水平方向随机翻转,简写为 RandFlip。 -
图像数据的归一化,简写为 Normalize。 -
图像数据的重排。图像的数据格式为[H, W, C](即高度、宽度和通道数),而神经网络使用的训练数据的格式为[C, H, W],因此需要对图像数据重新排列,例如[224, 224, 3] 变为 [3, 224, 224],简写为 Transpose。 -
多幅图像数据组成 batch 数据,如 BatchSize 个 [3, 224, 224] 的图像数据拼组成 [batch-size, 3, 224, 224],简写为 Batch。
-
图像变换类:对 RandCrop 后的 224 的图像进行一些变换,包括AutoAugment和RandAugment。 -
图像裁剪类:对Transpose 后的 224 的图像进行一些裁剪,包括CutOut、RandErasing、HideAndSeek和GridMask。 -
图像混叠:对 Batch 后的数据进行混合或叠加,包括Mixup和Cutmix。
图像变换类
01
AutoAugment
论文地址:
https://arxiv.org/abs/1805.09501v1
变换结果如下图所示。
02
RandAugment
变换结果如下图所示。
图像裁剪类
图像裁剪类主要是对Transpose 后的 224 的图像进行一些裁剪,即裁剪掉部分图像,或者也可以理解为对部分图像做遮盖,共有CutOut、RandErasing、HideAndSeek和GridMask四种方法。
03
Cutout
论文地址:
https://arxiv.org/abs/1708.04552
-
通过 Cutout 可以模拟真实场景中主体被部分遮挡时的分类场景。 -
可以促进模型充分利用图像中更多的内容来进行分类,防止网络只关注显著性的图像区域,从而发生过拟合。
裁剪结果如下图所示:
04
RandomErasing
论文地址:
https://arxiv.org/pdf/1708.04896.pdf
裁剪结果如下图所示。
05
HideAndSeek
论文地址:
https://arxiv.org/pdf/1811.02545.pdf
PaddleClas中HideAndSeek的使用方法如下所示:
裁剪结果如下图所示。
06
GridMask
论文地址:
https://arxiv.org/abs/2001.04086
-
过度删除区域可能造成目标主体大部分甚至全部被删除,或者导致上下文信息的丢失,导致增广后的数据成为噪声数据; -
保留过多的区域,对目标主体及上下文基本产生不了什么影响,失去增广的意义。
-
设置一个概率p,从训练开始就对图片以概率p使用GridMask进行增广。 -
一开始设置增广概率为0,随着迭代轮数增加,对训练图片进行GridMask增广的概率逐渐增大,最后变为p。
结果如下图所示:
图像混叠
前文所述的图像变换与图像裁剪都是针对单幅图像进行的操作,而图像混叠是对两幅图像进行融合,生成一幅图像,Mixup和Cutmix两种方法的主要区别为混叠的方式不太一样。
07
Mixup
混叠结果如下图所示。
08
Cutmix
论文地址:
https://arxiv.org/pdf/1905.04899v2.pdf
混叠结果如下图所示:
实验
经过实验验证,在ImageNet1k数据集上基于PaddleClas使用不同数据增广方式的分类精度如下所示,可见通过数据增广方式可以有效提升模型的准确率。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)