YOLOv4论文翻译及总结

借鉴文章:https://zhuanlan.zhihu.com/p/143747206
自己关于YOLO-YOLOv3的记录链接:
YOLO系列网络原理
YOLOv4资源链接:
论文:添加链接描述
代码:python代码:https://github.com/Tianxiaomo/pytorch-YOLOv4
c++代码:https://github.com/AlexeyAB/darknet
python版本的Tensorrt代码:
https://github.com/hunglc007/tensorflow-yolov4-tflite
c++版本的Tensorrt代码:
https://github.com/hunglc007/tensorflow-yolov4-tflite

但我觉得算法创新分为三种方式:

  1. 第一种:面目一新的创新,比如Yolov1、Faster-RCNN、Centernet等,开创出新的算法领域,不过这种也是最难的
  2. 第二种:守正出奇的创新,比如将图像金字塔改进为特征金字塔
  3. 第三种:各种先进算法集成的创新,比如不同领域发表的最新论文的tricks,集成到自己的算法中,却发现有出乎意料的改进

Yolov4既有第二种也有第三种创新,组合尝试了大量深度学习领域最新论文的20多项研究成果
为了便于分析,将Yolov4的整体结构拆分成四大板块:
在这里插入图片描述

创新主要在以下四个部分:

  1. 输入端:主要是训练时对输入端的改进,主要包括Mosaic数据增强、cmBN、SAT自对抗训练
  2. BackBone主干网络:将各种新的方式结合起来,包括:CSPDarknet53,Mish激活函数、Dropblock
  3. Neck:目标检测网络在BackBone和最后的输出层之间往往会插入一些层,比如YoloV4的SSP模块、FPR+PAN结构
  4. Prediction预测输出端:输出层的锚框机制和YOLOv3相同,主要改进的损失函数CIOU_Loss,以及预测框删选的nms变为DIOU_nms

YOLOv4对YOLOv3的各个部分都进行了改进优化,下面作者的算法对比图。
在这里插入图片描述

输入端创新

(1)Mosaic数据增强

Mosiac是基于2019年底提出的CutMix数据增强的方式,但CutMix只使用了两张图片进行拼接,而Mosaic数据增强则采用了4张图片,随机缩放、随机裁剪、随机排布的方式进行拼接。
在这里插入图片描述

为什么使用Mosaic?可以增加小目标的数量,使得训练数据中的小目标、中目标和大目标的数据均衡。Mosaic数据增强具有几个优点:

  1. 丰富数据集:
    随机使用四张图,随机缩放,再随机分布进行拼接,大大丰富了检测数据集,特别是随机缩放增加了很多小目标,增强鲁棒性;
  2. 减少GPU:可能会有人说,随机缩放,普通的数据增强也可以做,但作者考虑到很多人可能只有一个GPU,因此Mosaic增强训练时,可以直接计算4张图片的数据,使得Mini-batch大小并不需要很大,一个GPU就可以达到比较好的效果。

此外,在训练中,作者也加入了一种技巧值得借鉴技巧:在训练计算Losss时采用缺啥补啥的思路:如果上一个iteration中,小物体产生别的loss不足,则下一个iteration就用拼接图;否则就用正常的图训练。

SAT自对抗训练
是生成对抗样本那个标记训练。是一种数据增强技术。首先会在训练样本上执行一次前向通过。使用传统方法时,我们会在反向传播过程中调整模型的权重来提升检测器检测图像中目标的能力。但这里所采样的方向却相反。它会修改图像,使其能在最大程度上降低检测器的性能,即创建以当前模型为目标的对抗攻击–即使新图像可能在人眼看来与原来的一样。接下来,使用这张新图像与原始的边界框和类别标签来训练该模型。这有助于提升模型的泛化能力并降低过拟合。
CutMix数据增强
下面是最近论文提出的数据增强的集中方法的对比。
在这里插入图片描述
Cutout 数据增强会移除图像的部分区域(见下图)。这会迫使模型在执行分类时不过于相信特定的特征。但是,如果图像的某部分充满了无用信息,则这种操作就浪费了。CutMix 的做法则不同,其是将图像的一部分剪切下来再粘贴到另一张图像上。其基本真值标签会根据补丁的面积比例进行调整,比如狗的部分占 0.6,猫的部分占 0.4。

从概念上讲,CutMix 在目标的可能组成成分方面有更宽广的视角。裁减掉的部分会迫使模型学习使用不同的特征组合进行分类。这可避免信心过高。因为是用另一张图像替代该区域,所以图像中的信息量和训练效率都不会受到显著的影响。

BackBone创新

(1)CSPDarknet53

主干网络在Darknet53的基础上,借鉴2019年CSPNet的经验,产生的Backbone结构,其中包含了5个CSP模块。

在这里插入图片描述

包含了5个CSP个模块,每个模块前面的卷积核的大小都是33,stride=2,因此起到下采样的作用。输入图像是608608,所以特征变化的规律是608-》304-》152

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值