YOLOv4: Optimal Speed and Accuracy of Object Detection - 1 - 论文学习
YOLOv4: Optimal Speed and Accuracy of Object Detection
Abstract
据说有大量的方法可以提高卷积神经网络(CNN)的准确性。需要在大型数据集上对这些方法的组合进行实际测试,并对结果进行理论证明。某些方法只在某些模型上运行,也只在某些问题上运行,或者只在小规模数据集上运行;而一些方法,如batch-normalization和 residual-connections,适用于大多数模型、任务和数据集。我们假设这些通用方法包括Weighted-Residual-Connections (WRC), Cross-Stage-Partial-connections (CSP), Cross mini-Batch Normalization (CmBN), Self-adversarial-training (SAT) 和 Mish-activation。我们使用了新方法:WRC、CSP、CmBN、SAT、Mish activation、Mosaic data augmentation、CmBN、DropBlock正则化和CIoU 损失,并将其中一些方法结合起来,以实现最先进的结果:在MS COCO数据集上的效果为43.5% AP(65.7% AP50),其在Tesla V100上的实时速度为约每秒65帧。代码可https://github.com/AlexeyAB/darknet.
https://github.com/ ultralytics/yolov3
1. Introduction
大多数基于CNN的对象检测器基本上只适用于推荐系统。例如,通过城市视频摄像搜索免费停车位是由慢速精确模型(slow accurate models)执行的,而汽车碰撞警告则与快速不精确模型(fast inaccurate models)相关。提高实时对象检测器的准确性不仅可以将其用于提示生成推荐系统,还可以用于独立的流程管理和减少人工输入。传统图形处理单元(GPU)上的实时对象检测器操作允许以合理的价格大量使用。最精确的现代神经网络不能实时运行,需要大量的GPU来进行大mini-batch-size的训练。我们通过创建一个CNN来解决这些问题,该CNN在传统GPU上实时运行,其训练只需要一个传统GPU。
这项工作的主要目标是设计一个能在生产系统中有着快速运行速度目标检测器,并优化并行计算,而不是降低计算量理论指标(BFLOP)。我们希望设计的对象可以很容易地训练和使用。例如,任何使用传统GPU进行训练和测试的人都可以获得实时、高质量和令人信服的目标检测结果,如图1所示。我们的贡献总结如下:
1. 我们开发了一个高效、强大的目标检测模型。它使每个人都可以使用1080Ti或2080Ti的GPU来训练一个超级快速和准确的对象检测器。
2. 我们验证了最先进的Bag-of-Freebies 和 Bag-of-Specials的对象检测方法在检测器训练的影响。
3.我们改进了目前最先进的方法,使其更有效,更适合单GPU训练,其中包括CBN [89], PAN [49], SAM[85]等。
2. Related work
2.1. Object detection models
现代的检测器通常由两部分组成,一个是在ImageNet上预先训练的backbone,一个是用于预测对象的类别和边界框的head。对于那些运行在GPU平台上的探测器,它们的backbone可能是VGG [68], ResNet [26], ResNeXt[86],或DenseNet[30]。对于那些运行在CPU平台上的检测器,它们的backbone可能是SqueezeNet [31], MobileNet[28,66,27,74],或ShuffleNet[97,53]。对于head部分,通常分为两种,即one-stage目标检测器和two-stage目标检测器。最具代表性的two-stage目标检测器是R-CNN[19]系列,包括fast R-CNN [18], faster R-CNN [64], R-FCN [9], Libra R-CNN[58]。也可以将two-stage检测器制成anchor-free对象检测器,如RepPoints[87]。对于one-stage对象检测器,最具代表性的模型是YOLO[61,62,63]、SSD[50]、retina[45]。近年来,开发了anchor-free one-stage目标探测器。这类探测器有CenterNet[13]、CornerNet[37, 38]、FCOS[78]等。近年来发展起来的目标检测器通常在backbone和head之间插入一些层,这些层通常用于收集不同阶段的特征图。我们可以称它为对象检测器的neck。通常,一个neck由若干条bottom-up的路径和若干条top-down的路径组成。采用这种机制的网络包括特征金字塔网络(Feature Pyramid Network, FPN)[44]、路径聚合网络(Path Aggregation Network, PAN)[49]、BiFPN[77]和NAS-FPN[17]。
除上述模型外,一些研究者将重点放在直接构建新的backbone(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 R- CNN [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]随机或均匀地选择图像中的多个矩形区域,并将其全部替换为零。如果将类似的概念应用于特征图,则有DropOut[71]、DropConnect[80]和DropBlock[16]方法。此外,一些研究人员提出了使用多幅图像一起进行数据增强的方法。例如,MixUp[92]使用两幅图像以不同的系数比进行相乘和叠加,然后根据这些叠加比调整标签。CutMix[91]是将裁剪后的图像覆盖到其他图像的矩形区域,并根据混合区域的大小调整标签。除上述方法外,还使用了风格迁移GAN[15]进行数据增强,这种使用可以有效降低CNN学习到的纹理偏差。
与上面提出的各种方法不同,其他一些bag of freebies方法致力于解决数据集中的语义分布可能存在偏差的问题。在处理语义分布偏差问题时,一个非常重要的问题是不同类之间存在数据不平衡的问题,这一问题通常通过two-stage对象检测器中的hard negative example mining [72] 或 online hard example mining[67]来解决。但这种挖掘方法不适用于one-stage目标检测器,因为这类检测器属于密集预测体系结构。因此Lin等[45]提出了focal loss来处理不同类之间存在的数据不平衡问题。另一个非常重要的问题是很难用one-hot hard表示法来表达不同类别之间关联程度的关系。在执行标记时,经常使用这种表示模式。文献[73]提出的标签平滑方法是将hard标签转换为soft标签进行训练,使模型更具鲁棒性。为了获得更好的soft标签,Islam等[33]引入了知识蒸馏的概念来设计 标签细化网络。
最后的bag of freebies是Bounding Box(BBox)回归的目标函数。传统的目标检测器通常采用均方误差(Mean Square Error, MSE)直接对BBox的中心点坐标和高度、宽度进行回归,即,或者是对左上的点和右下的点进行回归,即。对于anchor-based方法,主要是估计相关offset,如。但是,直接估计BBox中每个点的坐标值就是把这些点当作自变量,而实际上并没有考虑到对象本身的完整性。为了更好地处理这一问题,最近有研究人员提出IoU loss[90],考虑了预测的BBox面积和ground truth BBox面积的覆盖率。IoU loss计算过程通过执行IoU与ground truth触发BBox的四个坐标点的计算,然后将生成的结果连接成一个完整的代码。因为IoU是一个尺度不变表示,它可以解决传统方法计算{x, y, w, h}的l1或l2损失时,损失随尺度增加的问题。近年来,一些研究人员不断改进IoU损失。例如GIoU loss[65]是指除了覆盖区域之外,还包括对象的形状和方向。他们提出寻找同时覆盖预测的BBox和ground truth BBox的最小面积BBox,用这个BBox作为分母,代替原来在IoU loss中使用的分母。DIoU损失[99]另外考虑了物体中心的距离,CIoU损失[99]另一方面同时考虑了重叠面积、中心点之间的距离和长宽比。CIoU在BBox回归问题上具有较好的收敛速度和精度。
2.3. Bag of specials
对于一些插件模块和后处理方法,它们只增加了少量的推理成本,但却能显著提高目标检测的准确性,我们称之为“bag of specials”。一般来说,这些插件模块是为了增强模型中的某些属性,如放大感受域、引入注意机制或增强特征集成能力等,而后处理是筛选模型预测结果的一种方法。
可用于增强感受域的常用模块有SPP[25]、ASPP[5]和RFB[47]。SPP模块起源于空间金字塔匹配(Spatial Pyramid Matching, SPM) [39], SPM的原始方法是将feature map分割成若干个d × d的相等的块,其中d可以是{1,2,3,…},形成空间金字塔,进而bag-of-word特征。SPP将SPM集成到CNN中,使用max-pooling操作来代替bag-of-word操作。由于He等人[25]提出的SPP模块输出的是一维特征向量,因此将其应用于全卷积 (FCN)中是不可行的。因此,在YOLOv3[63]的设计中,Redmon和Farhadi将SPP模块改进为核大小为k × k的最大池化输出的拼接,其中k = {1,5,9,13}, stride = 1。在这种设计下,一个相对较大的k × k max-pooling可以有效地增加backbone特征的感受域。YOLOv3-608在添加了SPP模块的改进版本后,在MS COCO对象检测任务上的AP50提升了2.7%,但也增加了0.5%的计算量。ASPP[5]模块与改进后的SPP模块在操作上的差异主要来自于原始的k×k内核大小,stride的max-pooling为1到几个3 × 3内核大小,dilated ratio为k,在扩张的convolution运算中stride为1。RFB模块是利用k × k核的几个扩张卷积,扩张比等于k, stride等于1,获得比ASPP更全面的空间覆盖。RFB[47]只需要7%的额外推理时间就可以将MS COCO上的SSD AP50提高5.7%。
目标检测中常用的注意模块主要分为channel-wise注意和point-wise注意,这两种注意模型的代表分别是Squeeze-and-Excitation(SE)[29]和Spatial attention module(,SAM)[85]。尽管SE模块可以将 ImageNet图像分类任务中ResNet50的top-1 accuracy效果提升1%,且只会增加2%的计算工作,但是在GPU上通常会增加约10%的推理时间,所以它更适合用于移动设备。而SAM只需要额外支付0.1%的计算,在ImageNet图像分类任务中可以提高ResNet50-SE 0.5%的top-1精度。最重要的是,它完全不会影响GPU的推理速度。
在特性集成方面,早期的实践是使用skip connection [51] 或 hyper-column[22]将低级物理特性集成到高级语义特性。随着多尺度预测方法如FPN的流行,许多用来集成不同的特征金字塔的轻量级模块被提出。这类模块包括SFAM[98]、ASFF[48]和BiFPN[77]。SFAM的主要思想是利用SE模块对多尺度级联特征映射进行channel-wise level 重加权。ASFF采用softmax作为point-wise level 重加权,然后添加不同比例的特征图。在该模型中,提出了多输入加权残差连接,对其进行scale-wise level 重加权,然后加入不同尺度的特征映射。
在深度学习的研究中,一些人把重点放在寻找好的激活函数上。一个好的激活函数可以使梯度更有效地传播,同时又不会造成太多的额外计算成本。2010年,Nair和Hinton[56]提出ReLU,实质上解决了传统tanh和sigmoid激活函数中经常遇到的梯度消失问题。随后,提出了LReLU[54]、PReLU[24]、ReLU6[28]、Scaled Exponential Linear Unit (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中增加了分类置信度分数作为参考,按照置信度分数的顺序,greedy NMS按照高分到低分的顺序进行。对于soft NMS[1],考虑了greedy NMS中对象的遮挡可能导致IoU评分的置信分数下降的问题。DIoU NMS[99]开发者的思路是在soft NMS的基础上,在BBox筛选过程中加入中心点距离的信息。值得一提的是,由于以上的后处理方法都不是直接引用所捕捉到的图像特征,因此后续的anchor-free方法的开发就不再需要后处理。
3. Methodology
其基本目标是提高神经网络在生产系统中的运行速度和优化并行计算,而不是低计算量理论指标(BFLOP)。我们提出了两种实时神经网络的选择:
•对于GPU,我们在卷积层中使用少量组(1 - 8):CSPResNeXt50 / CSPDarknet53
•对于VPU -我们使用分组卷积,但我们避免使用Squeeze-and-excitemen(SE)块-具体包括以下模型:EfficientNet-lite / MixNet [76] / GhostNet [21] / MobileNetV3
3.1. Selection of architecture
我们的目标是在输入网络分辨率、卷积层数、参数数量(filter_size2 * filters * channel / groups)和层输出数(filters)之间找到最佳平衡。例如,我们的大量研究表明,在ILSVRC2012 (ImageNet)数据集[10]上,CSPResNext50在对象分类方面比CSPDarknet53要好得多。然而,相反的,在MS COCO数据集[46]的目标检测上,CSPDarknet53比CSPResNext50更好。
下一个目标是选择额外的块来增加感受野,以及从不同的backbone levels为不同的检测器levels选择进行参数聚合的最佳方法:例如FPN, PAN, ASFF, BiFPN。
对于分类来说最优的参考模型对于检测器来说并不总是最优的。与分类器相比,检测器要求如下:
•更高的输入网络大小(分辨率)-用于检测多个小尺寸的目标
•更多层——更高的感受域来覆盖输入网络的增加大小
•更多的参数-更大的容量的模型,以在一个单一的图像上检测不同大小的多个对象
假设我们可以选择一个感受域大小较大(有着很大数量的3 × 3卷积层)、参数数量较多的模型作为backbone。表1显示了CSPResNeXt50、CSPDarknet53和effecentnet B3的信息。CSPResNext50只有16个3 × 3的卷积层,一个425 × 425的感受域和20.6 M的参数,而CSPDarknet53包含29个3 × 3的卷积层,一个725 × 725的感受域和27.6 M的参数。这一理论论证,以及我们的大量实验,表明CSPDarknet53神经网络在将这两者作为检测器的backbone时,其是最优的模型。
不同大小感受域的影响总结如下:
•高达目标大小 - 允许查看整个对象
•高达网络大小 - 允许查看目标周围的上下文
•超过网络大小 - 增加图像点和最终激活之间的连接数量
我们在CSPDarknet53上添加了SPP块,因为它显著增加了感受域,分离出了最重要的上下文特征,并且几乎没有降低网络运行速度。我们使用PANet作为从不同backbone层对不同检测器层进行参数聚合的方法,而不是YOLOv3中使用的FPN。
最后,我们选择CSPDarknet53骨干、SPP附加模块、PANet路径聚合neck和YOLOv3(基于锚的)head作为YOLOv4的体系结构。
在未来,我们计划大幅扩展检测器的Bag of Freebies (BoF)内容,理论上可以解决一些问题,提高检测器的精度,并以实验的方式依次检查各个特征的影响。
我们不使用跨gpu批处理规范化(Cross-GPU Batch Normalization ,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是专门为量化网络设计的,因此我们将上述激活函数从候选列表中删除。在正则化方法方面,Drop-Block的作者将他们的方法与其他方法进行了详细的比较,他们的正则化方法获得了很大的成功。因此,我们毫不犹豫地选择DropBlock作为我们的正则化方法。在归一化方法的选择上,由于我们关注的是一个只使用一个GPU的训练策略,所以没有考虑syncBN。
3.3. Additional improvements
为了使设计的检测器更适合在单GPU上训练,我们进行了以下额外的设计和改进:
•我们引入了一种新的数据增强Mosaic方法和自对抗训练(Self-Adversarial Training,SAT)
•我们在应用遗传算法时选择最优超参数
•我们修改了一些现有的方法,使我们的设计适合于有效的训练和检测 - modified SAM, modified PAN, 和 Cross mini-Batch Normalization (CmBN)
Mosaic是一种新的数据增强方法,混合了4张训练图像。因此,4种不同的上下文混合在了一起,而CutMix只混合2个输入图像。这允许检测正常上下文之外的对象。此外, batch normalization对每层4张不同的图像进行激活统计。这大大减少了对大型mini-batch size的需要。
自对抗训练(SAT)也代表了一种新的数据增强技术,可分为两个前向后向阶段。在第一阶段,神经网络改变原始图像而不是网络权值。通过这种方式,神经网络对自己进行对抗攻击,改变原始图像,制造出图像上没有想要的对象的假象。在第二阶段,训练神经网络以正常的方式检测修改后的图像上的目标。
CmBN表示修改后的CBN,如图4所示,定义为Cross mini-Batch Normalization(CmBN)。它只在单个batch内的mini-batches之间收集统计信息。
我们将SAM从spatial-wise注意修改为point-wise注意,将PAN的shortcut连接替换为拼接,分别如图5和图6所示。
3.4. YOLOv4
在本节中,我们将详细介绍YOLOv4。
YOLOv4包括:
• Backbone: CSPDarknet53 [81]
• Neck: SPP [25], PAN [49]
• Head: YOLOv3 [63]
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 [52], Optimal hyper-parameters, Random training shapes
• Bag of Specials (BoS) for detector: Mish activation, SPP-block, SAM-block, PAN path-aggregation block, DIoU-NMS
4. Experiments
在ImageNet (ILSVRC 2012 val)数据集上测试不同训练改进技术对分类器精度的影响,然后在MS COCO (test-dev 2017)数据集上测试不同训练改进技术对检测器精度的影响。
4.1. Experimental setup
在ImageNet图像分类实验中,默认的超参数如下:训练steps为800万;batch大小为128,mini-batch大小为32;采用多项式衰减(polynomial decay)学习率调度策略,初始学习率为0.1;warm-up steps为1000;momentum衰减和权重衰减分别设为0.9和0.005。我们所有的BoS实验都使用相同的超参数作为默认设置,在BoF实验中,我们增加了额外的50%的训练步骤。在BoF实验中,我们验证了MixUp、CutMix、Mosaic、Bluring数据增强和标签平滑正则化方法。在BoS实验中,我们比较了LReLU、Swish和Mish激活函数的效果。所有实验都使用1080Ti或2080Ti GPU进行训练。
在MS COCO对象检测实验中,默认超参数如下:训练steps为500,500;采用阶跃衰减(step decay)学习率调度策略,初始学习率为0.01,在40万 steps和45万 steps时分别乘以0.1;momentum衰减和权重衰减分别设为0.9和0.0005。所有架构都使用单个GPU执行多尺度训练,batch大小为64,而mini-batch大小为8或4,这取决于架构和GPU内存限制。除采用遗传算法进行超参数搜索实验外,其余实验均采用默认设置。遗传算法利用YOLOv3-SPP进行GIoU loss训练,对min-val 5k集搜索300个epochs。我们采用0.00261的searched学习率,0.949的momentum,对ground truth使用0.213的IoU阈值 ,0.07的损失归一化器进行遗传算法实验。我们已经验证了大量的BoF,包括grid sensitivity elimination, mosaic data augmentation, IoU threshold, genetic algorithm, class label smoothing, cross mini-batch normalization, self-adversarial training, cosine annealing scheduler, dynamic mini-batch size, DropBlock, Optimized Anchors, different kind of IoU losses。我们还对各种BoS进行了实验,包括Mish、SPP、SAM、RFB、BiFPN和Gaussian YOLO[8]。在所有的实验中,我们只使用一个GPU进行训练,所以没有使用syncBN等优化多个GPU的技术。
4.2. Influence of different features on Classifier training
首先,研究不同特征对分类器训练的影响;具体包括类标签平滑的影响,不同数据增强技术、双边模糊、MixUp、CutMix和Mosaic的影响,如图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
进一步研究不同的Bag-of-Freebies (BoF-detector)对检测器训练精度的影响,如表4所示。我们通过研究在不影响FPS的情况下提高检测器精度的不同特征,显著扩展了BoF列表:
• S:Eliminate grid sensitivity的等式,其中cx和cy是整数,因此,为了bx值接近cx或cx+1值,需要特别高的tx绝对值(即要么是特别大的正值,要么是特别小的负值)。我们通过将sigmoid乘以一个超过1.0的因子来解决这个问题,这样就消除了对象不可检测的网格的影响。
• M: Mosaic data augmentation - 在训练期间使用4幅图像mosaic,而不是使用单一的图像
• IT: IoU threshold - 为单个ground truth IoU(truth,anchor)> IoU_threshold 使用多个anchors
• GA: Genetic algorithms - 在网络训练的前10%时间周期中使用遗传算法选择最优超参数
• LS: Class label smoothing - sigmoid激活使用类标签平滑
• CBN: CmBN - 使用Cross mini-Batch Normalization来收集整个batch内的统计信息,而不是在单个mini-batch内收集统计信息
• CA: Cosine annealing scheduler - 在sinusoid训练期间改变学习速率
• DM: Dynamic mini-batch size - 通过使用随机训练形状(Random training shapes)来在小分辨率训练中自动增加mini-batch大小
• OA:Optimized Anchors - 使用优化anchors进行512x512网络分辨率的训练
• GIoU, CIoU, DIoU, MSE - 使用不同的损失算法进行bounded box回归
进一步研究了PAN、RFB、SAM、Gaussian YOLO (G)、ASFF等不同的Bag-of-Specials (BoS-detector)对检测器训练精度的影响,见表5。在实验中,采用SPP、PAN和SAM三种方法的探测器性能最佳。
4.4. Influence of different backbones and pre-trained weightings on Detector training
我们进一步研究了不同backbone模型对检测器精度的影响,如表6所示。我们注意到,具有最佳分类精度特征的模型在检测器精度方面并不总是最好的。
首先,虽然用不同特征训练的CSPResNeXt-50模型的分类精度高于CSPDarknet53模型,但CSPDarknet53模型在目标检测方面的精度更高。
其次,使用BoF和Mish进行CSPResNeXt50分类器训练提高了分类精度,但进一步将这些预训练权重用于检测器训练会降低检测器的精度。然而,在CSPDarknet53分类器训练中使用BoF和Mish可以提高分类器和使用分类器预先训练权重的检测器的准确性。最终的结果是backbone CSPDarknet53比CSPResNeXt50更适合于检测器。
我们观察到,由于各种改进,CSPDarknet53模型在提高探测器精度方面表现出了更大的能力。
4.5. Influence of different mini-batch size on Detector training
最后,我们对不同mini-batch训练的模型的结果进行分析,结果如表7所示。从表7的结果中我们发现,在加入BoF和BoS训练策略后,mini-batch大小对检测器的性能几乎没有影响。这个结果表明,引入BoF和BoS后,不再需要使用昂贵的gpu进行训练。换句话说,任何人都可以只使用传统的GPU来训练优秀的探测器。
5. Results
与其他最先进的目标探测器的结果比较如图8所示。我们的YOLOv4位于帕累托最优曲线上,在速度和准确性方面都优于最快和最准确的探测器。
由于不同的方法使用不同架构的gpu进行推断时间验证,我们在常用的Maxwell、Pascal和Volta架构的gpu上进行YOLOv4的操作,并与其他最新的方法进行比较。表8列出了使用Maxwell GPU的帧率比较结果,它可以是GTX Titan X (Maxwell) or 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。
6. Conclusions
我们提供了一个最先进的检测器,比所有可用的替代检测器更快(FPS)和更准确(MS COCO AP50…95和AP50)。所描述的探测器可以训练和使用在具有8-16GB-VRAM的传统GPU上,这使其广泛使用成为可能。最初的one-stage anchor-based探测器的概念已经证明了它的可行性。我们已经验证了大量的特征,并选择这些特征来使用,以提高分类器和检测器的准确性。这些特性可以作为未来研究和开发的最佳实践。