YOLOv4: Optimal Speed and Accuracy of Object Detection英文注解:

YOLOv4:OptimalSpeedandAccuracyofObjectDetection英文注解-行业报告文档类资源-CSDN下载YOLOv4:OptimalSpeedandAccuracyofObjectDetec更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/weixin_53660567/85124166YOLOv4: Optimal Speed and Accuracy of Object Detection全文翻译PDF:
YOLOv4:OptimalSpeedandAccuracyofObjectDetection全文翻译PDF-行业报告文档类资源-CSDN下载YOLOv4:目标检测的最佳速度和精度,YOLOv4:OptimalSpeedandAccu更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/weixin_53660567/85124137

YOLOv4: Optimal Speed and Accuracy of Object Detection全文翻译:

YOLOv4:OptimalSpeedandAccuracyofObjectDetection全文翻译-行业报告文档类资源-CSDN下载YOLOv4:目标检测的最佳速度和精度,YOLOv4:OptimalSpeedandAccu更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/weixin_53660567/85124117

YOLOv4:目标检测的最佳速度和精度

摘要

有大量的特征据说可以提高卷积神经网络(CNN)的准确性。需要在大数据集上对这些特征的组合进行实际测试,并对结果进行理论论证。有些特性仅适用于某些模型和某些问题,或仅适用于小规模的数据集; 而一些特性,如批处理规范化和残差连接,适用于大多数模型、任务和数据集。我们假设这些通用特征包括加权残差连接(Weighted-Residual-Connections, WRC),跨阶段部分连接(CSP),跨小批量标准化(CmBN)、自我对抗训练(SAT)和mishish -activation。我们使用了新的特征:WRC, CSP,CmBN, SAT, Mish激活函数,Mosaic数据增强,CmBN, DropBlock正则化,CIoU损失,并结合其中一些,达到最佳的结果: 43.5% AP (65.7% AP50) 时在Tesla V100上,MS COCO数据集的实时速度为65 FPS。源代码见https://github.com/AlexeyAB/darknet。

1.介绍

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

图1:YOLOv4与其他最先进的目标探测器的比较YOLOv4的运行速度是EfficientDet的两倍,具有相当的性能。提高了YOLOv3的AP和FPS值,分别提高了10%和12%。

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

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

2. 在检测器训练期间,我们验证了最先进的Bag-of-Freebies和Bag-of-Specials方法对目标检测的影响。

3. 我们对最先进的方法进行了改进,使其更有效,更适合单个GPU的训练,包括CBN [89], PAN [49] ,SAM[85]等。

图2:目标检测器

2. 相关工作

21.目标检测模型

现有的检测器通常由两部分组成,一个是在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]。也可以将两级对象检测器做成无锚目标检测器,例如RepPoints[87]。对于单级物体检测器,最具代表性的模型有YOLO[61,61,63]、SSD[50]和RetinaNet[45]。近年来,无锚单级目标探测器得到了发展。这类探测器是CenterNet [13], CornerNet [37, 38], FCOS[78]等。近年来发展起来的目标检测器经常在主干网和头部之间插入一些层,这些层通常用于收集不同阶段的特征图。我们可以称它为物体探测器的颈部。通常,颈部neck由几个自底向上的路径和几个自顶向下的路径组成。具有这种机制的网络包括特征金字塔网络(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], Fully-connected FPN, BiFPN
[77], ASFF [48], SFAM [98]

•头部:

•密集预测(单阶段):

◦RPN [64], SSD [50], YOLO [61], RetinaNet[45] (anchor based)

◦CornerNet [37], CenterNet [13], MatrixNet[60], FCOS [78] (anchor free)

•稀疏预测(两阶段):

◦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]则是在一幅图像中随机或均匀地选取多个矩形区域,并将其全部替换为0。如果将类似的概念应用于特征映射,则有DropOut[71]、DropConnect[80]和DropBlock[16]方法。此外,也有研究者提出了利用多幅图像一起进行数据增强的方法。例如,MixUp[92]使用两幅图像以不同的系数比进行相乘和叠加,然后用这些叠加的系数比调整标签。CutMix[91]是将裁剪后的图像覆盖到其他图像的矩形区域,并根据mix区域的大小调整标签。除了上述方法外,我们还使用了风格转移GAN[15]进行数据增强,这样的使用可以有效的减少CNN学习到的纹理偏差。

与上面提出的各种方法不同的是,其他一些Bag of freebies方法致力于解决数据集中的语义分布可能存在偏差的问题。在处理语义分布偏差问题时,一个非常重要的问题是不同类之间存在数据不平衡的问题,这一问题通常通过两阶段目标检测器中的难反例挖掘[72]或在线难例挖掘[67]来解决。但是实例挖掘方法并不适用于单级目标检测器,因为这类检测器属于密集预测体系结构。因此Lin 等人[45]提出了focal loss(焦点损失函数)来解决不同类别间数据不平衡的问题。另一个非常重要的问题是,很难用一种热的硬表征来表达不同类别之间的关联程度关系。这种表示模式在执行标记时经常使用。[73]提出的标签平滑是将硬标签转换为软标签进行训练,可以使模型更加鲁棒。为了获得更好的软标签,Islam等人[33]引入了知识精炼的概念来设计标签细化网络。

最后的Bag of freebies是目标函数边界盒(BBox)回归。传统的对象探测器通常使用均方误差(MSE)直接执行回归中心点坐标和BBox的高度和宽度,即{xcenter, ycenter,w, h},或左上角和右下角点,也就是说, {xtop_left, ytop_left, xbottom_right, ybottom_ right}。基于锚的方法是估计相应的偏移量,例如{xcenter_offset, ycenter_offset,woffset, hoffset}和{xtop_left offset, ytop_lef t_offset,xbotto_ right_offset, ybottom_right_offset}。但是,要直接估计各点的坐标值BBox将这些点视为独立变量,但实际上并不考虑目标本身的完整性。为了更好地处理这一问题,最近一些研究者提出了IoU loss[90],将预测BBox区域和ground truth BBox区域的覆盖率考虑在内。在IoU损失计算过程中,会根据ground truth执行IoU,触发BBox四个坐标点的计算,然后将生成的结果连接成一个完整的编码。由于IoU是一种尺度不变表示,它可以解决传统方法计算l1或l2的{x, y, w, h}损失,损失会随着尺度的增大而增大的问题。例如GIoU loss[65]是指除覆盖区域外,还包括物体的形状和方向。他们提出找到最小的同时覆盖预测BBox和地面真实BBox的区域BBox,并加以利用以BBox作为分母,取代原来用于借据丢失的分母。对于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的原始方法是将特征映射分割成几个d × d相等的块,其中d为{1, 2,3…},从而组成空间金字塔,进而提取词袋特征。SPP将SPM集成到CNN中,使用max-pooling操作代替bag-of-word操作。由于He等人[25]提出的SPP模块会输出一维的特征向量,因此在全卷积网络(Fully Convolutional Network, FCN)中应用是不可行的。因此,在YOLOv3[63]的设计中,Redmon和Farhadi改进了SPP模块连接最大池化输出,其内核大小为k × k,其中k = {1,5,9,13},步长等于1。在这种设计下,一个相对较大的k × k maxpooling有效地增加了骨干网络的感受野。在添加了SPP模块的改进版本后,YOLOv3-608在MS COCO目标检测任务上将AP50升级2.7%,增加了0.5%的计算量。ASPP[5]模型与改进后的SPP模块在操作上的差异主要来自于原始的k×k内核大小, stride的max-pooling等于1到几个3 × 3 内核大小,膨胀比等于k,膨胀卷积运算的stride等于1。RFB模块是利用k×k 内核的几个膨胀卷积,膨胀比等于k, 步长等于1,获得比ASPP更全面的空间覆盖。RFB[47]仅花费7%的额外推理时间,将MS COCO上SSD的AP50增加5.7%。

目标检测中常用的注意模块主要分为通道式注意和点式注意,这两种注意模型的代表分别是squeeze-and-inspire (SE)[29]和Spatial attention module (SAM)[85]。虽然SE模块可以提高ResNet50在ImageNet图像分类任务中1% top-1准确率的能力,而代价只是增加了2%的计算工作量, 但在GPU上通常会增加10%左右的推理时间,所以它更适合用于移动设备。而对于SAM,只需要额外增加0.1%的计算量,就可以将ResNet50-SE在ImageNet图像分类任务上的top-1准确率提高0.5%。最重要的是,它根本不会影响GPU的推理速度。

在特征融合方面,早期的实践是使用跳过连接(skip connection)[51]或超列(hyper-column)[22]将低级得分物理特征融合到高级的语义特征。随着FPN等多尺度预测方法的流行,人们提出了许多集成不同特征金字塔的轻量级模型。这类模型包括SFAM[98]、ASFF[48]和BiFPN[77]。SFAM的主要思想是利用SE模块对多尺度的级联特征图进行通道级重加权。对于ASFF,它使用softmax作为逐点级调整权重,然后添加不同尺度的特征图。在BiFPN中,提出多输入加权残差连接进行尺度级重加权,然后添加不同尺度的特征映射。

在深度学习的研究中,一些人把注意力放在寻找好的激活函数上。一个好的激活函数可以使梯度更有效地传播,同时不会造成过多的额外计算成本。2010年,Nair和Hinton[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和Mish都是连续可微的激活函数。

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

3.方法

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

•对于GPU,我们在卷积层中使用少量的组(1-8):CSPResNeXt50 / CSPDarknet53

•对于VPU -我们使用分组卷积,但我们避免使用Squeeze-and-excitement (SE)块-具体包括以下型号:EfficientNet-lite / MixNet [76] / GhostNet [21] / MobileNetV3

3.1.结构的选择

我们的目标是在输入网络分辨率、卷积层数、参数个数(filter size2 * filters * channel / groups) (filter_size2 *滤波器*通道/组)和层输出数(滤波器)之间找到最优的平衡。例如,我们的大量研究表明,在ILSVRC2012 (ImageNet)数据集[10]上,CSPResNext50在目标分类方面比CSPDarknet53要好得多。然而,相反,CSPDarknet53在MS COCO数据集[46]上检测目标方面比CSPResNext50更好。

下一个目标是选择额外的块来增大感受野,以及针对不同的检测器级别(如FPN、PAN、ASFF、BiFPN)从不同的主干网络级别进行参数聚合的最佳方法。

对于分类来说是最优的参考模型对于检测器来说并不总是最优的。与分类器相反,检测器需要以下条件:

•更高的输入网络尺寸(分辨率)-用于检测多个小型物体

•更多的层-更大的感受野,以覆盖更大的输入网络

•更多的参数-更大的容量模型,以检测多个不同大小的目标在一个单一的图像

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

•根据对象大小-允许查看整个对象

•根据网络大小-允许查看对象周围的背景信息

•超过网络大小-增加图像点和最终激活函数之间的连接数量

表1:用于图像分类的神经网络参数

我们在CSPDarknet53上添加了SPP块,因为它显著增加了感受野,分离出了最重要的背景特征,并且几乎没有降低网络运行速度。我们使用PANet作为从不同的主干级别对不同的检测器级别进行参数聚合的方法,而不是YOLOv3中使用的FPN。

最后,我们选择了CSPDarknet53骨干、SPP附加模型、PANet路径聚合颈和YOLOv3(基于锚的)Head作为YOLOv4的架构。

未来,我们计划大幅增加检测器的BoF (Bag of Freebies, BoF)的内容,理论上可以解决一些问题,提高检测器的精度,并以实验的方式依次检查每个特征的影响。

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

3.2.  BoFBoS的选择

为了提高目标检测训练,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

•通过均值和方差标准化网络激活: 批处理归一化(BN)跨gpu批量归一化(CGBN或SyncBN)[93]、Filter Response Normalization (FRN)[70]、或交叉迭代批归一化(CBN) [89]

• Skip-connections: 残差连接、加权残差连接、多输入加权残差连接或交叉阶段部分连接(CSP)

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

3.3. 进一步的改进

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

•我们引入了一种新的数据增强方法Mosaic和自我对抗训练(SAT)

•在应用遗传算法时,我们选择了最优的超参数

•我们修改了一些现有的方法,使我们的设计适合于有效的训练和检测-改进SAM、改进PAN和交叉小批归一化(CmBN)

Mosaic是一种新的混合4幅训练图像的数据增强方法。因此背景信息有四张混合的输入图像,而CutMix只混合2个输入图像。这允许检测正常上下文之外的对象。此外,批量归一化计算每个层上4个不同图像的激活统计。这大大减少了对小型批量的需求。

图3:马赛克表示一种新的数据增强方法

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

CmBN表示CBN修改后的版本,如图4所示,定义为Cross mini-Batch Normalization(CmBN)。这只收集单个批内的小批之间的统计信息。

我们将SAM由spatial-wise attention修改为point -wise attention,将PAN的shortcut connection(+)替换为concatenation(*),分别如图5和图6所示。

图4:交叉小批处理规范化

图5:修改后的SAM

图6:修改后的PAN

3.4. YOLOv4

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

YOLOv4包括:

•Backbone: CSPDarknet53 [81]

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

•Head头部:YOLOv3 [63]

YOLO v4使用:

•Bag of Freebies (BoF)作为backbone:CutMix和马赛克数据增强,DropBlock正则化,类标签平滑

•Bag of Specials (BoS) 作为backbone: Mish激活函数、交叉阶段部分连接(CSP)、多输入加权残差连接(MiWRC)

•Bag of Freebies (BoF)作为检测器:CIoU-loss,CmBN, DropBlock正则化,马赛克数据增强,自我对抗训练,消除网格敏感性,使用多个锚点对单个地面真实值,余弦退火调度程序[52],最优超参数,随机训练形状

• Bag of Specials (BoS)作为探测器:Mish激活函数,SPP-block, SAM-block, PAN路径聚合块,DIoU-NMS

4. 实验

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

4.1训练设置

在ImageNet图像分类实验中,默认的超参数如下:训练步骤为8000000;批量大小和小批量大小分别为128和32;采用多项式衰减学习率调度策略,初始学习率为0.1;热身步骤是1000步; 动量衰减和权重衰减分别设为0.9和0.005。我们所有的BoS实验都使用相同的超参数作为默认设置,在BoF实验中,我们添加了额外的50%的训练步骤。在BoF实验中,我们验证了Mixup,CutMix,马赛克,模糊数据增强,标签平滑正则化方法。在BoS实验中,我们比较了LReLU、Swish和Mish激活函数的作用。所有的实验都是用1080 Ti或2080Ti GPU来训练的。

在MS COCO对象检测实验中,默认的超参数如下:训练步骤为500500;采用步长衰减学习率调度策略,初始学习率为0.01,在40万步和45万步时分别乘以0.1; 动量衰减和权重衰减分别设为0.9和0.0005。所有架构都使用单个GPU执行多尺度训练,批量大小为64,而mini-batch大小为8或4取决于架构和GPU内存限制。超参数搜索实验除使用遗传算法外,其他实验均采用默认设置。遗传算法使用YOLOv3-SPP进行GIoU损失训练,在min-val 5k集上搜索300个epochs。采用搜索学习率0.00261,动量0.949,分配ground truth的IoU阈值0.213,损失归一化器0.07进行遗传算法实验。我们验证了大量的BoF,包括网格敏感性消除、马赛克数据增强、IoU阈值、遗传算法、类标签平滑、交叉小批归一化、自对抗训练、余弦退火调度、动态小批大小、DropBlock、优化锚点、不同类型的IoU损失。我们也进行各种BoS的实验,包括Mish、SPP、SAM、RFB、BiFPN和高斯YOLO[8]。在所有的实验中,我们只使用一个GPU进行训练,因此没有使用像syncBN这样优化多个GPU的技术。

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

首先,研究了不同特征对分类器训练的影响;具体来说,类标签平滑的影响,不同数据增强技术的影响,双边模糊,MixUp, CutMix和Mosaic,如图7所示,以及不同激活函数的影响,如Leaky-ReLU(默认),Swish,和Mish。

图7:各种数据增强方法

在我们的实验中,如表2所示,分类器的准确性通过引入如下特征得到了提高:CutMix和Mosaic数据增强,类标签平滑,Mish激活函数。因此,我们的BoF-backbone (Bag of Freebies)分类器训练包括以下内容:CutMix和Mosaic数据增强和类标签平滑。此外,我们使用Mish激活作为一个补充选项,如表2和表3所示。

表2 :BoF和Mish对CSPResNeXt-50分类器精度的影响。

表3 BoF和Mish对CSPDarknet-53分类器精度的影响。

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

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

•S:消除网格灵敏度方程bx = σ(tx)+cx; by = σ(ty)+cy,其中cxcy总是整数,YOLOv3中用于计算目标坐标,因此,当bx值接近cxcx + 1值时,需要极高的tx绝对值。我们通过将sigmoid函数乘以一个超过1.0的因子来解决这个问题,从而消除了无法探测到物体的网格的影响。

•M:马赛克数据增强——在训练过程中使用4幅图像的马赛克而不是单幅图像

•IT: IoU threshold—使用多个锚点对一个ground truth IoU (truth, anchor) > IoU threshold

•GA:遗传算法-使用遗传算法选择最优超参数在网络训练的前10%的时间周期

•LS:类标签平滑-使用类标签平滑用于sigmoid激活函数

•CBN: CmBN -使用Cross mini-Batch Normalization在整个批内收集统计数据,而不是在单个小批内收集统计数据

•CA:余弦退火调度-正弦训练期间改变学习速率

•DM:动态小批量大小-在小分辨率训练过程中使用随机训练形状自动增加小批量大小

•OA:优化的锚点-使用优化的锚点与512x512网络分辨率训练

• GIoU, CIoU, DIoU, MSE:使用不同的损失算法进行边界框回归预测

表4: Bag-of-Freebies消融研究。(CSPResNeXt50-PANet-SPP 512 x512)

进一步研究了不同的Bag-of-Specials (BoS-detector)对检测器训练精度的影响,包括PAN、RFB、SAM、高斯YOLO (G)和ASFF,如表5所示。在实验中,采用SPP、PAN和SAM三种方式时,检测器的性能都达到了最佳。

表5: Bag-of-Specials消融研究.(规模512 x512)

4.4.不同backbone预训练权重对检测器训练的影响

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

首先,虽然CSPResNeXt的分类精度-使用不同特征训练的50个模型比CSPDarknet53模型高,CSPDarknet53模型在目标检测方面显示出更高的精度。

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

我们观察到CSPDarknet53模型由于各种改进,在提高探测器精度方面表现出更大的能力。

表6:使用不同的分类器预训练权重进行检测器训练(所有其他训练参数在所有模型中都是相似的)。

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

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

表7:采用不同的小批量大小进行检测器训练

图8:不同目标检测器的速度和精度的比较。(有些文章只针Maxwell/Pascal/Volta这一GPU描述了他们的检测器的FPS)

5.结果

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

由于不同的方法使用不同架构的GPU进行时间推理验证,我们在常用的Maxwell、Pascal、Volta架构的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,列出了使用Volta GPU的帧率比较结果,可以是Titan Volta或Tesla V100 GPU。

6.结论

我们提供了一种最先进的检测器,比所有可用的备选检测器更快(FPS)和更准确(MS COCO AP50:: 95和AP50)。该检测器可在8-16GB显存的常规GPU上进行训练和使用,这使得它的广泛应用成为可能。单级锚基检测器的最初概念已被证明是可行的。我们已经验证了大量的特征,并选择使用这些特征来提高分类器和检测器的准确性。这些特性可以作为未来研究和开发的最佳实践。

7.致谢

作者要感谢Glenn Jocher提出的Mosaic数据增强、使用遗传算法选择超参数和解决网格灵敏度问题的https://github.com/ ultralytics/yolov3。

表8:MS COCO数据集上不同目标检测器的速度和精度的比较(testdev 2017)。(FPS为30或更高的实时探测器在这里被突出显示。我们在不使用tensorRT的情况下比较batch=1的结果。)

表9:MS COCO数据集上不同目标检测器的速度和精度的比较(test-dev 2017)。(FPS为30或更高的实时检测器在这里被突出显示。我们在不使用tensorRT的情况下比较batch=1的结果。)

表10:MS COCO数据集上不同目标检测器的速度和精度的比较(test-dev 2017)。(FPS为30或更高的实时检测器在这里被突出显示。我们在不使用tensorRT的情况下比较batch=1的结果。)

YOLOv4: Optimal Speed and Accuracy of Object Detection相关推荐

  1. Paper:《YOLOv4: Optimal Speed and Accuracy of Object Detection》的翻译与解读

    Paper:<YOLOv4: Optimal Speed and Accuracy of Object Detection>的翻译与解读 目录 YOLOv4的评价 1.四个改进和一个创新 ...

  2. AI实战: YOLOv4: Optimal Speed and Accuracy of Object Detection

    前言 YOLOv4: Optimal Speed and Accuracy of Object Detection [Submitted on 23 Apr 2020] [是的,你没看错,2020年0 ...

  3. 【论文翻译】YOLOv4: Optimal Speed and Accuracy of Object Detection

    <YOLOv4: Optimal Speed and Accuracy of Object Detection> 链接地址 发表会议: CVPR 2020 Alexey Bochkovsk ...

  4. 【读点论文】YOLOv4: Optimal Speed and Accuracy of Object Detection,讲明目标检测结构,分析先进的涨点tricks,实现一种精度与速度的平衡

    YOLOv4: Optimal Speed and Accuracy of Object Detection Abstract 据说有大量的特征可以提高卷积神经网络(CNN)的准确性.需要在大型数据集 ...

  5. 论文精读:YOLOv4: Optimal Speed and Accuracy of Object Detection

    Abstract  大量的特征据说可以提高卷积神经网络(CNN)的精度.需要在大数据集上对这些特征的组合进行实际测试,并对结果进行理论证明.有些特性只适用于某些模型,只适用于某些问题,或仅适用于小规模 ...

  6. YOLOv4阅读笔记(附思维导图)!YOLOv4: Optimal Speed and Accuracy of Object Detection

    今天刷看到了YOLOv4之时,有点激动和兴奋,等了很久的YOLOv4,你终究还是出现了 论文地址:https://arxiv.org/pdf/2004.10934.pdf GitHub地址:https ...

  7. 【论文笔记】YOLOv4: Optimal Speed and Accuracy of Object Detection

    简介: 笔者原本计划接着解读一篇有关NAS的文章的,奈何今天YOLOv4突然闪亮登场,经不住诱惑,那篇有关NAS的文章就只能后面再写了.好了,废话不多说,进入正题. 论文链接 代码链接 本文链接 前言 ...

  8. 论文笔记-YOLOv4: Optimal Speed and Accuracy of Object Detection

    论文地址:https://arxiv.org/pdf/2004.10934v1.pdf code:https://github.com/AlexeyAB/darknet. 摘要 有大量的技巧可以提高C ...

  9. 论文翻译YOLOv4: Optimal Speed and Accuracy of Object Detection YOLOv4:目标检测的最佳速度和精度 论文中文翻译

    摘要 有大量的特征被认为可以提高卷积神经网络(CNN)的精度.需要在大型数据集上对这些特性的组合进行实际测试,并对结果进行理论验证.某些特性在特定的建模中起决定性作用,而在特定的强制确定问题中起决定性 ...

  10. 【YOLOv4原文+翻译】YOLOv4:Optimal Speed and Accuracy of Object Detection

    最近新出了YOLOV4,我系统的从V1开始整理出稿,传送门: [YOLOv1原文+翻译]You Only Look Once Unified, Real-Time Object Detection [ ...

最新文章

  1. 朴素贝叶斯分类器简介及C++实现(性别分类)
  2. 深入剖析微软Office Word主控文档利与弊
  3. qconshanghai2014
  4. java拦截器项目应用_使用拦截器分析Java EE应用程序的性能下降/提高
  5. 全连接条件随机场_条件随机场CRF简介
  6. 2、赶去公司--网易2017春招
  7. 【bzoj4518】[Sdoi2016]征途 斜率优化dp
  8. android渐变布局,关于Android的径向渐变高级编程的实现
  9. SURF算法python实现
  10. python合并excel工作簿_ExcelPython合并处理Excel工作簿、工作表
  11. 修复YYC松鼠短视频系统搜索功能无法使用问题
  12. 大学生参加Python培训有什么好处
  13. shader拖尾_插件(一)武器拖尾效果
  14. windows平台下载android源码
  15. 在数据为王的人工智能时代如何收集机器学习数据
  16. cups支持的打印机列表_CUPS共享网络打印机
  17. u 只读 盘 突然_U盘变成只读,无法格式化,怎么办?
  18. 将 Amazon EC2 到 Amazon S3 的数据传输推向100Gbps线速
  19. 计算机应用基础第四版答案周南岳,计算机应用基础第周南岳win+office期末复习及答案.docx...
  20. python 日期大小比较

热门文章

  1. 软件测试面试如何正确谈论薪资?
  2. 取消移动端按钮按钮点击时的蓝色背景
  3. Oracle 实体用户授权及同步同义词
  4. cpu和显卡瓶颈测试软件,CPU与GPU瓶颈的详述
  5. Linux文件其他操作
  6. 零基础学习C++系列课程(九) 持续更新中
  7. 通过Redis实现数据的交集、并集、补集
  8. mumu模拟器切换android,MuMu模拟器“键位设置”功能详解!如有问题请联系在线客服~...
  9. Vue+UpLoad实现上传、点图预览、删除图片
  10. Restricted RPS