YOLOv4中的数据增强

导读

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中数据增强技术的全面的视图!

在你自己的计算机视觉项目中使用数据增强

我们很高兴地看到,模型性能方面的进步很关注数据的增强,就像关注模型架构一样。在看到YOLOv4和YOLOv3在数据增强方面的区别后,我们怀疑这些 “bag of freebie” 技术对任何架构都有用。

—END—

英文原文:https://towardsdatascience.com/data-augmentation-in-yolov4-c16bd22b2617

读者,你好!我们建立人工智能交流学习群,欢迎进群学习讨论!你可以加我的微信,拉你进群!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:原理与源码解析》,课程链接 https://edu.csdn.net/course/detail/29865【为什么要学习这门课】 Linux创始人Linus Torvalds有一句名言:Talk is cheap. Show me the code. 冗谈不够,放码过来!  代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。【课程内容与收获】 本课程将解析YOLOv4的实现原理和源码,具体内容包括:- YOLOv4目标检测原理- 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算- 代码阅读工具及方法- 深度学习计算的利器:BLAS和GEMM- GPU的CUDA编程方法及在darknet的应用- YOLOv4的程序流程- YOLOv4各层及关键技术的源码解析本课程将提供注释后的darknet的源码程序文件。【相关课程】 除本课程《YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括:《YOLOv4目标检测实战:训练自己的数据集》《YOLOv4-tiny目标检测实战:训练自己的数据集》《YOLOv4目标检测实战:人脸口罩佩戴检测》《YOLOv4目标检测实战:国交通标志识别》建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。【YOLOv4网络模型架构图】 下图由白勇老师绘制  
需要学习ubuntu系统上YOLOv4的同学请前往:《YOLOv4目标检测实战:原理与源码解析》 【为什么要学习这门课】 Linux创始人Linus Torvalds有一句名言:Talk is cheap. Show me the code. 冗谈不够,放码过来! 代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。【课程内容与收获】 本课程将解析YOLOv4的实现原理和源码,具体内容包括:- YOLOv4目标检测原理- 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算- 代码阅读工具及方法- 深度学习计算的利器:BLAS和GEMM- GPU的CUDA编程方法及在darknet的应用- YOLOv4的程序流程- YOLOv4各层及关键技术的源码解析本课程将提供注释后的darknet的源码程序文件。【相关课程】 除本课程《Windows版YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括:《Windows版YOLOv4目标检测实战:训练自己的数据集》《Windows版YOLOv4-Tiny目标检测实战:训练自己的数据集》《Windows版YOLOv4目标检测实战:人脸口罩佩戴检测》《Windows版YOLOv4目标检测实战:国交通标志识别》建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。【YOLOv4网络模型架构图】 下图由白勇老师绘制  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值