YOLOv4 论文精读
Posted icetree
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YOLOv4 论文精读相关的知识,希望对你有一定的参考价值。
YOLOv4: Optimal Speed and Accuracy of Object Detection
论文地址:链接:百度网盘 提取码:lgw1
GitHub地址:https://github.com/AlexeyAB/darknet
【摘要】有很多特征可以提高卷积神经网络(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)。
一、介绍
大多数基于CNN的物体检测器仅适用于推荐系统。例如,通过慢速精确模型执行通过城市摄像机搜索空闲停车位的过程,而汽车碰撞警告与快速不精确模型有关。提高实时对象检测器的精度不仅可以将它们用于提示生成推荐系统,还可以用于独立的过程管理和人工输入减少。常规图形处理单元(GPU)上的实时对象检测器操作允许它们以可承受的价格进行大量使用。最精确的现代神经网络不能实时运行,并且需要大量的GPU来进行mini-batch-size的训练。我们通过创建CNN来解决此类问题,该CNN在常规GPU上实时运行,并且训练仅需要一个常规GPU。
这项工作的主要目标是设计生产系统中目标检测器的快速运行速度并优化并行计算,而不是低计算量理论指标(BFLOP)。例如,任何使用常规GPU进行训练和测试的人都可以获得实时,高质量和令人信服的对象检测结果,如图1所示。
图1 提出的YOLOv4与其他最新对象检测器的比较,YOLOv4的运行速度比EfficientDet快两倍,
并且性能相当。将YOLOv3的AP和FPS分别提高了10%和12%。
YOLOv4贡献如下:
1.我们开发了一种高效强大的对象检测模型,使得每个人都可以使用1080 Ti或2080 Ti GPU训练超快速和准确的物体检测器。
2.我们在检测器训练期间,验证了最新的“免费袋”和“特殊袋”检测方法的影响。
3.我们修改了最先进的方法,使它们更有效,更适合单GPU训练,包括CBN [89],PAN [49],SAM [85]等。
二、相关工作
2.1目标检测模型
现代检测器通常由两部分组成,一个是在ImageNet上预先训练的骨架,另一个是用来预测物体的类别和边界框的头部。对于在GPU平台上运行的检测器,其主干可以是VGG,ResNet,ResNeXt 或DenseNet。对于在CPU平台上运行的检测器,其主干可以是SqueezeNet ,MobileNet 或ShuffleNet。至于头部,通常分为两类,即一级物体检测器和二级物体检测器。最有代表性的两级物体检测器是R-CNN 系列,包括快速R-CNN ,更快的R-CNN,R-FCN 和Libra R-CNN 。也有可能使二级物体检测器成为无锚(anchor free)物体检测器,例如RepPoints。对于一级目标检测器,最具代表性的模型是YOLO,SSD和RetinaNet。近年来,开发了无锚的一级物体检测器。这种检测器是CenterNet,CornerNet],FCOS 等。近年来开发的对象检测器通常在骨架和头部之间插入一些层,这些层通常用于收集特征图。来自不同的阶段。我们可以称其为对象检测器的颈部。通常,颈部由几个自下而上的路径和几个自上而下的路径组成。配备此机制的网络包括功能金字塔网络(FPN),路径聚合网络(PAN),BiFPN 和NAS-FPN 。除上述模型外,一些研究人员将重点放在直接构建用于检测物体的新主干(DetNet ,DetNAS )或新的整个模型(SpineNet ,HitDe-tector )上。总而言之,普通的检测器由以下几个部分组成:
输入:图像,Patches,图像金字塔
骨架:VGG16 ,ResNet-50 ,SpineNet ,EfficientNet-B0 / B7 ,CSPResNeXt50 ,CSPDarknet53
颈部:
其他块:SPP ,ASPP ,RFB ,SAM
路径聚合块:FPN ,PAN ,NAS-FPN ,Fully-connected FPN,BiFPN ,ASFF ,SFAM
Heads :
密集预测(一阶段): RPN,SSD,YOLO , RetinaNet (基于anchor)
CornerNet,CenterNet ,MatrixNet ,FCOS(无anchor)
稀疏预测(两阶段): Faster R-CNN,R-FCN ,Mask R-CNN (基于anchor);RepPoints(无anchor)
2.2 Bag of freebies
通常,常规的物体检测器是离线训练的。因此,研究人员总是喜欢利用这一优势,并开发出更好的训练方法,以使物体检测器获得更好的精度而又不增加推理成本。我们称这些仅改变训练策略或仅增加训练成本的方法为“免费赠品”。数据检测是对象检测方法经常采用的且符合免费赠品袋定义的数据。数据增强的目的是增加输入图像的可变性,从而使设计的物体检测模型对从不同环境获得的图像具有更高的鲁棒性。例如,光度畸变和几何畸变是两种常用的数据增强方法,它们无疑有益于物体检测任务。在处理光度失真时,我们会调整图像的亮度,对比度,色相,饱和度和噪点。对于几何变形,我们添加了随机缩放,裁剪,翻转和旋转。
上面提到的数据增强方法都是逐像素调整,并且保留了调整区域中的所有原始像素信息。此外,一些从事数据增强的研究人员将重点放在模拟对象遮挡问题上。他们在图像分类和目标检测中取得了良好的效果。例如,随机擦除和CutOut可以随机选择图像中的矩形区域,并填充零的随机或互补值。至于hide-and-seek和grid mask,他们随机或均匀地选择图像中的多个矩形区域,并将它们替换为全零。如果类似的概念应用于要素地图,则有DropOut,DropConnect和DropBlock方法。另外,一些研究人员提出了一起使用多个图像进行数据增强的方法。例如,MixUp使用两个图像以不同的系数比率进行乘法和叠加,然后使用这些叠加比率来调整标签。对于CutMix ,它是将裁切后的图像覆盖到其他图像的矩形区域,并根据混合区域的大小调整标签。除了上述方法之外,style transfer GAN 还用于数据增强,并且这种用法可以有效地减少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可以达到较好的收敛速度和精度。
但是,直接估计BBox的每个点的坐标值是将这些点视为独立变量,但实际上并未考虑对象本身的完整性。为了使这个问题得到更好的处理,一些研究人员最近提出了IoU损失[90],它将预测的BBox区域的覆盖率和地面真实BBox区域的覆盖范围考虑在内。IoU损耗计算过程将通过使用基本事实执行IoU,然后将生成的结果连接到整个代码中,触发BBox的四个坐标点的计算。因为IoU是尺度不变表示,所以可以解决传统方法计算fx,y,w,hg的l1或l2损失时,损失会随着尺度增加的问题。最近,一些研究人员继续改善IoU损失。例如,GioU损失[65]除了覆盖区域外还包括对象的形状和方向。他们提出找到可以同时覆盖预测的BBox和地面真值BBox的最小面积BBox,并使用该BBox作为分母来代替最初用于IoU损失的分母。至于DIoU损耗[99],它另外考虑了对象中心的距离,而CIoU损耗[99]同时考虑了重叠区域,中心点之间的距离和纵横比。CIoU可以在BBox回归问题上实现更好的收敛速度和准确性。
2.3 Bag of specials
对于那些仅增加少量推理成本但可以显着提高对象检测准确性的插件模块和后处理方法,我们将其称为“特价袋”。一般而言,这些插件模块用于增强模型中的某些属性,例如扩大接受域,引入注意力机制或增强特征集成能力等,后处理是用于筛选模型预测结果的方法。
可以用来增强接收域的常用模块是SPP [25],ASPP [5]和RFB [47]。SPP模块起源于空间金字塔匹配(SPM)[39],而SPM的原始方法是将特征图分割为几个d*d个相等的块,其中d可以为{1。2,3,...},从而形成空间金字塔,然后提取bag-of-word特征。SPP将SPM集成到CNN中,并使用最大池化操作而不是bag-of-word操作。由于He等人提出的SPP模块。[25]将输出一维特征向量,在全卷积网络(FCN)中应用是不可行的。因此,在YOLOv3的设计中[63],Redmon和Farhadi将SPP模块改进为内核大小为k*k的最大池输出的级联,其中k = {1,5,9,13},步幅等于1。在这种设计下,较大的k*k的最大池化有效地增加了主干特征的接收域。在添加了改进版本的SPP模块之后,YOLOv3-608在MS COCO物体检测任务上将AP50升级了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上SSD的AP50提高5.7%。
物体检测中经常使用的注意力模块主要分为通道式注意和点式注意,这两种注意模型的代表是Squeeze-and-Excitation(SE)[29]和空间注意模块(SAM)[ 85]。尽管SE模块可以将ImageNet图像分类任务中的ResNet50的功能提高1%至top-1精度,其中仅需将计算工作量增加2%即可,但是通常在GPU上它将使推理时间增加大约10%, 因此更适合在移动设备中使用。但是对于SAM,它只需要支付0.1%的额外费用,就可以在ImageNet图像分类任务上将ResNet50-SE的top-1准确性提高0.5%。最棒的是,它根本不影响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筛选过程中。值得一提的是,由于上述后处理方法均未直接涉及捕获的图像功能,因此在随后的无锚方法开发中不再需要后处理。
三、方法(Methodology)
基本目标是神经网络在生产系统中的快速运行速度以及对并行计算的优化,而不是低计算量理论指标(BFLOP)。我们提供了实时神经网络的两种选择:
-
对于GPU,我们使用少量的组(1-8)卷积层:CSPResNeXt50 / CSPDarknet53
- 对于VPU-我们使用分组卷积,但是我们不再使用挤压和激发(SE)块-特别是这包括以下模型:EfficientNet-lite / MixNet [76] / GhostNet [21] / Mo-bileNetV3
3.1. Selection of architecture
我们的目标是在输入网络分辨率,卷积层数,参数数(过滤器大小的平方 *过滤器*通道/组)和层输出(过滤器)的数量之间找到最佳平衡。例如,我们的大量研究表明,就ILSVRC2012(ImageNet)数据集上的对象分类而言,CSPResNext50比CSPDarknet53更好。然而,相反,就检测MS COCO数据集上的对象而言,CSPDarknet53优于CSPResNext50 [46]。
下一个目标是针对不同的检测器级别从不同的主干级别中选择其他块来增加接收场和参数聚集的最佳方法: 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的组成:
- Backbone: CSPDarknet53 [81]
- Neck: SPP [25], PAN [49]
- Head: YOLOv3 [63]
YOLOv4的使用:
- 支持主干的BoF:CutMix和Mosaic数据增强,DropBlock正则化,类标签平滑
- 专为主干网设计的BoS:激活网状天线,跨阶段部分连接(CSP),多输入加权剩余连接(MiWRC)
- 用于检测器的BoF:CIoU损失,CmBN,DropBlock正则化,镶嵌数据增强,自我专家训练,消除网格敏感性,对单个地面真相使用多个锚点,余弦退火调度程序[52],最佳超参数,随机训练形状
- 用于检测器的BoS:Mish激活,SPP块,SAM块,PAN路径聚集块,DIoU-NMS
四、实验
我们测试了不同训练改进技术对ImageNet(ILSVRC 2012 val)数据集上分类器准确性的影响,然后对MS COCO(test-dev 2017)数据集上检测器的准确性进行了影响。
4.1. Experimental setup
在ImageNet图像分类实验中,默认的超参数如下:训练步骤为8,000,000;批量大小和最小批量大小分别为128和32;采用多项式衰减学习率调度策略,初始学习率为0.1。预热步骤为1000;动量和权重衰减分别设置为0.9和0.005。我们所有的BoS实验都使用与默认设置相同的超参数,并且在BoF实验中,我们添加了额外的50%训练步骤。在BoF实验中,我们验证了MixUp,CutMix,Mosaic,模糊数据增强和标签平滑正则化方法。在BoS实验中,我们比较了LReLU,Swish和Mish激活功能的效果。所有实验均使用1080 Ti或2080 Ti GPU进行训练。
在MS COCO物体检测实验中,默认的超参数如下:训练步骤是500,500;训练步骤是500,500。采用步阶衰减学习率调度策略,初始学习率为0.01,并分别以400,000步和450,000步乘以系数0.1。动量和权重衰减分别设置为0.9和0.0005。所有架构都使用单个GPU以64的批量大小执行多尺度训练,而最小批量大小为8或4则取决于架构和GPU内存限制。除了使用遗传算法进行超参数搜索实验外,所有其他实验均使用默认设置。遗传算法使用YOLOv3-SPP训练GIoU损失,并搜索最小值5k集的300个epochs。对于遗传算法实验,我们采用搜索学习率0.00261,动量0.949,IoU阈值来分配地面实况0.213,并使用损失归一化器0.07。我们已经验证了许多BoF,包括消除网格敏感性,镶嵌数据增强,IoU阈值,遗传算法,类标签平滑,交叉小批量标准化,自对抗训练,余弦退火调度程序,动态小批量大小,DropBlock,优化anchor,不同类型的IoU损失。我们还对各种BoS进行了实验,包括Mish,SPP,SAM,RFB,BiFPN和高斯YOLO [8]。对于所有实验,我们仅使用一个GPU进行训练,因此未使用可优化多个GPU的诸如syncBN之类的技术。
4.2. Influence of different features on Classifier training
首先,我们研究不同特征对分类器训练的影响;具体来说,如图7所示,类标签平滑的影响,不同数据增强技术的影响,双边模糊,MixUp,CutMix和Mosaic的影响,以及Leaky-ReLU(默认情况下),Swish等不同激活的影响和Mish。
在我们的实验中,如表2所示,通过引入以下功能提高了分类器的准确性:CutMix和Mosaic数据增强,类标签平滑和Mish激活。因此,我们用于分类器训练的BoFbackbone包括以下内容:CutMix和Mosaic数据增强和类标签平滑。此外,我们使用Mish激活作为补充选项,如表2和表3所示。
4.3. Influence of different features on Detector training
进一步的研究涉及到不同的BoF-detector对探测器训练精度的影响,如表4所示。我们通过研究在不影响FPS的情况下提高探测器精度的各种特征,显著扩展了BoF列表:
- S:消除网格灵敏度,方程bx =sigma(tx)+ cx;by =sigma(ty)+ cy,其中cx和cy始终是整数,在YOLOv3中用于评估对象坐标,因此,对于接近 cx或 cx + 1值的bx值,需要非常高的tx绝对值。我们通过将sigmoid函数乘以超过1.0的因数来解决此问题,从而消除了无法检测到物体的网格的影响。
- M:Mosaic数据增强-在训练过程中使用4图像Mosanic而非单幅图像
- IT:IoU阈值-对单个真实背景IoU(真实,锚点)> IoU阈值使用多个锚点
- GA:遗传算法-使用遗传算法在网络训练的前10%时间段内选择最佳超参数
- LS:类标签平滑-使用类标签平滑进行S型激活
- CBN:CmBN-使用交叉微型批处理规一化来收集整个批处理中的统计信息,而不是在单个微型批处理中收集统计信息
- CA:余弦退火调度程序-在正弦曲线训练期间更改学习率
- DM:动态小批量大小-使用随机训练形状在小分辨率训练期间自动增加小批量大小
- OA:优化的anchor-使用优化的anchor以512x512网络分辨率进行训练
- IoU,CIoU,DIoU,MSE-使用不同的损失算法进行有界框回归
进一步的研究涉及不同的BagofSpecials(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模型相比,经过不同功能训练的CSPResNeXt50模型的分类准确性更高,但是CSPDarknet53模型在对象检测方面显示出更高的准确性。
- 其次,将BoF和Mish用于CSPResNeXt50分类器训练可提高其分类准确性,但是将这些预训练权重进一步用于检测器训练会降低检测器准确性。
- 但是,将BoF和Mish用于CSPDarknet53分类器训练会提高分类器和使用该分类器预训练加权的检测器的准确性。
- 最终结果是,骨干CSPDarknet53比CSPResNeXt50更适合于检测器。
- 我们观察到,由于各种改进,CSPDarknet53模型显示出提高检测器精度的更大能力。
4.5. Influence of different minibatch size on Detector training
最后,我们分析了使用不同小批量大小训练的模型获得的结果,结果显示在表7中。从表7中显示的结果中,我们发现在添加BoF和BoS训练策略之后,小批量大小对检测器的性能几乎没有影响。此结果表明,在引入BoF和BoS之后,不再需要使用昂贵的GPU进行训练。换句话说,任何人都只能使用常规的GPU来训练出色的检测器。
五. Results
与其他最先进的物体探测器获得的结果进行比较,如图8所示。我们的YOLOv4位于帕累托最优曲线上,在速度和准确性方面均优于最快,最精确的探测器。由于不同的方法使用不同架构的GPU进行推理时间验证,因此我们在Maxwell,Pascal和Volta架构的通用GPU上运行YOLOv4,并将它们与其他最新方法进行比较。
图8:不同物体检测器的速度和准确性的比较。(一些文章指出,它们的探测器的FPS仅适用于其中一种GPU:Maxwell / Pascal / Volta)
表8列出了使用Maxwell GPU的帧速率比较结果,它可以是GTX Titan X(Maxwell)或Tesla M40 GPU。
表8:MS COCO数据集上不同物体检测器的速度和准确性的比较(testdev 2017)
(FPS 30或更高的实时检测器在此处突出显示。我们将结果与batch = 1进行比较,而无需使用tensorRT。)
表9列出了使用Pascal GPU的帧速率比较结果,可以是Titan X(Pascal),Titan Xp,GTX 1080 Ti或Tesla P100 GPU。
表9:MS COCO数据集上不同物体检测器的速度和准确性的比较(test-dev 2017)。
(FPS 30或更高的实时检测器在此处突出显示。我们将结果与batch = 1进行比较,而无需使用tensorRT。)
至于表10,它列出了使用Volta GPU的帧速率比较结果,可以是Titan Volta或Tesla V100 GPU。
表10:MS COCO数据集上不同物体检测器的速度和准确性的比较(test-dev 2017)
(FPS 30或更高的实时检测器在此处突出显示。我们将结果与batch = 1进行比较,而无需使用tensorRT)
六. Conclusions
我们提供最先进的检测器,其速度(FPS)和准确度(MS COCO AP50 … 95和AP50)比所有可用的替代检测器都高。所描述的检测器可以在具有8-16GB-VRAM的常规GPU上进行训练和使用,这使得它的广泛使用成为可能。一阶段基于锚的探测器的原始概念已证明其可行性。我们已经验证了大量特征,并选择使用其中的一些特征以提高分类器和检测器的准确性。这些功能可以用作将来研究和开发的最佳实践。
七、Acknowledgements
作者要感谢Glenn Jocher进行Mosaic数据增强的想法,通过使用遗传算法选择超参数并解决网格敏感性问题的方法https://github.com/ultralytics/yolov3.10。
以上是关于YOLOv4 论文精读的主要内容,如果未能解决你的问题,请参考以下文章