YoloV4:解读归纳、资源分享

        4月24号,YoloV4出来了,这两天赶紧抽时间看了这篇论文。论文原文、模型及预训练权重分享给大家:
        链接:https://pan.baidu.com/s/19O6f-YWnUYHg0nWlm02C8A
        提取码:7ihv


在这里插入图片描述

Abstract

        有许多的技巧可以提高卷积神经网络(CNN)的准确性。需要在大型数据集上对这些技巧的组合进行实际测试,并对结果进行理论验证。有些技巧只对某些模型起作用,有些技巧只对某些问题起作用,或只针对小规模数据集;而一些技巧,如批处理规范化和残差连接,则适用于大多数模型、任务和数据集。我们假设这些通用技巧包括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%MS COCO数据集的AP (65.7% AP50)在Tesla V100上的实时速度为∼65 FPS。源代码在YoloV4_DarkNet

1. Introduction

        大多数基于cnn的目标检测器基本上只适用于推荐系统。例如,通过城市摄像机寻找免费停车位是由慢速准确的模型执行,而汽车碰撞警告与快速不准确的模型相关。提高实时目标检测器的准确性,不仅可以用于提示生成推荐系统,也可用于独立流程管理和减少人工输入。传统图形处理单元(GPU)上的实时目标检测操作允许它们以可承受的价格大量使用。最精确的现代神经网络不能实时运行,需要大量的gpu来进行大规模的小批量训练。我们通过创建一个在传统GPU上实时运行的CNN来解决这些问题,而训练只需要一个传统GPU。
        这项工作的主要目标是在生产系统中设计一个快速运行的目标检测器,并对并行计算进行优化,而不是设计一个低计算量的理论指示器(BFLOP)。我们希望设计的对象可以很容易地训练和使用。例如,任何使用传统GPU进行训练和测试的人都可以获得实时、高质量、令人信服的对象检测结果,如图1所示的YOLOv4结果。
在这里插入图片描述
我们的贡献总结如下:

  • 我们开发了一个高效、强大的目标检测模型。它使每个人都可以使用1080 Ti或2080 Ti
    GPU来训练一个超级快速和精确的目标探测器。
  • 我们验证了在检测器训练过程中,最先进的Bag-of-Freebies和Bag-of-Specials 对目标检测方法的影响。
  • 我们修改了最先进的方法,使他们更有效和适合单一GPU训练,包括CBN,PAN, SAM , etc.

2. Related work

2.1 Object detection models

        现代检测器通常由两个部分组成,一个是在ImageNet上预先训练的主干(backbone)另一个是用来预测物体的类和边界框的头部(Head)。近年来发展起来的目标检测器常常在基干和头之间插入一些层,这些层通常用来收集不同阶段的特征图。我们可以称它为目标检测器的颈部(neck )。

  • backbone:对于那些在GPU平台上运行的检测器,它们的主干可以是VGG,ResNet , ResNeXt , or DenseNet。对于那些在CPU平台上运行的检测器,它们的主干可以是SqueezeNet, MobileNet,or ShuffleNet。
  • Head:至于头部,通常分为两类:、one-stage object detector 和two-stage object detector。最具代表性的two-stage object detector是R-CNN系列,包括fast R-CNN, faster R-CNN, R-FCN , Libra R-CNN。还可以使two-stage object detector成为无锚(anchor)对象检测器,例如RepPoints。one-stage object detector最具代表性的模型有YOLO、SSD、RetinaNet。近年来,无锚one-stage object detector得到了广泛的应用。这类检测器是CenterNet , CornerNet, FCOS等。
  • neck :通常,一个neck由几个自底向上的路径和几个自顶向下的路径组成。具有neck的网络包括特征金字塔网络(Feature Pyramid Network, FPN)、路径汇聚网络(Path Aggregation Network, PAN)、BiFPN和NAS-FPN。
            除了上述模型外,一些研究人员还着重于直接构建新的backbone(DetNet,DetNAS)或一个新的整体模型(SpineNet , HitDetector)用于对象检测。
            综上所述,一个普通的物体探测器由以下几个部分组成:
    在这里插入图片描述

2.2. Bag of freebies

        指那些能够提高精度而不增加推断时间的技术。比如数据增广的方法图像几何变换、CutOut、grid mask等,网络正则化的方法DropOut、DropBlock等,类别不平衡的处理方法、难例挖掘方法、损失函数的设计等。

2.3 Bag of specials

        是指那些增加稍许推断代价,但可以提高模型精度的方法,比如增大模型感受野的SPP、ASPP、RFB等,引入注意力机制Squeeze-and-Excitation (SE) 、Spatial Attention Module (SAM)等 ,特征集成方法SFAM , ASFF , BiFPN等,改进的激活函数Swish、Mish等,或者是后处理方法如soft NMS、DIoU NMS等

3. Methodology

        基本目标是在生产系统中提高神经网络的运行速度和并行计算的优化速度,而不是低计算量理论指标(BFLOP)。我们提出了实时神经网络的两种选择:

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

3.1. Selection of architecture

        基于下图分析,最后,我们选择了CSPDarknet53作为backbone、SPP附加模块、PANet路径聚集作为neck和YOLOv3(基于锚的)head作为YOLOv4的架构。
在这里插入图片描述
        接下来,我们计划对检测器进行Bag of Freebies( BoF)内容的大幅扩展,理论上可以解决一些问题,提高检测器的精度,并以实验的方式依次检查每个特征的影响。

3.2. Selection of BoF and BoS

        这里没有贴出选择过程,直接给出了选择的选择的技巧(下图出现在原论文3.4. YOLOv4中):
在这里插入图片描述

4. Experiments

        我们测试了不同的训练改进技术对ImageNet上分类器精度的影响(ILSVRC 2012 val)数据集,然后对MS COCO (test-dev 2017)数据集上的检测器的准确性进行分析。

4.1. Experimental setup

        在ImageNet图像分类实验中,默认的超参数如下:training steps为8,000,000;batch size和mini-batch size分别为128和32;采用多项式衰减学习速率调度策略,初始学习速率为0.1; warm-up steps1000;动量衰减为0.9,权重衰减为0.005。我们所有的BoS实验都使用与默认设置相同的超参数,在BoF实验中,我们添加了额外的50%的training steps。在BoF实验中,我们验证了MixUp, CutMix, Mosaic, Bluring 数据增强和标签平滑正则化方法。在BoS实验中,我们比较了LReLU、Swish和Mish激活函数的作用。所有实验都使用1080 Ti或2080 Ti GPU进行训练。
        MS COCO目标检测实验中,默认的超参数为:training steps 为500500;采用初始学习速率0.01的阶跃进衰减学习速率调度策略,在400000步和450000步分别乘以因子0.1;动量衰减为0.9,权重衰减为0.0005。所有的架构都使用一个GPU来执行batch size为64的多尺度训练,而mini-batch size大小为8或4取决于架构和GPU内存限制。除了使用遗传算法进行超参数搜索实验外,其他实验均使用默认设置。遗传算法利用YOLOv3-SPP进行带GIoU损失的训练,搜索300个epoch的min-val 5k集。遗传算法实验采用搜索学习率0.00261、动量0.949、IoU阈值分配ground truth 0.213、损失归一化器0.07。我们已经验证了大量的BoF,包括grid sensitivity elimination, mosaic data augmentation, IoU threshold, genetic algorithm, class label smoothing, cross mini-batch normalization, selfadversarial training, cosine annealing scheduler, dynamic mini-batch size, DropBlock, Optimized Anchors, different kind of IoU losses。我们还对各种BoS进行了实验,包括Mish、SPP、SAM、RFB、BiFPN和Gaussian YOLO。对于所有的实验,我们只使用一个GPU进行训练,所以像syncBN这样优化多个GPU的技术并没有被使用。

4.2 实验结果

        这里只贴出了MS COCO目标检测实验结果,原文中有(4.2)不同特征对分类器训练的影响,(4.3)不同特征对检测器训练的影响,(4.4)不同的 backbones 和预训练权重对检测器训练的影响,(4.5)不同的mini-batch size对检测器训练的影响.
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂奔的菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值