目标检测之YOLOv4

一、目标检测之YOLOv4

YOLOv4: Optimal Speed and Accuracy of Object Detection

  • 论文链接: https://arxiv.org/abs/2004.10934

  • 论文开源代码: https://github.com/AlexeyAB/darknet

二、YOLOv4

摘要

有大量的功能据说可以提高 CNN 卷积神经网络的准确性。 在大型数据集上对这些特征的组合进行实际测试,并从理论上证明结果是正确的,是必要的。 有些特性只对某些模型进行操作,而且只对某些问题进行操作,或者只对小规模数据集进行操作; 而有些特性,如批量规范化和残差连接,则适用于大多数模型、任务和数据集。 我们假设这些通用特征包括加权残差连接(WRC)、交叉阶段部分连接(CSP)、交叉小批量归一化(CmBN)、自我对抗训练(SAT)和安全激活。 我们使用新特征: WRC、CSP、CmBN、SAT、Mish 激活、Mosaic 数据增强、CmBN、DropBlock正则化和 CIoU 损失,并将其中的一些特性结合起来,以 Tesla V100上65fps 的实时速度为 MS COCO 数据集实现了43.5% AP (65.7% A P 50 AP_{50} AP50)。

1、介绍

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

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

  1. 我们开发了一个高效且强大的目标检测模型。 它使每个人都可以使用1080ti 或2080ti GPU 来训练一个超快速和准确的物体检测器。
  2. 在检测训练期间,我们验证了最先进的目标检测的方法的影响。
  3. 我们修改了最先进的方法,使它们更有效,更适合单一 GPU 的培训,包括 CBN [89]、 PAN [49]、 SAM [85]等。
    目标检测之YOLOv4_第1张图片
    图1: 拟议的 YOLOv4和其他最先进的对象检测器的比较。 YOLOv4的运行速度比 EfficientDet 快两倍,性能相当。 提高 YOLOv3的 AP 和 FPS 分别为10% 和12% 。

2、相关工作

2.1 目标检测模型

一个现代的检测器通常由两部分组成,一个是在 ImageNet 上预先训练过的骨干,另一个是用来预测对象的类和包围盒的头。 对于运行在 GPU 平台上的探测器,它们的主干可以是 VGG [68]、 ResNet [26]、 ResNeXt [86]或 DenseNet [30]。 对于那些运行在 CPU 平台上的探测器,它们的主干可以是 SqueezeNet [31] ,MobileNet[28,66,27,74]或者 ShuffleNet。对于头部,通常分为一级目标检测器和二级目标检测器两大类。 最具代表性的两级天体探测器是 R-CNN [19]系列,包括快速 R-CNN [18]、快速 R-CNN [64]、 R-FCN [9]和 Libra R-CNN [58]。 还可以使两级对象检测器成为无锚对象检测器,如 repppoints [87]。对于单级天体探测器,最有代表性的模型是 YOLO [61,62,63] ,SSD [50]和 RetinaNet [45]。 近年来,无锚点单级目标探测器得到了发展。 这类检测器有 CenterNet [13]、 CornerNet [37,38]、 FCOS [78]等。近年来发展起来的目标检测器往往在主干和头部之间插入一些层次,这些层次通常用于收集不同阶段的特征图。 我们可以称之为目标检测的颈部。通常,一个脖子由几个自底向上的路径和几个自顶向下的路径组成。 具有这种机制的网络包括特征金字塔网络(FPN)[44]、路径聚合网络(PAN)[49]、 BiFPN [77]和 nas-FPN [17]。除了上述模型之外,一些研究人员还将重点放在直接构建一个新的主干网(DetNet [43] ,DetNAS [7])或者一个新的整体模型(SpineNet [12] ,HitDetector [20])来支持目标检测。

总而言之,一个普通的目标检测器由以下几部分组成:

  • 输入:图像,补丁,图像金字塔
  • Backbones:VGG16[68] ,ResNet-50[26] ,SpineNet [12] ,EfficientNet-B0 / B7[75] ,CSPResNeXt50[81] ,CSPDarknet53[81]
  • Neck
    • 附加块:SPP [25] ,ASPP [5] ,RFB [47] ,SAM [85]
    • 路径聚合块:FPN [44] ,PAN [49] ,nas-FPN [17] ,全连接 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

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

上述的数据增强方法都是逐像素调整,并且保留调整区域中的所有原始像素信息。 此外,一些从事数据增强的研究人员将重点放在模拟物体遮挡问题上。它们在图像分类和目标检测分析方面取得了良好的效果。 例如,随机擦除[100]和抠出[11]可以随机选择图像中的矩形区域,并填入随机或互补值为零。至于捉迷藏[69]和网格掩码[6] ,它们在图像中随机或均匀地选择多个矩形区域,并将其全部替换为零。 如果将类似的概念应用于特征映射,则有 DropConnect [80]和 DropBlock [16]方法。此外,一些研究人员提出了多幅图像一起进行数据增强的方法。 例如,MixUp [92]使用两个图像对不同系数比进行叠加,然后用这些叠加比对标签进行调整。至于 CutMix [91] ,它是覆盖裁剪后的图像到其他图像的矩形区域,并根据混合区域的大小调整标签。 除了上述方法,样式转移 GAN [15]也用于数据增强,这样的使用可以有效地减少由 CNN 学习的纹理偏差。

不同于以上提出的各种方法,另一些“赠品袋”方法致力于解决数据集中的语义分布可能存在偏差的问题。在处理语义分布偏差问题时,一个非常重要的问题是不同类之间存在数据不平衡的问题,这个问题通常用两级对象检测器中的硬反例挖掘[72]或在线硬例挖掘[67]来解决。但是实例挖掘方法不适用于一级目标检测器,因为这种检测器属于密集预测结构。 因此 Lin 等人[45]提出了焦点损失来处理存在于不同类之间的数据不平衡问题。另一个非常重要的问题是难以表达不同类别之间的联想程度与一热硬表征的关系。 这种表示方案在执行标记时经常使用。文献[73]中提出的标签平滑算法是将硬标签转化为软标签进行训练,使模型更具有鲁棒性。 为了获得更好的软标签,伊斯兰等人引入了知识提取的概念来设计标签求精网络。

最后“赠品袋”是包围盒(BBox)回归的目标函数。 传统的目标检测器通常使用均方误差(MSE)直接对 BBox 的中心点坐标和高宽进行回归,即{ x c e n t e r {x_{center}} xcenter y c e n t e r {y_{center}} ycenter w w w h h h},或者左上角和右下角{ x t o p − l e f t {x_{top-left}} xtopleft y t o p − l e f t {y_{top-left}} ytopleft x b o t t o m − r i g h t {x_{bottom-right}} xbottomright y b o t t o m − r i g h t {y_{bottom-right}} ybottomright}。对于基于锚的方法,例如估计相应的偏移量{ x c e n t e r − o f f s e t {x_{center-off set}} xcenteroffset y c e n t e r − o f f s e t {y_{center-offset}} ycenteroffset w o f f s e t {w_{offset}} woffset h o f f s e t {h_{offset}} hoffset}和{ x t o p − l e f t − o f f s e t {x_{top-left-offset}} xtopleftoffset y t o p − l e f t − o f f s e t {y_{top-left-offset}} ytopleftoffset x b o t t o m − r i g h t − o f f s e t {x_{bottom-right-offset}} xbottomrightoffset y b o t t o m − r i g h t − o f f s e t {y_{bottom-right-offset}} ybottomrightoffset}。然而,直接估计 BBox 中每个点的坐标值就是将这些点视为自变量,但实际上并没有考虑对象本身的完整性。 为了使这个问题处理得更好,一些研究人员最近提出了欠条损失[90] ,它考虑了预测 BBox 区域和地面真值 BBox 区域的覆盖范围。借入损失计算过程通过执行借入地址真值来触发 BBox 的四个坐标点的计算,然后将生成的结果连接成一个完整的代码。 由于 IoU 是一种尺度不变表示,它可以解决传统方法计算 x 、 y 、 w 、 h {x、 y、 w、 h} xywh l 1 l_1 l1 l 2 l_2 l2损失时,损失随尺度增加而增加的问题。最近,一些研究人员继续改善欠条损失。 例如,除了覆盖范围之外,GIoU 的丢失包括了物体的形状和方向。 他们提出找到能同时覆盖预测 BBox 和地面真值 BBox 的最小面积 BBox,并使用这个 BBox 作为分母替换最初在 IoU 损失中使用的分母。至于丢失[99] ,它另外考虑了物体中心的距离,丢失[99] ,另一方面同时考虑了重叠面积、中心点之间的距离和纵横比。 CIoU可以在 BBox 回归问题上获得更好的收敛速度和精度。

2.3 Bag of specials

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

可用于增强感受野的常用模块有 SPP [25]、 ASPP [5]和 RFB [47]。 Spp 模块源于空间金字塔匹配(Spatial Pyramid Matching,SPM)[39] ,SPM 原始方法是将特征映射拆分为若干个 d × d d×d d×d相等的块,其中 d d d 可以是 {1,2,3,…},从而形成空间金字塔,然后提取字包特征。Spp 将 SPM 引入到 CNN 中,采用最大池操作代替单纯的单纯的单纯的单纯的单纯的单纯的字包操作。 由于 SPP 模块输出的是一维特征向量,因此在完全卷积网络(FCN)中应用是不可行的。因此,在 YOLOv3[63]的设计中,Redmon 和 Farhadi 将 SPP 模块改进为将内核大小为 k × k k×k k×k 的 max-pooling 输出连接起来,其中 k = 1 , 5 , 9 , 13 k={1, 5, 9, 13} k=1,5,9,13,并且 stride 等于1。 在这种设计下,相对较大的 k × k k×k k×k 最大池有效地增加了骨干特征的接受域。在添加了 SPP 模块的改进版本之后,YOLOv3-608对 MS COCO 目标检测任务的 AP50进行了2.7% 的升级,但增加了0.5% 的计算量。Aspp [5]模块与改进 SPP 模块在运算上的差异主要表现在原 k × k k×k k×k 内核大小、步长最大汇聚等于1ー几个 3 × 3 3×3 3×3内核大小、扩张比等于 k k k、步长等于1等方面。RFB 模块是利用 k × k k×k k×k 内核的几个扩张的卷积,扩张比等于 k k k,步长等于1,获得比 ASPP 更全面的空间覆盖。 RFB [47]只需7% 的额外推断时间,就可以使 MS COCO 上 SSD 的 A P 50 AP_{50} AP50增加5.7% 。

目标检测注意模型主要分为通道注意和点注意,这两种注意模型的代表分别是挤压-激发注意和空间注意模型。虽然 SE 模块可以提高 ResNet50在 imageet 图像分类任务中的1% top-1准确率,但只需增加2% 的计算量,但在 GPU 上通常会增加约10% 的推理时间,因此更适合在移动设备上使用。但是对于 SAM,它只需要额外支付0.1% 的计算量,并且在 ImageNet 图像分类任务中可以提高 ResNet50-SE 0.5% 的 top-1精度。 最重要的是,它完全不影响 GPU 上的推理速度。

在特性集成方面,早期的做法是使用跳过连接[51]或超列[22]将低级物理特性集成到高级语义特性。 随着 FPN 等多尺度预测方法的普及,人们提出了许多集成不同特征金字塔的轻量级模块。 这类模块包括 SFAM [98]、 ASFF [48]和 BiFPN [77]。SFAM 的主要思想是利用 SE 模块对多尺度级联特征映射进行信道级重加权。 对于 ASFF,它使用软最大值作为点的水平重新加权,然后添加不同尺度的特征映射。 在 BiFPN 中,提出了多输入加权残差连接方法进行逐级重新加权,然后添加不同尺度的特征映射。

在深度学习的研究中,有些人把注意力放在寻找好的激活函数上。 一个好的激活函数可以使梯度更有效地传播,同时它不会造成太多额外的计算开销。在2010年,Nair 和 Hinton 提出了 ReLU 来解决传统的 tanh 和 sigmoid 激活函数中经常遇到的渐变消失问题。 随后又提出了求解梯度消失问题的 LReLU [54] ,PReLU [24] ,ReLU6[28] ,Scaled Exponential Linear Unit (SELU)[35] ,Swish [59] ,hard-swmish [27]和[55]等。Lrelu 和 PReLU 的主要目的是解决当输出小于零时 ReLU 的梯度为零的问题。 对于 ReLU6和 hard-Swish,它们是专门为量化网络设计的。 为了对神经网络进行自规范化,提出了 SELU 神经网络激活函数来满足这一目标。 需要注意的一点是,Swish 和 Mish 都是可以不断区分的激活函数。

在基于深度学习的目标检测中,常用的后处理方法是 NMS,它可以用来过滤那些预测同一对象不准确的 bbox,并且只保留响应较高的候选 bbox。 Nms 试图改进的方法与优化目标函数的方法是一致的。由于 NMS 提出的方法没有考虑上下文信息,所以 Girshick 等人在 R-CNN 中加入了分类置信度评分作为参考,并按置信度评分的顺序,将贪婪 NMS 按高分到低分的顺序执行。对于软 NMS [1] ,它考虑了对象的遮挡可能导致具有 IoU 分值的贪婪 NMS 的信心分值降低的问题。 Diou NMS [99]开发人员的思路是在软 NMS 的基础上,在 BBox 筛选过程中加入中心点距离信息。值得一提的是,由于上述后处理方法都不直接涉及捕获的图像特征,因此在随后开发无锚方法时不再需要后处理。

3、方法

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

  • 对于 GPU,我们在卷积层中使用少量的组(1-8) : CSPResNeXt50 / CSPDarknet53
  • 对于 VPU,我们使用分组卷积,但是我们避免使用 Squeeze-and-excitement (SE)块,特别是包括以下模型: EfficientNet-lite / MixNet [76] / GhostNet [21] / mobileenetv3

3.1 Selection of architecture

我们的目标是在输入网络分辨率、卷积层数、参数数( f i l e t e r − s i z e 2 ∗ f i l t e r s ∗ c h a n n e l / g r o u p s {fileter-size}^2 * filters* channel / groups filetersize2filterschannel/groups)和层输出数(filters)之间找到最佳平衡。 例如,我们的大量研究表明,在 ILSVRC2012(ImageNet)数据集[10]的对象分类方面,CSPRessnext50比 CSPDarknet53要好得多。然而,相反,CSPDarknet53在检测 MS COCO 数据集上的对象方面比 CSPResNext50要好。

接下来的目标是从不同的检测器水平,如 FPN,PAN,ASFF,BiFPN,从不同的骨干水平选择额外的块来增加感受野和最佳的参数聚合方法。

一个最适于分类的参考模型对于检测器来说并不总是最优的。 与分类器相比,检测器需要如下:

  • 更高的输入网络大小(分辨率)-检测多个小尺寸的对象
  • 更多的层-更高的接受领域,以覆盖增加的输入网络规模
  • 更多的参数-更大的能力,一个模型,以检测多个不同大小的对象在一个单一的形象

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

表1:图像分类的神经网络参数
目标检测之YOLOv4_第2张图片

不同大小感受野的影响概述如下:

  • 最大对象大小—允许查看整个对象
  • 最大网络大小—允许查看对象周围的上下文
  • 超过网络大小—增加图像点和最终激活之间的连接数量

我们在 CSPDarknet53上添加 SPP 块,因为它显著增加了感受域,分离出最重要的上下文特征,并且几乎不会降低网络运行速度。 我们使用聚苯乙烯网络作为参数聚合的方法,从不同的骨干级别为不同的检测器级别,而不是 FPN 使用 YOLOv3。

最后,我们选择了 CSPDarknet53骨干、 SPP 附加模块、 PANet 路径聚合脖和 YOLOv3(基于锚的)头作为 YOLOv4的体系结构。

今后,我们计划大幅度增加"袋装免费赠品"(BoF)的含量,从理论上解决一些问题,提高检测精度,并以实验的方式依次检验各特征对检测结果的影响。

我们不使用跨GPU批量标准化(CGBN 或 SyncBN)或昂贵的专用设备。 这使得任何人都可以在传统的图形处理器(如 GTX 1080Ti 或 RTX 2080Ti)上重现我们最先进的成果。

3.2 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 [36],Spatial DropOut [79], or DropBlock
  • Normalization of the network activations by their mean and variance: Batch Normalization (BN) [32],Cross-GPU Batch Normalization (CGBN or SyncBN)[93], Filter Response Normalization (FRN) [70], or Cross-Iteration Batch Normalization (CBN) [89]
  • Skip-connections: Residual connections, Weighted residual connections, Multi-input weighted residual connections, or Cross stage partial connections (CSP)

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

3.3 Additional improvements

为了使设计的探测器更适合在单 GPU 上进行训练,我们进行了如下额外的设计和改进:

  • 本文介绍了一种新的数据增强拼接方法,即自对抗训练(SAT)
  • 在应用遗传算法时,我们选择了最优的超参数
  • 我们修改了一些现有的方法,使我们的设计适合于高效的训练和检测-修改 SAM,修改 PAN,和交叉小批量归一化(CmBN)

马赛克提出了一种混合4幅训练图像的数据增强方法。 因此,4个不同的上下文是混合的,而 CutMix 只混合了2个输入图像。 这允许在正常上下文之外检测对象。 此外,批量标准化计算激活统计从每个层的4个不同的图像。 这显著减少了对大批量小批量产品的需求。

自我对抗训练(SAT)也代表了一种新的数据增强技术,在两个前向后退阶段操作。 在第一阶段,神经网络改变原始图像而不是网络权值。 通过这种方式,神经网络对自身进行对抗性攻击,改变原始图像以制造图像上没有所需物体的欺骗。 在第二阶段,训练神经网络以正常方式检测修改后的图像上的目标。

CmBN 表示 CBN 的修改版本,如图4所示,定义为交叉小批量标准化(Cross mini-Batch Normalization,CmBN)。 这只收集一个批次内的小批次之间的统计数据。
目标检测之YOLOv4_第3张图片
图4:交叉小批量归一化

我们将 SAM 从空间方向的注意改为点状注意,并将 PAN 的快捷连接改为串联,分别如图5和图6所示。

图5、图6:
目标检测之YOLOv4_第4张图片
3.4 YOLOv4

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

Yolov4包括:

  • Backbone: CSPDarknet53 [81]
  • Neck: SPP [25], PAN [49]
  • Head: YOLOv3 [63]

YOLO v4 使用:

  • 主干“免费赠品袋”(BoF) : CutMix 和 Mosaic 数据增强,DropBlock正规化,类标签平滑
  • 骨干“特殊连接袋”(BoS) : Mish 激活,跨级部分连接(CSP) ,多输入加权残差连接(MiWRC)
  • 用于检测器的“免费袋”(BoF) : CIoU-loss,CmBN,DropBlock 正规化,Mosaic 数据增强,自对抗训练,消除网格敏感性,使用多个锚点来获得单一地面真实值,退火调度程序[52] ,最优超参数,随机训练形状
  • 检测器“免费袋”: Mish激活,SPP-block,SAM-block,PAN 路径聚合块,DIoU-NMS

4、实验

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

4.1 实验设置

在 ImageNet 图像分类实验中,默认的超参数为: 训练步长为8,000,000,批量大小和最小批量大小分别为128和32,采用多项式衰减学习速率调度策略,初始学习速率为0.1,预热步长为1000,动量和权值衰减分别为0.9和0.005。我们所有的 BoS 实验都使用相同的超参数作为默认设置,在 BoF 实验中,我们增加了额外的50% 的训练步骤。 在 BoF 实验中,我们验证了 MixUp、 CutMix、 Mosaic、 Bluring 数据增强和标签平滑正则化方法。 在 BoS 实验中,我们比较了 LReLU、 Swish 和 Mish 激活函数的效果。 所有实验都使用1080ti 或2080ti GPU 进行训练。

在 MS COCO 目标检测实验中,默认的超参数如下: 训练步长为500,500; 采用步长衰减学习率调度策略,初始学习速率为0.01,在400,000步和450,000步分别乘以0.1因子; 动量和重量衰减分别设置为0.9和0.0005。所有的体系结构使用一个单一的 GPU 来执行批量大小为64的多尺度训练,而小批量大小为8或4取决于体系结构和 GPU 的内存限制。 除了使用遗传算法进行超参数搜索实验外,所有其他实验都使用默认设置。 遗传算法使用 YOLOv3-SPP 进行 GIoU 损失训练,并搜索300个单元的 min-val 5k 集。遗传算法实验采用搜索学习率0.00261,动量0.949,IoU阈值0.213,损失正规化子0.07。 我们验证了大量的 BoF,包括网格灵敏度消除、mosaic数据增强、 IoU 阈值、遗传算法、类标记平滑、交叉小批量归一化、自对抗训练、余弦退火调度器、动态小批量、 DropBlock、优化锚、不同类型的 IoU 损失。我们也在各种 BoS 上进行实验,包括 Mish、 SPP、 SAM、 RFB、 BiFPN 和 Gaussian YOLO [8]。 对于所有的实验,我们只使用一个 GPU 进行训练,因此没有使用诸如 syncBN 这样的技术来优化多个 GPU。

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

首先,我们研究了不同特征对分类器训练的影响,特别是类别标签平滑的影响,不同数据增强技术、双边模糊、混合、 CutMix 和 Mosaic 对分类器训练的影响,以及不同激活方式如 Leaky-ReLU (默认)、 Swish 和 Mish 对分类器训练的影响。

图7:
目标检测之YOLOv4_第5张图片

在我们的实验中,如表2所示,通过引入诸如 CutMix 和 Mosaic 数据增强、类标签平滑和 Mish 激活等特性,提高了分类器的准确性。 因此,我们用于分类器训练的 BoFbackbone (袋子的免费品)包括以下内容: CutMix 和 Mosaic 数据增强和类别标签平滑。 此外,我们使用 Mish 激活作为一个补充选项,如表2和表3所示。

表2、表3:
目标检测之YOLOv4_第6张图片

4.3 不同特征对探测器训练的影响

表4:
目标检测之YOLOv4_第7张图片
进一步的研究关注不同袋免费品(bof 检测器)对检测器训练精度的影响,如表4所示。 通过研究在不影响 FPS 的情况下提高探测器精度的不同特征,我们显著地扩展了 BoF 列表:

  • S:消除方程式 b x = σ ( t x ) + c x b_x={\sigma}(t_x)+c_x bx=σ(tx)+cx b y = σ ( t y ) + c y b_y={\sigma}(t_y)+c_y by=σ(ty)+cy其中 c x c_x cx c y c_y cy 总是整数,在 YOLOv3中用于计算目标坐标,因此,接近 c x c_x cx c x + 1 c_x+1 cx+1值的 b x b_x bx 值需要极高的 t x t_x tx 绝对值。 我们通过将乘以超过1.0的因子来解决这个问题,从而消除了网格对目标不可检测的影响。
  • M:马赛克数据增强-在训练过程中使用4图像马赛克代替单一图像
  • IT:Iou 阈值-使用多个锚定为一个地面真值 IoU (真值,锚定) >IoU 阈值
  • GA:遗传算法-使用遗传算法选择最佳超参数在网络训练的前10% 的时间周期
  • LS:类别标签平滑—使用类标签平滑的乙状结肠激活
  • CBN:CmBN—使用交叉小批量归一化来收集整个批次内的统计数据,而不是收集单个小批次内的统计数据
  • CA:余弦退火调度程序—在正弦波训练中改变学习频率
  • DM:动态小批量尺寸—利用随机训练形状实现小分辨率训练中小批量的自动增加
  • OA:优化锚—使用优化的锚与512x512网络分辨率的培训
  • GIoU,CIoU,DIoU,MSE:对有界箱回归采用不同的损失算法

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

表5
目标检测之YOLOv4_第8张图片

4.4 不同骨架和预训加权对探测器训练的影响

进一步研究了不同骨干模型对探测器精度的影响,如表6所示。 我们注意到,以最佳分类精度为特征的模型在检测器精度方面并不总是最佳的。

表6:
目标检测之YOLOv4_第9张图片

首先,虽然经过不同特征训练的 CSPResNeXt-50模型的分类准确率高于 CSPDarknet53模型,但 CSPDarknet53模型在目标检测方面表现出更高的准确率。

其次,在 CSPResNeXt50分类器训练中使用 BoF 和 Mish 分类器可以提高其分类精度,但是将这些预先训练的加权值进一步应用于检测器训练会降低检测器的精度。 然而,在 CSPDarknet53分类器训练中使用 BoF 和 Mish 可以提高分类器和使用这种分类器预先训练的权重值的检测器的准确性。 最终的结果是主干 CSPDarknet53比 CSPResNeXt50更适合于检测器。

我们观察到,由于各种改进,CSPDarknet53模型显示了提高探测器精度的更大能力。

4.5 不同小批量对检测器训练的影响

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

表7:
目标检测之YOLOv4_第10张图片

5、结果

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

图8:
目标检测之YOLOv4_第11张图片

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

表8:
目标检测之YOLOv4_第12张图片

表9:
目标检测之YOLOv4_第13张图片

表10:
目标检测之YOLOv4_第14张图片

6、结论

我们提供一个最先进的检测器,它是更快(FPS)和更准确(MS COCO A P 50...95 AP_{50...95} AP50...95 A P 50 AP_{50} AP50)比所有可用的替代检测器。 所述探测器可以在8-16 GB-VRAM 的常规 GPU 上进行训练和使用,这使其广泛的应用成为可能。 基于单级锚定探测器的原始概念已经证明了它的可行性。 为了提高分类器和检测器的准确率,我们对大量的特征进行了验证,并对其进行了选择。 这些特性可以作为未来研究和开发的最佳实践。

你可能感兴趣的:(目标检测)