yolov4网络结构_重磅更新!YoLov4最新论文!解读YoLov4框架!

e436794eacbea53b86142291cd44bf1f.gif

早上刷到YOLOv4之时,非常不敢相信这是真的!今明两天各大公众号肯定要炸锅了!

论文:https://arxiv.org/pdf/2004.10934.pdf

源码:https://github.com/AlexeyAB/darknet

77636b63c71ab5abe1a955b325b320ea.png

核心中的核心:作者将 Weighted-Residual-Connections(WRC), Cross-Stage-Partial-connections(CSP), Cross mini-Batch Normalization(CmBN), Self-adversarial-training(SAT),Mish-activation Mosaic data augmentation, DropBlock, CIoU等组合得到了爆炸性的YOLOv4,可以吊打一切的YOLOv4.在MS-COCO数据上:43.5%@AP(65.7%@AP50)同时可以达到65fps@TeslaV100.

Introduction

大多数基于CNN的目标检测器仅适用于推荐系统。例如,通过城市摄像机寻找免费停车位

是由缓慢精确的模型执行的,而汽车碰撞警告与快速不准确的模型有关。改善实时目标探测器的精度使我们能够使用它们不仅用于提示生成推荐系统,而且也用于独立流程管理和人工输入减少。传统图形处理单元(GPU)上的实时目标检测器操作允许其质量以合理的价格使用。最精确的现代神经网络不实时工作,需要很大的用于大批量小批量培训的GPU数。我们通过创建一个CNN来解决这些问题,该CNN在传统的GPU上实时运行,并且训练只需要一个常规的GPU。

这项工作的主要目标是设计生产系统中目标探测器的快速运行速度和并行计算的优化,而不是低计算体积理论指示器(BFLOP)。我们希望所设计的对象可以很容易地训练和使用。例如,任何使用传统GPU进行训练和测试的人都可以获得实时、高质量和令人信服的目标检测结果,如图1所示的YOLOv4结果。我们的贡献总结如下:

1、我们建立了一个高效而强大的目标检测模型。它使得每个人都可以使用1080ti或2080ti GPU来训练一个超快速和精确的目标探测器。

2、在探测器训练过程中,我们验证了最先进的免费包和特殊包对目标探测方法的影响。

3、我们修改了最新的方法,使之更有效,更适合于单一GPU训练,包括CBN[89]、PAN[49]、SAM[85]等。

18c1eb60eaa304e7a418e057c87093a8.png

Contribution

作者设计YOLO的目的之初就是设计一个快速而高效的目标检测器。该文的贡献主要有以下几点:

  • 设计了一种快速而强有力的目标检测器,它使得任何人仅需一个1080Ti或者2080Ti即可训练这样超快且精确的目标检测器你;

  • (不会翻译直接上英文)We verify the influence of SOTA bag-of-freebies and bag-of-specials methods of object detection during detector training

  • 作者对SOTA方法进行改进(含CBN、PAN,SAM)以使其更适合单GPU训练

Method

作者在现有实时网络的基础上提出了两种观点:

  • 对于GPU而言,在组卷积中采用小数量的groups(1-8),比如CSPResNeXt50/CSPDarknet53;

  • 对于VPU而言,采用组卷积而不采用SE模块。

网路结构选择

网络结构选择是为了在输入分辨率、网络层数、参数量、输出滤波器数之间寻求折中。作者研究表明:CSPResNeXt50在分类方面优于CSPDarkNet53,而在检测方面反而表现要差。

网络主要结构确定了后,下一个目标是选择额外的模块以提升感受野、更好的特征汇聚模块(如FPN、PAN、ASFF、BiFPN)。对于分类而言最好的模型可能并不适合于检测,相反,检测模型需要具有以下特性:

  • 更高的输入分辨率,为了更好的检测小目标;

  • 更多的层,为了具有更大的感受野;

  • 更多的参数,更大的模型可以同时检测不同大小的目标。

一句话就是:选择具有更大感受野、更大参数的模型作为backbone。下图给出了不同backbone的上述信息对比。从中可以看到:CSPResNeXt50仅仅包含16个卷积层,其感受野为425x425,包含20.6M参数;而CSPDarkNet53包含29个卷积层,725x725的感受野,27.6M参数。这从理论与实验角度表明:CSPDarkNet53更适合作为检测模型的Backbone。

432c902655a0f4a695c047e11bc2b5b5.png

在CSPDarkNet53基础上,作者添加了SPP模块,因其可以提升模型的感受野、分离更重要的上下文信息、不会导致模型推理速度的下降;与此同时,作者还采用PANet中的不同backbone级的参数汇聚方法替代FPN。

最终的模型为:CSPDarkNet53+SPP+PANet(path-aggregation neck)+YOLOv3-head = YOLOv4.

Tricks选择

为更好的训练目标检测模型,CNN模型通常具有以下模块:

  • Activations:ReLU、Leaky-ReLU、PReLU、ReLU6、SELU、Swish or Mish

  • Bounding box regression Loss:MSE、IoU、GIoU、CIoU、DIoU

  • Data Augmentation:CutOut、MixUp、CutMix

  • Regularization:DropOut、DropPath、Spatial DropOut、DropBlock

  • Normalization:BN、SyncBn、FRN、CBN

  • Skip-connections:Residual connections, weighted residual connections, Cross stage partial connections

作者从上述模块中选择如下:激活函数方面选择Mish;正则化方面选择DropBlock;由于聚焦在单GPU,故而未考虑SyncBN。

其他改进策略

为使得所涉及的检测器更适合于单GPU,作者还进行了其他几项额外设计与改进:

  • 引入一种新的数据增广方法:Mosaic与自对抗训练;

  • 通过GA算法选择最优超参数;

  • 对现有方法进行改进以更适合高效训练和推理:改进SAM、改进PAN,CmBN。

35508909c9897cf46900bf999a474c5f.png

4cde55c2542833cf46a495019ddff420.png

5ca5dac4d9e935107e963c9267661696.png

YOLOv4

总而言之,YOLOv4包含以下信息:

  • Backbone:CSPDarkNet53

  • Neck:SPP,PAN

  • Head:YOLOv3

  • Tricks(backbone):CutMix、Mosaic、DropBlock、Label Smoothing

  • Modified(backbone): Mish、CSP、MiWRC

  • Tricks(detector):CIoU、CMBN、DropBlock、Mosaic、SAT、Eliminate grid sensitivity、Multiple Anchor、Cosine Annealing scheduler、Random training shape

  • Modified(tector):Mish、SPP、SAM、PAN、DIoU-NMS

Experiments

模型的好坏最终还是要通过实验来验证,直接上对比表:

aa623549ac68453559653457498e1a4c.png

ef09aa6db0a3bf0c6c7e7cfb68e5c4ee.png

18023b5475946a8f19cbc8cbb9ebab65.png

更多的消融实验分析如下:

0bacec899e3c256e02fc295e4e3ea105.png

f1a98df8970f53e63d3442570fa2a102.png

508a7709193ef5c18dad33f122b49143.png

ae8d71afe67ef480fd46b81215aed548.png

497022379f28f22287e5fbb51714a07e.png

d0a61c7f2bb907adce0e50fd28c63d86.png

Results

图8显示了与其他最先进物体探测器的结果比较。我们的YOLOv4位于Pareto最优曲线上,在速度和精度方面都优于最快和最精确的检测器。

34de18dc2da4f951113e6d7f44ddc257.png

由于不同的方法使用不同体系结构的gpu进行推理时间验证,我们在常用的Maxwell、Pascal和Volta体系结构的gpu上运行YOLOv4,并与其他最新方法进行比较。表8列出了使用Maxwell GPU的帧速率比较结果,可以是GTX Titan X(Maxwell)或Tesla M40 GPU。表9列出了使用Pascal GPU的帧速率比较结果,可以是Titan X(Pascal)、Titan Xp、GTX 1080 Ti或Tesla P100 GPU。至于桌子列出了使用Volta GPU的帧速率比较结果,可以是Titan Volta或Tesla V100 GPU。

Conclusions

我们提供最先进的探测器,比所有可用的替代探测器更快(FPS)和更精确(MS COCO AP50…95和AP50)。所述探测器可在8-16的常规GPU上训练和使用这使得它的广泛应用成为可能。一级锚定探测器的最初概念已经证明了它的可行性。我们已经验证了大量的特征,并选择使用这些特征来提高分类器和检测器的精度。这些功能可以是作为未来研究和发展的最佳实践。

Acknowledgements

作者希望感谢Glenn Jocher提出的马赛克数据增强思想,使用遗传算法选择超参数,以及解决https://github.com/ultralytics/yolov3的网格敏感问题

各位小伙伴还是赶紧去研究一下原文吧,见paper吧!

申明:论文原文来源网络, 由《计算机视觉社区》公众号整理分享大家,仅供学习使用,不得用于商用,引用或转载请注明出处!如有侵权请联系删除!

97de2fe638f51191391758365bf6aca0.png

点一下  在看  会更好看哦

33eac26ae162a3616c7f96902b8a0e16.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值