YOLOv4 中的数据增强

小白学视觉

共 2927字,需浏览 6分钟

 ·

2021-05-05 10:25



点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达



本文转自:机器学习算法那些事

导读

YOLOv4的秘密并不在网络结构上,而在数据准备上。


目标检测领域继续快速发展。不到两个月前,谷歌Brain团队发布了针对物体检测的EfficientDet,挑战了YOLOv3作为(接近)实时物体检测的首要模型的地位,并推动了物体检测的可能性。我们写了一系列的文章,比较YOLOv3和EfficientDet,在自定义的数据上训练YOLOv3,在自定义的数据上训练EfficientDet,我们发现了令人印象深刻的结果。

发布的YOLOv4显示,COCO的平均精度(AP)和每秒帧数(FPS)分别提高了10%和12%。在这篇文章中,我们将看到作者是如何通过深入研究YOLOv4中使用的数据增强技术的细节来实现这一突破的。

马赛克增强的发明人Glen Jocher发布了一个名为YOLOv5的新的YOLO训练框架。你可能还想看看我们关于YOLOv5 vs YOLOv4的文章,这篇文章将解释新的YOLOv5框架的一些优点。

YOLOv4的Freebies都有些什么?


YOLOv4的作者在他们题为 “bag of freebies” 的论文中包括了一系列的贡献。这是一系列可以在不增加推断时间延迟的情况下提高模型性能的步骤。由于它们不影响模型的推断时间,所以大多数都是对训练pipeline的数据管理和数据增强进行了改进。这些技术改进并增强了训练集,让模型可以看到原本看不到的场景。计算机视觉中的数据增强是充分利用数据集的关键,最新的研究继续验证这个假设。

计算机视觉中的数据增强


图像增强从现有的训练数据中创建新的训练样本。不可能真正为我们的模型在推理中要看到的每个真实场景捕捉一个图像。因此,调整现有的训练数据以适用于其他情况,可以使模型从更广泛的情况中学习。

YOLOv4的作者列举了一些最终让他们加入bag of freebies的技术。我们在下面提供一个概述。

畸变


光照畸变 — 这包括在一个图像中改变亮度,对比度,饱和度和噪声。

调整图像亮度

几何畸变 — 这包括随机缩放,裁剪,翻转,和旋转。这些类型的增强可能特别棘手,因为包围框也会受到影响,并且必须更新。

翻转图像

这两种方法都是像素级调整,也就是说通过一系列变换可以很容易地恢复原始图像。

图像遮挡


随机擦除 — 这是一种数据增强技术,将图像的区域替换为随机值,或者是训练集的平均像素值,通常采用不同比例的擦除图像和擦除区域的高宽比来实现。在功能上,这成为了一种正则化技术,它可以防止我们的模型记忆训练数据和过拟合。

Cutout —  在训练中掩盖一个正方形区域。Cutout 区域只对CNN的第一层隐藏。这与随机擦除非常相似,但是在遮挡中使用的是一个常数值。目的是相似的:减少过拟合。

Hide and Seek — 将图像分割成一个由SxS patch组成的网格。以一定的概率隐藏每个补丁(p_hide)。这允许模型了解物体的样子,而不只是学习物体的单个部分是什么样子。

Grid Mask — 图像的区域被隐藏在一个网格中。类似于捉迷藏,这迫使我们的模型学习组成物体的组成部分。

MixUp — 图像对及其标签的凸叠加。

YOLOv4中使用的数据增强策略


现在我们将了解一下YOLOv4在训练期间使用的数据增强策略。研究过程的特点是一系列的实验,所以我们可以想象,作者实验了更多的策略,但没有进入最终的论文。这进一步证明,在自定义视觉任务中,在自己的训练/测试集上探索各种数据增强策略是很重要的。

CutMix — 通过从一个图像中切割一部分并将其粘贴到增强图像上来组合图像。图像的裁剪迫使模型学会基于大量健壮的特征进行预测。看上面的 “Hide and Seek”,没有裁剪,模型特别依赖狗的头来做预测。如果我们想准确地识别一只头藏在灌木丛后面的狗,这就有问题了。在CutMix中,用另一幅图像的一部分以及第二幅图像的ground truth标记替换该切块。在图像生成过程中设置每个图像的比例(例如0.4/0.6)。在下面的图片中,你可以看到CutMix的作者是如何演示这种技术比简单的MixUp和Cutout效果更好。

马赛克数据增强 — 马赛克数据增强将4张训练图像按一定比例组合成1张。Mosaic是YOLOv4中引入的第一个新的数据增强技术。这使得模型能够学习如何识别比正常尺寸小的物体。它还鼓励模型在框架的不同部分定位不同类型的图像。

类标签平滑 — 类标签平滑不是一个图像处理技术,而是一个直观的对类标签的改变。通常情况下,正确的边界框分类是用类的独热向量[0,0,0,1,0,0,…]来表示,并据此计算损失函数。然而,当一个模型的预测值接近1.0时,它往往会出现错误、过拟合以及在某种程度上过度关注其他预测的复杂性。根据这种直觉,对类标签表示进行编码以在某种程度上衡量不确定性更为合理。通常情况下,作者选择0.9,所以用[0,0,0,0.9,0…]来代表正确的类。

自对抗训练(SAT) — 该技术通过对输入图像的变换,利用模型的状态来通知漏洞。首先,图像经过一个正常的训练步骤。然后,与其通过权重向后传播,损失信号被用来以一种对模型最有害的方式改变图像。在随后的训练中,模型被迫面对这个特别困难的例子并学习它。在我们这里介绍的技术中,这一技术可能是最不直观的,也是最接近于建模方面的技术。

🎉现在我们有一个YOLOv4中数据增强技术的全面的视图!


下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


浏览 34
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报