yolov4论文_目标检测之YOLOv4 论文导读

7e30aea7715efe785f38db29b58c8430.png
本文源自知乎
Alpha猫:目标检测之YOLOv4​zhuanlan.zhihu.com

本文是YOLO系列的一个继承篇,由俄罗斯开发者Alexey Bochkovskiy和两位中国台湾开发者Chien-Yao Wang和Hong-Yuan Mark Liao联合推出。

作者总结了近些年的深度学习目标检测技巧,进行了大量的实验,使得YOLOv4在精度和速度上都表现得非常出色。

Abstract

卷积神经网络(CNN)中有大量的特性可以进行改进而提高精度。这些特性组合需要在大型数据集上进行测试,同时对结果进行理论证明。其中的一些特性仅仅适合于一些特定的模型和问题,或者仅适用于小规模数据集;而例如batch-normalization和residual-connections这样的方法则适用于大多数的模型、工作和数据集。类似的还包括:

  • Weighted-Residual-Connections(WRC)
  • Cross-Stage-Partial-connections(CSP)
  • Cross mini-Batch Normalization(CmBN)
  • Self-adversarial-training(SAT) and Mish-activation

本文利用WRC,CSP,CmBN,SAT, Mish activation,Mosaic data augmentation,CmBN,DropBlock regularization,and CIoU loss实现了一个更高水平的结果:43.5% AP (65.7%

) for the MS COCO dataset at a real-time speed of ~65 FPS on Tesla V100。

Introduction

大多数基于CNN的目标检测器仅仅适用于推荐系统。例如在城市中摄像机拍摄免费停车位时,使用速度慢却精度高的模型,而在监控汽车的碰撞时则使用识别速度快却精度不高的模型。因此提升实时的目标检测器是很有必要的。不仅用于生成推荐系统,并且利于独立的流程管理和减少人力。在传统的GPU上进行实时的目标检测运算会带来更小的代价。当下,最精确的神经网络并不具备实时性,并且需要使用大量的GPU进行小批量的运算。我们通过创建一个CNN并利用一个GPU来解决这些问题。

这项工作的主要目标是提升生产系统中目标检测器的速度以及优化并行运算,而不是BFLOP。

我们希望设计的对象能够更容易地训练和使用。任何人使用传统的GPU便能够进行实时的训练和测试,并能够获得高质量的实时监测结果。

3b0527a02119c80da7eea909cb5fbbd0.png

我们做出了如下贡献:

  1. 我们构建了一个高效且强大的目标检测模型。这使得每一个人能够使用一个1080Ti或2080TiGPU来训练一个超快速和精确的目标检测器。
  2. 在检测器训练时,我们验证了最先进Bag-of Freebies and Bag-of-Specials目标检测方法的影响。
  3. 我们对一些先进的方法进行修改,包括CBN、PAN、SAM,使得它们更加的高效并适合单GPU运算。

Related Work

Object detection models

现在的检测器通常由两部分组成,一 部分是在ImageNet上预训练的主干网络,另一部分则用来预测物体类别以及边界框。

对于那些在GPU平台上运行的检测器,它们的主干网络可能为VGG、ResNet、ResNeXt或DenseNet。

而对于那些在CPU平台上运行的检测器,他们的检测器可能为SqueezeNet ,MobileNet, ShufflfleNet。

头部一半分为一阶段目标检测器和二阶段目标检测器。最具代表性的二阶段目标检测器R-CNN系列,包括fast R-CNN,faster R-CNN ,R-FCN [9],Libra R-CNN。也可以使得二阶段目标检测器成为anchor-free目标检测器,例如RepPoints。至于一阶段目标检测器,最具代表性的网络包括YOLO、SSD、RetinaNet。

近年来,一阶段的anchor-free目标检测器在不断发展,包括CenterNet、CornerNet、FCOS等。在近些年来的发展,目标检测器通常是在头部和主干网络之间加入一些层,这些层被用来收集不同阶段的特征图,可以称之为目标检测器的颈部。这部分通常由几个自下而上和自上而下的路径组成。

拥有这种机制的网络包括Feature Pyramid Network (FPN),Path Aggregation Network (PAN),BiFPN和NAS-FPN。

除了上述模型外,一些研究人员将重心放在了研究主干网络上(DetNet,DetNAS),而还有一些研究人员则致力于构建用于目标检测的新的模型(SpineNet,HitDetector)。

总的来说,一般的目标检测器由以下几部分组成:

• Input: Image, Patches, Image Pyramid

• Backbones: VGG16, ResNet-50,SpineNet,EffificientNet-B0/B7, CSPResNeXt50, CSPDarknet53

• Neck:

• Additional blocks: SPP,ASPP,RFB,SAM

• Path-aggregation blocks: FPN,PAN,NAS-FPN,Fully-connected FPN,BiFPN,ASFF,SFAM

• Heads:

• Dense Prediction(one-stage):

  • RPN,SSD,YOLO,RetinaNet(anchor based)
  • CornerNet,CenterNet,MatrixNet,FCOS(anchor free)

• Sparse Prediction(two-stage):

  • Faster R-CNN,R-FCN,Mask R-CNN(anchor based)
  • RepPoints(anchor free)

dc1c7854dc241db30cbc88e135bdd0b8.png

Bag of freebies

通常,传统的目标检测器都是离线训练的。因此,研究人员经常喜欢利用这一优点来开发一种更好的训练方法,使得在不增加推理成本的情况下提升目标检测器的精度。我们称这些仅仅改变了训练策略或增加了训练成本的方法为“Bag of freebies”。

目前通常采用的方法使数据增强。数据增强的目的是增加输入图像的灵活性,因此设计的目标检测器有着更高的鲁棒性。

Bag of specials

对于那些增加模块和后处理的方法,它们仅仅少量的增加了推理成本,却能够显著地提升目标检测精度,我们称之为“bag of specials”。

一般说来,这些插入的模块是用来增强某些属性,例如增强感受野,引入警示机制或增强特征的集成能力等。而后处理则用来筛选模型的预测结果。

Methodology

基本的目标是加快神经网络在生产系统中的运算速度以及优化并行运算。我们提出了两种具有实时性的神经网络的方案:

  • 对于GPU,我们在卷积层中使用少量的组:CSPResNeXt50 / CSPDarknet53 。
  • 对于VPU,我们使用分组卷积,但我们不使用Squeeze-and-excitement (SE) blocks,具体包括以下模型:EffificientNet-lite / MixNet / GhostNet / MobileNetV3。

Selection of architecture

我们的目标是在输入网络分辨率、卷积层数、参数数目(fifilter size2 * fifilters * channel / groups)以及输出层数(filters)中找到最佳的平衡。

例如,大量的实验证明,对于ILSVRC2012(ImageNet)数据集上的目标分类而言,CSPResNext50要优于CSPDarknet53。

然而,在MS COCO数据集上,CSPDarknet53要优于CSPResNext50。

下一个目标则是为增加感受野而选择附加块,并在不同的检测器水平上从不同的主干水平中选择最佳的参数聚集方法。

对于分类器而言,分类最优的模型并不总是最优的。与分类器相比,检测器有以下一些需求:

  • 更高的输入网络大小(分辨率)- 用于检测多个小尺寸物体
  • 层数更多 – 用于使更高的感受野去覆盖增加输入网络大小
  • 参数更多 – 用于增强模型在检测多个不同尺寸目标时的能力

我们假设一个拥有较大感受野的模型(拥有大量3×3的卷积层)以及一个参数较多的模型作为主干网络。

表1展示了CSPResNeXt50, CSPDarknet53, and EffificientNet B3的信息。CSPResNeXt50仅包含16个3×3卷积层,一个大小为425×425的感受野以及20.6M的参数。

而CSPDarknet53则含有29个3×3卷积层,一个大小为725×725的感受野以及27.6M大小的参数。

大量的实验以及理论证明表示CSPDarknet53在两者中为最优模型。

不同大小的感受野影响总结如下:

  • 达到目标尺寸-能够感受到整个目标
  • 达到网络尺寸-能够感受目标上下文
  • 超过网络尺寸-增加图像点与激活函数的联系

我们在CSPDarknet53上添加SPP block,因为它能够显著增加感受野,分离出最重要的上下文特征且几乎没有降低网络的运行速度。我们使用PANet作为参数聚集的方法,而不是YOLOv3中使用的FPN。

最后,我们使用CSPDarknet53的主干网络, SPP附加模块, PANet 以及YOLOv3的头部作为YOLOv4的框架。

未来我们计划对检测器的Bag of Freebies(BoF)的内容进行扩展,理论上能够解决一些问题并增加检测器的精度,继而以实验的方式检测每一种特性的影响。

我们没有用Cross-GPU Batch Normalization (CGBN or SyncBN)或者昂贵的设备。这使得每一个人能够在传统的图形处理器上再现我们的最新成果。

9533abfda68c156e32f7bae0ebe0f9f4.png

Selection of BoF and BoS

为了改进目标检测训练,CNN通常使用如下内容:

Activations: ReLU, leaky-ReLU, parametric-ReLU,ReLU6, SELU, Swish, or Mish

Bounding box regression loss: MSE, IoU, GIoU,CIoU, DIoU

Data augmentation: CutOut, MixUp, CutMix

Regularization method: DropOut, DropPath,Spatial DropOut [79], or DropBlock

Normalization of the network activations by their mean and variance: Batch Normalization (BN) ,Cross-GPU Batch Normalization (CGBN or SyncBN),Filter Response Normalization (FRN) [70], or Cross-Iteration Batch Normalization (CBN)

Skip-connections: Residual connections, Weighted residual connections, Multi-input weighted residual connections, or Cross stage partial connections (CSP)

对于激活函数的训练,因为PReLU和SELU难以训练且ReLU6是为量化网络设计的,所以我们将他们从候选名单中排除。

对于正则化,我们选择性能更优的Drop-Block。而在归一化方法的选择中,考虑到训练方式,我们排除了syncBN。

Additional improvements

为了使我们设计的目标检测器更加适合在单GPU上训练,我们有如下的设计和改进:

  • 引入Mosaic, and Self-Adversarial Training (SAT)的数据增广方式
  • 应用遗传算法选择最优超参数
  • 修改现有的方法使之更适合训练和检测- modifified SAM, modifified PAN, and Cross mini-Batch Normalization (CmBN)

Mosaic代表了一种新的数据增广方式。它混合了四张训练图像。因此,四种不同的上下文被混合,而CutMix只混合两个输入图像。这使得能够检测正常背景之外的目标。

Self-Adversarial Training (SAT)同样代表了一种数据混合方式,分两个阶段进行。

e604ce4226d5fa9a6697dae245fdb50e.png

CmBN为CBN的修改版,定义为Cross mini-Batch Normalization(CmBN),它仅仅在一个batch之中收集小批量统计信息。

我们将SAM从spatial-wise attention改为point-wise attention。同时,替换PAN到concatenation的连接。

63cb969daeb848169eccb38ba98d86b1.png

f857125151b947738d52a06ddf39c3dd.png

YOLOv4

本节中,我们详细说明YOLOv4的细节:

YOLOv4 consists of:

  • Backbone: CSPDarknet53
  • Neck: SPP, PAN
  • Head: YOLOv3

YOLO v4 uses:

Bag of Freebies (BoF) for backbone: CutMix and Mosaic data augmentation, DropBlock regularization,Class label smoothing

Bag of Specials (BoS) for backbone: Mish activation, Cross-stage partial connections (CSP), Multi-input weighted residual connections (MiWRC)

Bag of Freebies (BoF) for detector: CIoU-loss,CmBN, DropBlock regularization, Mosaic data augmentation, Self-Adversarial Training, Eliminate grid sensitivity, Using multiple anchors for a single ground truth, Cosine annealing scheduler, Optimal hyper parameters, Random training shapes

Bag of Specials (BoS) for detector: Mish activation,SPP-block, SAM-block, PAN path-aggregation block, DIoU-NMS

Experiments

我们在ImageNet (ILSVRC 2012 val)数据集上测试了不同的改进的训练方式对分类器精度的影响。同时,在MS COCO (test-dev 2017)数据集上对检测器进行测试。

Results

作者做了大量的对比实验,并使用了多个技巧进行比较。

b3e999914923049d9417e3656d0962e4.png

877939d99a46244ded7647f16e3ac37d.png

b3884c505d56a9baa71c1faea57c2e6c.png

作者还对比了在Maxwell、Pascal、Volta三个不同系列的GPU上的效果。

b38b23c202cd5b285af487f5436770c8.png
Figure 8: Comparison of the speed and accuracy of different object detectors. (Some articles stated the FPS of their detectors for only one of the GPUs: Maxwell/Pascal/Volta)

与其他的检测器相比较,YOLOv4在速度和精度上都优于最快最精确的检测器。

Conclusions

YOLOv4能够在8-16GB-VRAM的传统GPU上训练和使用,对于其推广有着很大的帮助。

作者对比了近些年来的深度学习目标检测技巧,做了大量的实验,并对一些方法进行创新和改进,使得YOLOv4能够有效地平衡速度和精度之间的关系,达到整体性能提升的效果。

论文地址:

https://arxiv.org/pdf/2004.10934v1.pdf​arxiv.org

开源地址:

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

不仅有代码、模型而且提供了详细的训练和测试方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值