6

炸了!吊打一切的 YOLOv4 重磅来袭!

 3 years ago
source link: https://bbs.cvmart.net/articles/2002
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

炸了!吊打一切的 YOLOv4 重磅来袭!

11个月前 ⋅ 3709 ⋅ 0 ⋅ 0

◎作者系极市原创作者计划特约作者Happy
欢迎大家联系极市小编(微信ID:fengcall19)加入极市原创作者行列

早上刷到YOLOv4之时,非常不敢相信这是真的!

paper:https://arxiv.org/pdf/2004.10934.pdf,

code:https://github.com/AlexeyAB/darknet

核心中的核心:作者将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.

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

在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。

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

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

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

各位小伙伴还是赶紧去研究一下原文吧~
论文下载链接:https://pan.baidu.com/s/1KL4MgHN4HJutZ5r5U7FFsA
密码:提示:此内容登录后可查看

微信公众号: 极市平台(ID: extrememart )
每天推送最新CV干货


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK