计算机视觉的数据增广技术大盘点!附涨点神器,已开源!

网友投稿 709 2022-05-28

如果要把深度学习开发过程中几个环节按重要程度排个序的话,相信准备训练数据肯定能排在前几位。要知道一个模型网络被编写出来后,也只是一坨代码而已,和智能基本不沾边,它只有通过学习大量的数据,才能学会如何作推理。因此训练数据其实和一样东西非常像!——武侠小说中的神功秘笈,学之前菜鸟一只,学之后一统江湖!

下文所有的代码都来自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

变换结果如下图所示。

02

RandAugment

变换结果如下图所示。

图像裁剪类

图像裁剪类主要是对Transpose 后的 224 的图像进行一些裁剪,即裁剪掉部分图像,或者也可以理解为对部分图像做遮盖,共有CutOut、RandErasing、HideAndSeek和GridMask四种方法。

03

Cutout

通过 Cutout 可以模拟真实场景中主体被部分遮挡时的分类场景。

可以促进模型充分利用图像中更多的内容来进行分类,防止网络只关注显著性的图像区域,从而发生过拟合。

裁剪结果如下图所示:

04

RandomErasing

裁剪结果如下图所示。

05

HideAndSeek

PaddleClas中HideAndSeek的使用方法如下所示:

裁剪结果如下图所示。

06

GridMask

过度删除区域可能造成目标主体大部分甚至全部被删除,或者导致上下文信息的丢失,导致增广后的数据成为噪声数据;

保留过多的区域,对目标主体及上下文基本产生不了什么影响,失去增广的意义。

设置一个概率p,从训练开始就对图片以概率p使用GridMask进行增广。

一开始设置增广概率为0,随着迭代轮数增加,对训练图片进行GridMask增广的概率逐渐增大,最后变为p。

结果如下图所示:

图像混叠

前文所述的图像变换与图像裁剪都是针对单幅图像进行的操作,而图像混叠是对两幅图像进行融合,生成一幅图像,Mixup和Cutmix两种方法的主要区别为混叠的方式不太一样。

07

Mixup

混叠结果如下图所示。

08

Cutmix

混叠结果如下图所示:

计算机视觉的数据增广技术大盘点!附涨点神器,已开源!

实验

经过实验验证,在ImageNet1k数据集上基于PaddleClas使用不同数据增广方式的分类精度如下所示,可见通过数据增广方式可以有效提升模型的准确率。

机器视觉 AI

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:创龙OMAPL138 PRU开发例程
下一篇:php四种文件加载语句
相关文章