yolov4论文翻译

YOLOv4 Optimal Speed and Accuracy of Object Detection

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

论文源码:GitHub - AlexeyAB/darknet: YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet )

摘要

        有大量的特性是可以提高卷积神经网络(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 激活、Mosaic 数据扩增、CmBN、DropBlock 正化和 CIoU 损耗,并结合其中一些功能实现最先进的结果:43.5% AP (65.7% AP 50),实时速度为特斯拉 V100 上的 MS COCO 数据集 [65 FPS。源代码位于https://github.com/AlexeyAB/darknet。

1.引言

        大多数基于CNN的目标检测器大多仅适用于推荐系统。例如,通过城市摄像机搜索免费停车位是通过速度较慢、准确率高的模型执行的,而汽车碰撞警告则需要又快又准的模型。提高实时目标检测器精度,不仅可以将其用于提示生成建议系统,还可用于独立的过程管理和人工输入减少。传统图形处理单元 (GPU) 上的实时目标检测器操作允许以可接受的价格大规模使用。最精确的现代神经网络无法实时运行,并且需要大量的 GPU 进行大型小型批处理大小的训练。我们通过创建一个在传统 GPU 上实时运行的 CNN 来解决这些问题,为此训练只需要一个常规 GPU。

yolov4论文翻译_第1张图片

        图1:对拟建的YOLOv4和其他最先进的目标检测器进行比较。YOLOv4 的速度比高效德特快两倍,具有同等的性能。YOLOv3 的 AP 和 FPS 分别提高了 10% 和 12%。

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

        1、我们开发一种高效、强大的物体检测模型。它使每个人都可以使用1080 Ti或2080 Ti GPU来训练超快速和准确的目标检测器;

        2、在检测器训练期间,我们验证最先进的开源方法和特殊检测方法的影响;

        3、我们修改最先进的方法,使其更高效,适合单次 GPU 训练,包括 CBN [89]、PAN [49]、SAM [85]等。

yolov4论文翻译_第2张图片

2、相关工作

2.1、目标检测模型

        现代检测器通常由两部分组成,一个是在 ImageNet 上预先训练的骨干网,另一个是用于预测物体的类和边界框的头部。对于在 GPU 平台上运行的检测器,其主干可以是 VGG [68]、ResNet [26]、ResNeXt [86]或DenseNet [30]。对于在 CPU 平台上运行的检测器,其主干可以是SqueezeNet [31]、MobileNet[28、66、27、74]或 ShuffleNet [97, 53]。至于头部部分,通常分为两类,即一级目标检测器和两级目标检测器。最具代表性的两级目标检测器是R-CNN[19]系列,包括fast R-CNN[18],faster R-CNN[64],R-FCN[9]和 Libra R-CNN[58]。也可以使两级目标检测器成为anchor-free 目标检测器,如 RepPoints [87]。至于一级目标检测器,最具代表性的模型是YOLO[61、62、63]、SSD[50]和RetinaNet[45]。近年来,开发了 anchor-free 单级目标检测器。此类检测器有 CenterNet [13]、CornerNet [37、 38]、FCOS [78]等。近年来开发的目标检测器通常在骨干和头部之间插入一些层,这些层通常用于收集不同阶段的feature maps 。我们可以称它为目标检测器的neck层。通常,neck层由几个自下而上的路径和几个自上而下的路径组成。配备此机制的网络包括特征金字塔网络 (FPN) [44]、路径聚合网络 (PAN) [49]、BiFPN [77]和 NAS-FPN [17]。

        除了上述模型外,一些研究人员还强调直接构建一个新的主干(DetNet [43],DetNAS [7])或新的完整模型结构(SpineNet [12],HitDetector [20])用于物体检测。

        总之,一个标准的目标检测器由几个部分组成:

•Input: Image, Patches, Image Pyramid
• Backbones: VGG16 [68], ResNet-50 [26], SpineNet
    [12], EfficientNet-B0/B7 [75], CSPResNeXt50 [81],
    CSPDarknet53 [81]
• Neck:
    • Additional blocks: SPP [25], ASPP [5], RFB
        [47], SAM [85]
    • Path-aggregation blocks: FPN [44], PAN [49],
        NAS-FPN [17], Fully-connected FPN, BiFPN
        [77], ASFF [48], SFAM [98]
• Heads::
    • Dense Prediction (one-stage):
        ◦ RPN [64], SSD [50], YOLO [61], RetinaNet
            [45] (anchor based)
        ◦ CornerNet [37], CenterNet [13], MatrixNet
            [60], FCOS [78] (anchor free)
        • Sparse Prediction (two-stage):
            ◦ Faster R-CNN [64], R-FCN [9], Mask RCNN [23] (anchor based)
            ◦ RepPoints [87] (anchor free)

2.2、Bag of freebies

        只增加训练成本就可以提高检测指标的方法。

        通常,传统的目标检测器是离线训练的。因此,研究人员总是喜欢利用这一优势,开发更好的训练方法,使目标检测器在不增加推理成本的情况下获得更好的精度。我们将这些方法称为”bag of freebies”,这些方法仅改变训练策略或仅增加训练成本。目标检测方法通常采用并符合bag of freebies的定义的是数据扩充。数据扩增的目的是增加输入图像的可变性,使设计的目标检测模型对从不同环境获得的图像具有更高的鲁棒性。例如,光度失真和几何失真是两种常用的数据扩增方法,它们肯定有利于目标检测任务。在处理光度失真时,我们调整图像的亮度、对比度、色调、饱和度和噪声。对于几何失真,我们添加随机缩放、裁剪、翻转和旋转。

        上面提到的数据扩充方法是所有像素调整,并保留调整后区域中的所有原始像素信息。此外,一些从事数据扩增的研究人员强调模拟物体遮挡问题。他们在图像分类和物体检测方面取得了良好的效果。例如,random erase [100] 和 CutOut [11] 可以随机选择图像中的矩形区域并填充零的随机或互补值。至于 hide-and-seek [69] 和 grid mask [6],它们随机或均匀地选择图像中的多个矩形区域,并将其替换为所有零。类似的概念应用于feature maps,则有”DropOut “[71]、DropConnect [80]和 DropBlock [16] 方法。此外,一些研究人员提出了将多个图像结合在一起执行数据扩增的方法。例如,MixUp [92] 使用两个图像以不同的系数比率倍增和叠加,然后使用这些叠加比率调整标签。至于 CutMix [91],它是将裁剪的图像覆盖到其他图像的矩形区域,并根据混合区域的大小调整标签。除上述方法外,风格迁移GAN[15]还用于数据扩增,这种使用可以有效地减少CNN学到的纹理偏差。

        与上述各种方法不同,其他一些bag of freebies方法专门用于解决数据集中语义分布可能存在偏差的问题。在处理语义分布偏差问题时,一个很重要的问题是,不同类之间的数据不平衡问题,这个问题往往通过hard negative example mining [72]或两阶段目标检测器中的online hard example mining 67]来解决。但example mining方法不适用于一级目标检测器,因为这种检测器属于密集预测架构。因此,Lin等人[45]提出了focal loss来解决不同类别之间存在的数据不平衡问题的问题。另一个非常重要的问题是,one-hot编码很难表达不同类别之间的关系。在执行标签时,通常使用此表示方案。[73] 中建议的标签平滑是将硬标签转换为软标签进行训练,这将使模型更加鲁棒。为了获得更好的软标签,Islam等人引入了知识蒸馏的概念来设计标签细化网络。

        bag of freebies 的最后一个是边界框 (BBox) 回归的目标函数。传统的目标检测器通常使用均值方误差 (MSE) 直接对 BBox 的中心点坐标和高度和宽度执行回归,即 { 中心点x 、中心点y、w、h 或左上点和右下角。至于基于锚点的方法,它是估计相应的偏移量,例如 [x 中心偏移,y 中心偏移,w偏移,h偏移量和 + x 左上偏移量,y 左上偏移量,x 右下偏移量,y 右下角偏移。但是,直接估计 BBox 的每个点的坐标值是将这些点视为独立的变量,但实际上不考虑对象本身的完整性。为了更好地处理这一问题,一些研究人员最近提出了IoU损耗[90],将预测的BBox区域和真值BBox区域的覆盖范围考虑在内。IoU 损失计算过程将通过执行带有真值 IoU,然后将生成的结果连接到整个代码,触发 BBox 的四个坐标点的计算。由于 IoU 是一个比例不变表示形式,因此它可以解决当传统方法计算 l 1 或 l 2 损失的 x、y、w、h时,损耗会随着比例的增加而增加。最近,一些研究人员继续改善IoU损失。例如,GIoU 损失 [65] 是除覆盖区域外,还包括对象的形状和方向。他们建议找到最小区域 BBox,可以同时覆盖预测的 BBox 和真值 BBox,并使用此 BBox 作为分母来替换最初用于 IoU 损失的分母。至于DIoU损失[99],它另外考虑物体中心的距离,另一方面,CIoU损失[99],同时考虑重叠区域,中心点之间的距离和纵横比。CIoU 可以在 BBox 回归问题上实现更好的收敛速度和准确性。

2.3、Bag of specials

        对于那些插件模块和后处理方法,它只增加少量的推理成本,但可以显著提高目标检测的准确性,我们称之为”“bag of specials”。一般来说,这些插件模块用于增强模型中的某些属性,如扩大感受野、引入关注机制、增强特征提取能力等,后处理是筛选模型预测结果的方法。

        可用于增加感受野的常见模块有 SPP [25]、ASPP [5] 和 RFB [47]。SPP 模块源自空间金字塔匹配 (SPM) [39],SPM 的原始方法是将feature map拆分为多个d*d等块,其中 d 可以是 {1、2、3、……},从而形成空间金字塔,然后提取词袋(bag-of-word) 特征。SPP 将 SPM 集成到 CNN 中,并使用最大池化操作,而不是词袋操作。由于He等人提出的SPP模块[25]将输出一维特征矢量,因此在全卷积网络(FCN)中应用是不可行的。因此,在 YOLOv3 [63] 的设计中,Redmon 和 Farhadi 改进了 SPP 模块与内核大小 k * k 的最大池输出的串联,其中 k = {1、5、9、13 } 和步长等于 1。在此设计下,相对较大的 k * k maxpool 可有效增加骨干特征的感受野。添加改进版的 SPP 模块后,YOLOv3-608 在 MS COCO 目标检测任务中将 AP 50 升级 2.7%,额外计算成本为 0.5%。ASPP [5] 模块与改进的SPP模块之间的操作不同主要是从原来的k*k内核大小,最大步幅等于1改至多个3× 3内核大小,膨胀率等于k,在扩张卷积操作中,步长等于1。RFB 模块是使 k*k 内核的多个膨胀卷积,膨胀比等于 k,步长等于 1,以获得比 ASPP 更全面的空间覆盖。RFB [47] 只需花费 7% 的额外推理时间,就将 MS COCO 上的 AP 50 SSD 增加 5.7%。

        目标检测中常用的注意模块主要分为channel-wise attention和pointwise attention,这两个注意模型的代表分别是Squeeze-and-Excitation (SE) [29]和Spatial Attention Module[SAM][85]。虽然SE模块可以提高ResNet50在ImageNet图像分类任务中的top-1 准确率提高1%,而成本只增加计算工作量2%(这里指的是floats),但在GPU上通常会增加10%左右计算时间,因此在移动设备中使用更合适。但对于 SAM,它只需要额外花费0.1% 的计算,并且它可以提高 ResNet50-SE 在 ImageNet 图像分类任务中 0.5% 的前 1 精度。最重要的是,它根本不影响 GPU 上的推理速度。

        在特征融合方面,早期做法是使用skip connection [51] 或hyper-column [22] 将低级物理特征与高级语义特征进行融合。由于FPN等多尺度预测方法已经普及,许多融合不同特征金字塔的轻量级模块被提出来。此类模块包括 SFAM [98]、ASFF [48] 和 BiFPN [77]。SFAM 的主要思想是使用 SE 模块在 多尺度channelwise level re-weighting上执行通道级重新加权。至于ASFF,它使用softmax作为point-wise级reweighting,然后添加不同层级的特征图。在 BiFPN 中,输入多尺度权重残差连接来提取不同层的scale-wise level re-weighting,然后添加不同层的特征图。

        在深度学习的研究中,有些人把精力放在寻找好的激活函数上。良好的激活函数可以使梯度更有效地传播,同时也不会造成过多的额外计算成本。2010年,Nair和Hinton[56]提出ReLU激活函数从根本上解决梯度消失问题。随后,提出了LReLU[54],PReLU[24],ReLU6[28],缩放指数线性单位(SELU)[35],Swish [59],hard-Swish[27],和Mish[55]等,也用于解决梯度消失问题。LReLU 和 PReLU 的主要目的是解决当输出小于零时 ReLU 梯度为零的问题。至于ReLU6和硬hard-Swish,它们是专门为量化网络设计的。为了实现神经网络的自规范化,提出了符合目标的SELU激活函数。需要注意的是,Swish 和 Mish 都是连续可微的激活函数。

        在基于深度学习的目标检测中常用的后处理方法是 NMS,它用于筛选掉那些预测同一对象的不好的BBox,并且仅保留置信度较高的候选BBox。NMS 尝试改进的方式与优化目标函数的方法一致。NMS提出的原始方法不考虑上下文信息,因此Girshick等人[19]在R-CNN中添加了分类置信度分数作为参考,并根据置信度分数的顺序,以高分到低分的顺序进行贪婪的NMS。至于 soft NMS [1],它考虑的问题,对象的遮挡可能会导致在贪婪的NMS与IoU分数的置信度分数下降的问题。DIoU NMS [99] 开发人员的思维方式是在软 NMS 的基础上将中心点距离的信息添加到 BBox 筛选过程中。值得一提的是,由于上述后处理方法没有一种直接是指捕获的图像特征,因此在后续开发无锚方法时不再需要后处理。

yolov4论文翻译_第3张图片

3、方法

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

        1)对于 GPU,我们在卷积层中减少grouped-convolution的使用(1 – 8): CSPReSNeXt50 / CSPDarknet53。

        2)对于 VPU – 我们使用grouped-convolution,但我们减少Squeeze-and-excitement (SE) blocks – 具体来说,这包括以下模型: EfficientNet-lite / MixNet [76] / GhostNet [21] / MobileNetV3。

3.1、模型结构选择

        我们的目标是在输入网络分辨率、卷积层数、参数量(滤波器大小: 2 * 滤波器 * 通道 / 分组)和图层输出数(筛选器)之间找到最佳平衡。例如,我们的大量研究表明,在 ILSVRC2012 (ImageNet) 数据集 [10] 上,CSPResNext50比 CSPDarknet53要好得多。但是,相反,在 MS COCO检测数据集 [46] 上,CSPDarknet53 优于 CSPResNext50。

        下一个目标是选择其他模块,以增加感受和不同层的backbone参数聚合的最佳方法:例如FPN、PAN、ASFF、BiFPN。

最佳分类的参考模型并不总是检测器的最佳模型。与分类器相比,检测器需要以下操作:

  • 更高的输入网络大小(分辨率) – 用于检测多尺度小目标;

  • 更多层 – 更高的感受野,以覆盖网络输入大小的增加;

  • 更多参数 – 提高模型的容量,以检测单个图像中的多个不同大小的目标。

        假设,我们可以假设一个感受野大小的模型(具有较多的卷积层 3 × 3)和更多的参数应作为主干。表 1 显示了 CSPReSNeXt50、CSPDarknet53 和高效网络 B3 的信息。CSPResNext50 仅包含 16 个卷积层 3 × 3、425 × 425感受野和 20.6 M 参数,CSPDarknet53 包含 29 个卷积层 3 × 3、725 × 725 接受场和 27.6 M 参数。这一理论论证,加上我们的大量实验,表明CSPDarknet53神经网络是两者作为检测器backbone 的最佳模型。

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

  • 提高目标大小 – 允许查看整个目标;
  • 最多网络大小 – 允许查看对象周围的上下文;
  • 增加网络尺寸 – 增加图像点和最终激活之间的连接数。

        我们在 CSPDarknet53 上添加 SPP 块,因为它显著增加了感受野,分离出最重要的上下文功能,并且几乎不降低网络操作速度。我们使用 PANet 作为不同检测器级别的不同骨干级参数聚合方法,而不是 YOLOv3 中使用的 FPN。

        最后,我们选择 CSPDarknet53 主干、SPP 附加模块、PANet path-aggregation 颈部和 YOLOv3(基于锚)头作为 YOLOv4 的体系结构。

        今后,我们计划大幅扩展检测器BoF的数量,理论上可以解决一些问题,提高检测器的精度,并按顺序以实验方式验证每个功能的影响。

        我们不使用跨 GPU 批处理规范化 (CGBN 或 SyncBN) 或昂贵的专用设备。这允许任何人在传统的图形处理器上重现我们最先进的结果,例如 GTX 1080Ti 或 RTX 2080Ti。

3.2、BoF 和 BoS 的选择

为了提升目标检测训练,CNN 通常使用以下内容:

  • 激活函数: ReLU, leaky-ReLU, parametric-ReLU, ReLU6, SELU, Swish, or Mish

  • 框回归损失: MSE, IoU, GIoU, CIoU, DIoU

  • 数据增强: CutOut, MixUp, CutMix

  • 正则化方法: DropOut, DropPath [36], Spatial DropOut [79], or DropBlock

  • 归一化层: Batch Normalization (BN) [32], Cross-GPU Batch Normalization (CGBN or SyncBN) [93], Filter Response Normalization (FRN) [70], or Cross-Iteration Batch Normalization (CBN) [89]

  • 跳跃连接: Residual connections, Weighted residual connections, Multi-input weighted residual connections, or Cross stage partial connections (CSP)

        至于训练激活函数,由于 PReLU 和 SELU 更难训练,而 ReLU6 是专门为量化网络设计的,因此我们从候选列表中剔除了上述激活函数。在重量化方法中, 一些人将DropBlock 的方法与其他方法进行了详细的比较,其正则化方法略好一些。因此,我们毫不犹豫地选择 DropBlock 作为我们的规范化方法。至于规范化方法的选择,由于我们专注于只使用一个 GPU 的训练策略,因此不考虑 syncBN。

3.3、其它的改进

为了使设计的检测器更适合于单 GPU 的训练,我们进行了如下其他设计和改进:

  • 我们引入了一种新的数据扩增Mosaic和Self-Adversarial Training (SAT)方法;

  • 应用遗传算法选择最佳的超参数。

        我们修改了一些现有的方法,使我们的设计适合高效的训练和检测 – modified SAM, modified PAN, and Cross mini-Batch Normalization (CmBN)Mosaic(马赛克)是一种新的数据扩增方法,它混合了4个训练图像。因此,4个不同的上下文混合,而CutMix只混合2个输入图像。这允许检测其正常上下文之外的对象。此外,批处理规范化计算每个层上 4 个不同图像的激活统计信息。这大大减少了对大batch size的需求。

yolov4论文翻译_第4张图片

图3:Mosaic 数据增强表现

        Self-Adversarial Training (SAT) 代表一种新的数据扩增技术,可在 2 个forward backward阶段运行。在第一阶段,神经网络更改原始图像而不是网络权重。通过这种方式,神经网络对自身执行对抗攻击,更改原始图像以创建映像上没有所需对象的假图。在第二阶段,神经网络被训练以正常方式检测此修改图像上的目标。

        CmBN 表示 CBN 修改版本,如图 4 所示,定义为交叉小批量规范化 (CmBN)。这仅在单个批处理中的微型批处理之间收集统计信息。

yolov4论文翻译_第5张图片

图4:Cross mini-Batch Normalization.

        我们修改SAM,从spatial-wise attention改为pointwise attention,并将 PAN 的shortcut connection改为concatenation,如图 5 和图 6 所示。

yolov4论文翻译_第6张图片

yolov4论文翻译_第7张图片

3.4、YOLO V4

在本节中,我们将详细阐述YOLOv4的细节。

YOLOv4 包括:

  • 主干: CSPDarknet53 [81]

  • 颈部: SPP [25], PAN [49]

  • 头部: YOLOv3 [63]

YOLO v4 使用:

  • Bag of Freebies (BoF) for backbone: CutMix 和 Mosaic 数据增强, DropBlock regularization, Class label smoothing

  • Bag of Specials (BoS) for backbone: Mish 激活, Cross-stage partial connections (CSP), Multiinput weighted residual connections (MiWRC)

  • Bag of Freebies (BoF) for detector: CIoU 损失, CmBN, DropBlock 正则化, Mosaic数据扩增, Self-Adversarial 训练, Eliminate grid sensitivity, Using multiple anchors for a single ground truth, Cosine annealing scheduler [52], Optimal hyperparameters, Random training shapes

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

4、实验

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

4.1.实验设置

        在 ImageNet 图像分类实验中,默认的超参数如下:训练steps 为 8,000,000; batch size和mini-batch size大小分别为128和32;采用多项式衰减学习率调度策略,初始learning rate为0.1;warm-up steps为1000;momentum 和weight decay分别设置为 0.9 和 0.005。我们所有的 BoS 实验都使用与默认设置相同的超参数,在 BoF 实验中,我们增加了 50% 的训练步骤。在 BoF 实验中,我们验证 MixUp、CutMix、Mosaic、Bluring数据扩增和label smoothing regularization方法。在BoS实验中,我们比较了LReLU、Swish和Mish激活函数的影响。所有实验都使用 1080 Ti 或 2080 Ti GPU 进行训练。

        在MS COCO目标检测实验中,默认超参数如下:训练steps为500,500;采用step decay learning rate调度策略,初始学习速率0.01,在400,000步和45万步时乘以因子0.1;momentum和weight decay分别设置为 0.9 和 0.0005。所有网络结构都使用单个 GPU 执行批处理大小为 64 的多级训练,而mini-batch大小为 8 或 4 取决于网络结构和 GPU 内存限制。除了使用遗传算法进行超参数搜索实验外,所有其他实验都使用默认设置。遗传算法使用YOLOv3-SPP训练与GIoU损失和搜索300个epochs为min-val 5k验证集。采用搜索学习速率0.00261、动量0.949、分配真值IoU阈值为0.213,遗传算法实验的损失规范化器0.07。我们已经验证了大量的BoF,包括grid sensitivity elimination、mosaic数据扩增、IoU阈值、遗传算法、class label smoothing, cross mini-batch normalizationselfadversarial training, cosine annealing scheduler, dynamic mini-batch size, DropBlock, Optimized Anchors、不同类型的IoU损失。我们还对各种 BoS 进行实验,包括Mish、SPP、SAM、RFB、BiFPN 和Gaussian YOLO [8]。对于所有实验,我们只使用一个 GPU 进行训练,因此不使用syncBN 优化多个 GPU 等技术。

4.2、不同特性对分类器训练的影响

        首先,研究了不同特性对分类器训练的影响;具体来说,class label smoothing,不同数据扩增技术的影响,双边模糊,MixUp,CutMix和Mosaic,如Fugure 7所示,以及不同激活的影响,如Leaky-ReLU(默认情况下),Swish和Mish。

yolov4论文翻译_第8张图片

图7:不同的数据增强方法

        在我们的实验中,如表 2 所示,分类器的精度通过引入以下特性得到提高,例如:CutMix 和Mosaic 数据扩增、类标签平滑(Class label smoothing)和 Mish 激活。因此,我们的 BoF骨干用于分类器训练包括以下内容:CutMix 和Mosaic数据扩增和类标签平滑。此外,我们使用 Mish 激活作为补充选项,如表 2 和表 3 所示。

yolov4论文翻译_第9张图片

4.3、不同特性对检测器训练的影响

        进一步研究涉及不同的BoF-检测器对检测器训练精度的影响,如表4所示。我们通过研究在不影响 FPS 的情况下提高检测器精度的不同特征,显著扩展了 BoF 列表:

        S: 消除grid sensitivity方程 bx = delta(tx )+ cx, by = delta(ty )+ cy , 其中 cx 和 cy 始终为整数, 在 YOLOv3 中使用其用于评估目标坐标, 因此,接近 cx 或 cx = 1 值的 bx 值需要极高的 tx 绝对值。我们通过将 sigmoid 乘以超过1.0 的因子来解决此问题,从而消除了网格无法检测到对象的影响;

        M:Mosaic数据扩增 – 在训练期间使用 4 图像镶嵌,而不是单个图像;

        IT:IoU 阈值 – 使用多个锚点进行单个接地真值 IoU(真锚)> IoU 阈值;

        GA:遗传算法 – 在前 10% 的时间段的网络训练期间使用遗传算法选择最佳超参数;

        LS:class label smoothing – 使用类标签平滑进行 sigmoid 激活;

        CBN: CmBN – 使用交叉小批处理规范化收集整个批处理中的统计信息,而不是在单个小批处理中收集统计信息;

        CA:模拟退火调节器 – 改变正弦训练中的学习速率;

        DM:动态小批量尺寸– 在小分辨率训练期间使用随机训练尺度,自动增加mini-batch的大小;

        OA:优化的锚点 – 使用优化的anchors 进行 512×512 网络分辨率的训练;

        GIoU、CIoU、DIoU、MSE – 对边界框回归使用不同的损失函数。

        进一步研究涉及不同的BoS-检测器对检测器训练精度的影响,包括PAN、RFB、SAM、Gaussian YOLO(G)和ASFF,如表5所示。在我们的实验中,检测器在使用 SPP、PAN 和 SAM 时获得最佳性能。

yolov4论文翻译_第10张图片

4.4、不同backbones 和预训练权重对检测器训练的影响

        进一步研究了不同backbones 对检测器精度的影响,如表6所示。我们注意到,在检测器精度方面,具有最佳分类精度的模型并不总是最好的。

yolov4论文翻译_第11张图片

        首先,虽然与CSPDarknet53模型相比,训练具有不同功能的CSPReSNeXt50模型的分类精度较高,但CSPDarknet53模型在物体检测方面表现出更高的精度。

        其次,将BoF和Mish用于CSPResNeXt50分类器训练,提高了其分类精度,但进一步将这些预先训练的权重应用于检测器训练,降低了检测器的精度。但是,将 BoF 和 Mish 用于 CSPDarknet53 分类器训练可提高分类器和检测器的准确性,后者使用此分类器预先训练的权重。最终结果是,主干 CSPDarknet53 更适合检测器,而不是 CSPResNeXt50。

        我们观察到,CSPDarknet53模型表明,由于各种改进,提高了检测器精度的能力。

4.5、不同mini-batch大小对检测器训练的影响

        最后,分析了使用不同小批次大小的模型获得的结果,结果显示在表7中。从表7所示的结果中,我们发现,在添加了BoF和BoS训练策略后,小批量大小对检测器的性能几乎没有影响。这一结果表明,在引入BoF和BoS后,不再需要使用昂贵的 GPU 进行训练。换句话说,任何人都可以只使用传统的 GPU 来训练出色的检测器。

yolov4论文翻译_第12张图片

5、实验结果

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

yolov4论文翻译_第13张图片

图8: 不同物体检测速度和精度的比较

        由于不同方法使用不同模型结构的 GPU 进行推理时间验证,因此我们在通常采用的 Maxwell、Pascal 和 Volta 体系结构的 GPU 上运行 YOLOv4,并将其与其他最先进的方法进行比较。表 8 列出了使用 Maxwell GPU 的帧速率比较结果,它可以是 GTX 泰坦 X (Maxwell) 或特斯拉 M40 GPU。表 9 列出了使用 Pascal GPU 的帧速率比较结果,它可以是Titan X (Pascal)、Titan Xp、GTX 1080 Ti 或Tesla P100 GPU。至于表10,它列出了使用Volta GPU的帧速率比较结果,它可以是 Titan Volta或Tesla V100 GPU。

6、结论

        我们提供最先进的检测器,它比所有可用的替代检测器更快(FPS)和更准确(MS COCO AP 50…95 和 AP 50)。所述检测器可在具有 8-16 GB-VRAM 的传统 GPU 上进行训练和使用,这使得其广泛使用成为可能。one-stage检测器的最初概念已证明其可行性。我们已经验证了大量的功能,并选择用于这些功能,以提高分类器和检测器的准确性。这些功能可用作未来研究和发展的最佳实践。

7、致谢

        作者希望感谢Glenn Joche的Mosaic的数据扩增想法,选择超参数通过使用遗传算法和解决网格敏感性问题,https://github.com/ultralytics/yolov3。

yolov4论文翻译_第14张图片

yolov4论文翻译_第15张图片

yolov4论文翻译_第16张图片

参考文献

...

你可能感兴趣的:(目标检测,计算机视觉,机器学习,yolov4,yolo,cvpr2020)