乐趣区

重磅YOLOv4阅读笔记附思维导图和论文译文

今天刷看到了 YOLOv4 之时,有点激动和兴奋,等了很久的 YOLOv4,你终究还是出现了

论文地址:https://arxiv.org/pdf/2004.10934.pdf

GitHub 地址:https://github.com/AlexeyAB/darknet

觉得作者很地道,论文附上开源,没有比这更开心的事情了吧!

首先附上对论文总结的思维导图,帮助大家更好的理解!

下边是对论文的翻译,有些地方可能翻译的不是很准备,欢迎指正补充

(思维导图和论文译文 PDF 均可在公众号【计算机视觉联盟】回复 YOLOv4 获取)

摘要

有很多特征可以提高卷积神经网络(CNN)的准确性。需要在大型数据集上对这些特征的组合进行实际测试,并需要对结果进行理论证明。某些特征仅在某些模型上运行,并且仅在某些问题上运行,或者仅在小型数据集上运行;而某些特征(例如批归一化和残差连接)适用于大多数模型,任务和数据集。我们假设此类通用特征包括加权残差连接(WRC),跨阶段部分连接(CSP),交叉小批量标准化(CmBN),自对抗训练(SAT)和 Mish 激活。我们使用以下新功能:WRC,CSP,CmBN,SAT,Mish 激活,马赛克数据增强,CmBN,DropBlock 正则化和 CIoU 丢失,并结合其中的一些特征来实现最新的结果:在 MS COCO 数据集上利用 Tesla V10 以 65 FPS 的实时速度获得了 43.5% 的 AP(65.7%AP50)。开源代码链接:https://github.com/AlexeyAB/darknet。

1、介绍

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

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

  1. 我们开发了一个高效且功能强大的目标检测模型。它使每个人都可以使用 1080Ti 或 2080TiGPU 来训练超快、精确的物体探测器。
  2. 我们验证了当前最新的“免费袋”和“特殊袋”检测方法在探测器训练过程中的影响。
  3. 我们修改了最新的方法,使其更有效,更适合于单个 GPU 的培训,包括 CBN[89]、PAN[49]、SAM[85]等。

2、相关工作(Related work)

2.1 目标检测算法(Object detection models)

目标检测算法一般有两部分组成:一个是在 ImageNet 预训练的骨架(backbone),,另一个是用来预测对象类别和边界框的头部。对于在 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]。还可以使两级对象检测器成为无锚对象检测器,例如 RepPoints [87]。对于一级目标检测器,最具代表性的模型是 YOLO [61、62、63],SSD [50]和 RetinaNet [45]。近年来,开发了无锚的(anchor free)一级物体检测器。这类检测器是 CenterNet [13],CornerNet [37、38],FCOS [78]等。近年来,无锚点单级目标探测器得到了发展,这类探测器有 CenterNet[13]、CornerNet[37,38]、FCOS[78]等。近年来发展起来的目标探测器经常在主干和头部之间插入一些层,这些层通常用来收集不同阶段的特征图。我们可以称它为物体探测器的颈部。通常,颈部由几个自下而上的路径和几个自上而下的路径组成。具有这种机制的网络包括特征金字塔网络 (FPN)[44]、路径聚集网络(PAN)[49]、BiFPN[77] 和 NAS-FPN[17]。除上述模型外,一些研究人员将重点放在直接构建用于检测对象的新主干(DetNet [43],DetNAS [7])或新的整个模型(SpineNet [12],HitDe-tector [20])上。

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

  • 输入:图像,斑块,图像金字塔
  • 骨架:VGG16 [68],ResNet-50 [26],SpineNet [12],EfficientNet-B0 / B7 [75],CSPResNeXt50 [81],CSPDarknet53 [81]
  • 颈部:

    • 其他块:SPP [25],ASPP [5],RFB [47],SAM [85]
    • 路径聚合块:FPN [44],PAN [49],NAS-FPN [17] ],Fully-connected FPN,BiFPN [77],ASFF [48],SFAM [98]
  • Heads:

    • 密集预测(一阶段):

      • RPN[64],SSD [50],YOLO [61],RetinaNet [45](基于锚)
      • CornerNet[37],CenterNet [13],MatrixNet [60],FCOS [78](无锚)
  • 稀疏预测(两阶段):

    • Faster R-CNN [64],R-FCN [9],Mask R-CNN [23](基于锚)
    • RepPoints[87](无锚)

2.2 Bag of freebies

通常,传统的物体检测器是离线训练的。因此,研究人员一直喜欢采用这种优势并开发出更好的训练方法,从而可以使目标检测器获得更好的精度而又不会增加推理成本。我们称这些仅改变培训策略或仅增加培训成本的方法为“免费赠品”。数据检测是对象检测方法经常采用的并符合免费赠品的定义。数据增强的目的是增加输入图像的可变性,从而使设计的物体检测模型对从不同环境获得的图像具有更高的鲁棒性。例如,光度失真和几何失真是两种常用的数据增强方法,它们无疑有利于物体检测任务。在处理光度失真时,我们调整图像的亮度,对比度,色相,饱和度和噪点。对于几何失真,我们添加了随机缩放,裁剪,翻转和旋转。

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

与上面提出的各种方法不同,其他一些免费赠品方法专用于解决数据集中语义分布可能存在偏差的问题。在处理语义分布偏向问题时,一个非常重要的问题是不同类之间存在数据不平衡的问题 ,这一问题通常是通过两阶段对象设计器中的难例挖掘[72] 或在线难例挖掘 [67] 来解决的。但是实例挖掘方法不适用于一级目标检测器,因为这种检测器属于密集预测架构。因此 Linet 等 [45]提出了焦点损失,以解决各个类别之间存在的数据不平衡问题。另一个非常重要的问题是,很难用 one-hot representation 来表达不同类别之间的关联度。这种表示方法经常在执行标签时使用。[73]中提出的标签平滑是将硬标签转换为软标签以进行训练,这可以使模型更加健壮。为了获得更好的软标签,Islamet 等人 [33] 引入知识蒸馏的概念来设计标签优化网络。

最后一袋赠品是边界框回归的目标函数。传统的目标检测器通常使用均方误差 (MSE) 直接对 BBox 的中心点坐标和高度、宽度进行回归 ,即{xcenter,ycenter,w,h},或者对左上角和右下点,即{xtopleft,ytopleft,xbottomright,ybottomright} 进行回归。对于基于锚点的方法,是估计相应的偏移量 ,例如{xcenterOffset,ycenterOffset,wOffset,hoffset} 和{xtopleftoffset,ytopleftoffset,xbottomright toffset,ybottomright toffset},例如 {xtopleftoffset,ytopleftoffset} 和{xtopleftoffset,ytopleftoffset}。然而,直接估计 BBox 中每个点的坐标值是将这些点作为独立变量来处理,而实际上并没有考虑对象本身的完整性。为了更好地处理这一问题,最近一些研究人员提出了 IoU loss[90],将预测 BBOX 区域的覆盖率和地面真实 BBOX 区域的覆盖率考虑在内。IOU loss 计算过程将触发 BBOX 的四个坐标点的计算,方法是执行具有地面实况的借条,然后将生成的结果连接到一个完整的代码中。由于 IOU 是一种标度不变的表示,它可以解决传统方法计算 {x,y,w,h} 的 l1 或 l2 个损失时,损失会随着尺度的增大而增大的问题。最近,搜索者不断改善欠条损失。例如,GIOU 损失 [65] 除了包括覆盖区域外,还包括对象的形状和方向。他们提出找出能同时覆盖预测 BBOX 和实际 BBOX 的最小面积 BBOX,并用这个 BBOX 作为分母来代替原来在欠条损失中使用的分母。对于 DIoU loss[99],它另外考虑了物体中心的距离,而 CIoU 损失 [99] 则同时考虑了重叠面积、中心点之间的距离和纵横比。在求解 BBox 回归问题时,Ciou 可以达到较好的收敛速度和精度。

2.3 Bag of spedials

对于那些仅增加少量推理成本但可以显着提高对象检测准确性的插件模块和后处理方法,我们将其称为“特价商品”。一般而言,这些插件模块用于增强模型中的某些属性,例如扩大接受域,引入注意力机制或增强特征集成能力等,而后处理是用于筛选模型预测结果的方法。

可以用来增强接收域的通用模块是 SPP [25],ASPP [5]和 RFB [47]。SPP 模块起源于空间金字塔匹配(SPM)[39],SPM 的原始方法是将功能图分割成若干 x 不等的块,其中 {1,2,3,…} 可以是空间金字塔,然后提取词袋特征。SPP 将 SPM 集成到 CNN 中,并使用最大池操作而不是词袋运算。由于 Heet 等人提出了 SPP 模块。[25]将输出一维特征向量,在全卷积网络(FCN)中应用是不可行的。因此,在 YOLOv3 的设计中 [63],Redmon 和 Farhadi 将 SPP 模块改进为内核大小为 k×k 的最大池输出的串联,其中 k = {1,5,9,13},步长等于 1。在这种设计下,相对大 k×kmax 池有效地增加了骨干特征的接受范围。在添加了改进版本的 SPP 模块之后,YOLOv3-608 在 MS COCOobject 检测任务上将 AP50 升级了 2.7%,而额外的计算费用为 0.5%。ASPP[5] 模块和改进的 SPP 模块之间的操作差异主要来自于原始 k× kkernel 大小,最大卷积步长等于 1 到 3×3 内核大小,膨胀比等于 tok,步长等于 1。RFB 模块将使用 k×kkernel 的几个扩张卷积,扩张比率 equalstok 和步幅等于 1 来获得比 ASPP 更全面的空间覆盖范围。RFB [47]仅花费 7%的额外推断时间即可将 MS COCO 上 SSD 的 AP50 提高 5.7%。

物体检测中常用的注意模块主要分为通道式注意和点式注意,这两种注意模型的代表分别是挤压激发 (SE)[29] 和空间注意模块(SAM)[85]。虽然 SE 模块在 Im-ageNet 图像分类任务中可以提高 1% 的 TOP- 1 准确率,但是在 GPU 上通常会增加 10% 左右的推理时间,因此更适合在移动设备上使用,虽然 SE 模块在 Im-ageNet 图像分类任务中可以提高 1% 的 TOP- 1 准确率,但是在 GPU 上通常会增加 10% 左右的推理时间。而对于 SAM,它只需要额外支付 0.1% 的计算量,在 ImageNet 图像分类任务上可以提高 ResNet50-SE 0.5% 的 TOP- 1 准确率。最棒的是,它完全不影响 GPU 上的推理速度。

在特征集成方面,早期的实践是使用 KIP 连接 [51] 或超列 [22] 将低级物理特征集成到高级语义特征。随着模糊神经网络等多尺度预测方法的普及,人们提出了许多集成不同特征金字塔的轻量级模块。这种类型的模块包括 SfAM[98]、ASFF[48]和 BiFPN[77]。SfAM 的主要思想是使用 SE 模块对多比例尺拼接的特征地图进行通道级的加权。ASFF 采用 Softmax 作为逐点层次加权,然后添加不同尺度的特征地图;BiFPN 采用多输入加权残差连接进行尺度层次重新加权,再添加不同尺度的特征地图。

在深度学习的研究中,有些人专注于寻找良好的激活功能。良好的激活函数可以使梯度更有效地传播,同时不会引起过多的计算成本。在 2010 年,Nair 和 Hin-ton [56]提出了 ReLU,以基本上解决传统 tanh 和 sigmoid 激活函数中经常遇到的梯度消失问题。随后,LReLU [54],PReLU [24],ReLU6 [28],比例指数线性单位(SELU)[35],Swish [59],hard-Swish [27]和 Mish [55]等,它们也是已经提出了用于解决梯度消失问题的方法。LReLU 和 PReLU 的主要目的是解决当输出小于零时 ReLU 的梯度为零的问题。至于 ReLU6 和 hard-Swish,它们是专门为量化网络设计的。为了对神经网络进行自归一化,提出了 SELU 激活函数来满足这一目标。要注意的一件事是,Swish 和 Mishare 都具有连续可区分的激活功能。

在基于深度学习的对象检测中通常使用的后处理方法是 NMS,它可以用于过滤那些无法预测相同对象的 BBox,并仅保留具有较高响应速度的候选 BBox。NMS 尝试改进的方法与优化目标函数的方法一致。NMS 提出的原始方法没有考虑上下文信息,因此 Girshicket 等人。[19]在 R -CNN 中添加了分类置信度得分作为参考,并且根据置信度得分的顺序,从高分到低分的顺序执行贪婪的 NMS。对于软网络管理系统 [1],考虑了一个问题,即物体的遮挡可能会导致带有 IoU 评分的贪婪的网络管理系统的置信度得分下降。DIoU NMS [99] 开发人员的思维方式是在 softNMS 的基础上将中心距离的信息添加到 BBox 筛选过程中。值得一提的是,由于上述后处理方法均未直接涉及捕获的图像功能,因此在随后的无锚方法开发中不再需要后处理。

3、方法(Methodology)

其基本目标是在生产系统中对神经网络进行快速操作,并针对并行计算进行优化,而不是低计算量理论指示器(BFLOP)。我们提供了实时神经网络的两种选择:

  • 对于 GPU,我们使用少量的组(1-8)卷积层:CSPResNeXt50 / CSPDarknet53
  • 对于 VPU- 我们使用分组卷积,但是我们不再使用挤压和激发(SE)块 - 特别是这包括以下模型:EfficientNet-lite / MixNet [76] / GhostNet [21] / Mo-bileNetV3

3.1 Selection of architecture

我们的目标是在输入网络分辨率,卷积层数,参数数(filtersize2 过滤器 通道 / 组)和层输出(过滤器)数目之间找到最佳平衡。例如,大量研究表明,在 ILSVRC2012(ImageNet)数据集的对象分类方面,CSPResNext50 比 CSPDarknet53 更好。然而,相反,就检测 MS COCO 数据集上的对象而言,CSPDarknet53 比 CSPResNext50 更好。

下一个目标是为不同的检测器级别从不同的主干级别中选择其他块以增加接收场和参数聚集的最佳方法:FPN,PAN,ASFF,BiFPN。

对于分类最佳的参考模型对于检测器并非总是最佳的。与分类器相比,检测器需要满足以下条件:

  • 更大的网络输入,用于检测小目标
  • 更多的层 - 以获得更大的感受野来覆盖增大的输入图像
  • 更多的参数 - 为了增强从单张图像中检测出不同大小的多个对象的能力

假设可以选择接受场较大 (卷积层数为 3×3) 和参数数较多的模型作为主干。表 1 显示了 CSPResNeXt50、CSPDarknet53 和 Effi-cientNet B3 的信息。CSPResNext50 只包含 16 个卷积层 3×3,425×425 感受野和 20.6M 参数,而 CSPDarknet53 包含 29 个卷积层 3×3,725×725 感受野和 27.6M 参数。这一理论证明,再加上我们的大量实验,表明 CSPDarknet53 神经网络是 两者作为探测器骨干 最佳模型

不同大小的感受野对检测效果的影响如下所示:

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

我们在 CSPDarknet53 上添加 SPP 块,因为它显著增加了接受场,分离出最重要的上下文特征,并且几乎不会降低网络操作速度。 我们使用 PANET 代替 YOLOv3 中使用的 FPN作为不同骨级的参数聚合方法,用于不同的检测器级别。

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

将来,我们计划显着扩展检测器的赠品袋(BoF)的内容,从理论上讲,它可以解决一些问题并提高检测器的准确性,并以实验方式依次检查每个功能的影响。

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

3.2 Selection of BoF and BoS

为了改进目标检测训练,CNN 通常使用以下方法:

  • 激活:ReLU,leaky-ReLU,parameter-ReLU,ReLU6,SELU,Swish 或 Mish
  • 边界框回归损失:MSE,IoU,GIoU,CIoU,DIoU
  • 数据增强:CutOut,MixUp,CutMix
  • 正则化方法:DropOut,DropPath [36],Spatial DropOut [79]或 DropBlock
  • 通过均值和方差对网络激活进行归一化:Batch Normalization (BN) [32],Cross-GPU Batch Normalization (CGBN or SyncBN)[93], Filter Response Normalization (FRN) [70], orCross-Iteration Batch Normalization (CBN) [89]
  • 跨连接:Residual connections, Weightedresidual connections, Multi-input weighted residualconnections, or Cross stage partial connections (CSP)

至于训练激活功能,由于 PReLU 和 SELU 更难训练,并且 ReLU6 是专门为量化网络设计的,因此我们从候选列表中删除了上述激活功能 。在重新量化方法中,发布 Drop-Block 的人们将自己的方法与其他方法进行了详细的比较,而其正则化方法赢得了很多。因此, 我们毫不犹豫地选择了 DropBlock 作为我们的正则化方法。至于标准化方法的选择,由于我们专注于仅使用一个 GPU 的训练策略,因此不考虑 syncBN。

3.3 Additional improvements

为了使设计的检测器更适合在单个 GPU 上进行训练,我们进行了以下 附加设计和改进:

  • 我们引入了一种新的数据增强方法:Mosaic, and Self-Adversarial Training (SAT)
  • 在应用遗传算法时,我们选择最优的超参数
  • 我们修改了一些现有方法,使我们的设计适合进行有效的训练和检测 - 改进的 SAM,改进的 PAN,以及跨小批量标准化(CmBN)

Mosaic 是一种新的混合 4 幅训练图像的数据增强方法。所以四个不同的上下文信息被混合,而 CutMix 只混合了 2 种。

这允许检测其正常上下文之外的对象。此外,批量归一化从每层上的 4 个不同的图像计算激活统计。这极大地减少了对 large mini-batch-size 的需求。

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

CmBN 表示 CBN 的修改版本,如图 4 所示,定义为交叉小批量规范化(Cross mini-Batch Normalization,CMBN)。这仅在单个批次内的小批次之间收集统计信息。

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

3.4 YOLOv4

在本节中,我们将详细介绍 YOLOv4 的细节。

YOLOv4 的组成:

YOLOv4 的使用:

4、Experiments

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

4.1 Experimental setup

在 ImageNet 图像分类实验中,缺省超参数如下:训练步数为 800 万步;batch size 和 mini-batch size 分别为 128 和 32;采用多项式衰减学习率调度策略,初始学习率为 0.1;预热步数为 1000 步;动量和权值分别设置为 0.9 和 0.005。我们所有的 BoS 实验都使用与默认设置相同的超参数,并且在 BoF 实验中,我们增加了 50% 的训练步骤。在 BoF 实验中,我们验证了 MixUp、CutMix、Mosaic、Bluring 数据增强和标记平滑正则化方法。在 BoS 实验中,我们比较了 LReLU、SWISH 和 MISHISH 激活函数的效果。所有实验均使用 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-Val5k 集。我们采用搜索学习率 0.00261,动量 0.949,IOU 阈值分配地面真值 0.213,损失归一化 0.07% 进行遗传算法实验。我们验证了大量的 BoF 算法,包括网格敏感度消除、moSAIC 数据增强、IOU 阈值、遗传算法、类标签平滑、交叉小批量归一化、自对抗训练、余弦退火调度器、动态小批量大小、DropBlock、优化锚点、不同类型的 IOU 损失。我们还在不同的 BoS 上进行了实验,包括 MISH、SPP、SAM、RFB、BiFPN 和 Gaus-Sian YOLO[8]。对于所有的实验,我们只使用一个 GPU 进行训练,因此不使用诸如优化多个 GPU 的 syncBN 之类的技术。

4.2 Influence of different features on Classifier training

首先,我们研究了不同特征对分类器训练的影响;具体地说,类标签平滑的影响,不同数据扩充技术的影响,双边模糊,混合,CutMix 和马赛克,如图 7 所示,以及不同活动的影响,如 Leaky-relu(默认情况下),SWISH 和 MISH。

在我们的实验中,如表 2 所示,通过引入诸如:CutMix 和 Mosaic 数据增强、类标签平滑和 Mish 激活等特征,提高了分类器的精度。因此,我们用于分类器训练的 BoF-Backbone(Bag Of Freebies)包括以下内容:CutMix 和 Mosaic 数据增强以及类标签平滑。此外,我们还使用 MISH 激活作为补充选项,如表 2 和表 3 所示。

4.3 Influence of different features on Detector training

进一步的研究涉及不同的免费袋 (BOF 探测器) 对探测器训练精度的影响,如表 4 所示。我们通过研究在不影响 FPS 的情况下提高探测器精度的不同特性,显著扩展了 BOF 列表:

进一步研究了不同的专业袋 (BOS 检测器) 对检测器训练精度的影响,包括 PAN、RFB、SAM、高斯 YOLO(G)和 ASFF,如表 5 所示。在我们的实验中,当使用 SPP、PAN 和 SAM 时,检测器的性能最佳。

4.4 Influence of different backbones and pretrained weightings on Detector training

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

首先,尽管与 CSPDarknet53 模型相比,经过不同功能训练的 CSPResNeXt-50 模型的分类准确性更高,但 CSPDarknet53 模型在对象检测方面显示出更高的准确性。

其次,使用 BoF 和 Mish 进行 CSPResNeXt50 分类器训练会提高其分类准确性,但是将这些预先训练的权重进一步应用于检测器训练会降低检测器准确性。但是,将 BoF 和 Mish 用于 CSPDarknet53 分类器训练可以提高分类器和使用该分类器预训练加权的检测器的准确性。结果是,与 CSPResNeXt50 相比,主干 CSPDarknet53 更适合于检测器。

我们观察到,由于各种改进,CSPDarknet53 模型具有更大的能力来提高检测器精度。

4.4 Influence of different mini-batch size on Detector training

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

5、Results

与其他最先进的物体探测器获得的结果比较如图 8 所示。YOLOv4 在速度和准确性方面均优于最快,为最准确的探测器。

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

6、Conclusions

我们提供最先进的检测器,其速度(FPS)和准确度(MS COCO AP50 … 95 和 AP50)比所有可用的替代检测器都高。所描述的检测器可以在具有 8 -16GB-VRAM 的常规 GPU 上进行训练和使用,这使得它的广泛使用成为可能。一阶段基于锚的探测器的原始概念已证明其可行性。我们已经验证了大量特征,并选择使用其中的一些特征以提高分类器和检测器的准确性。这些功能可以用作将来研究和开发的最佳实践。

7、Acknowledgements

作者要感谢 Glenn Jocher 进行 Mosaic 数据增强的想法,通过使用遗传算法选择超参数并解决网格敏感性问题的方法 https://github.com/ultralytics/yolov3.10。

本文由博客一文多发平台 OpenWrite 发布!

退出移动版