【YOLO系列】YOLOv4论文超详细解读1(翻译 +学习笔记)

news/2024/4/25 12:20:52/文章来源:https://blog.csdn.net/weixin_43334693/article/details/129232468

前言 

      经过上一期的开篇介绍,我们知道YOLO之父Redmon在twitter正式宣布退出cv界,大家都以为YOLO系列就此终结的时候,天空一声巨响,YOLOv4闪亮登场!v4作者是AlexeyAB大神,虽然换人了,但论文中给出的测试结果依然保留YOLO系列的血统:保持相对较高的mAP的同时,大大降低计算量,可谓是学术成果在工业应用的典范,至于实际使用如何,还需要时间的进一步检验。
        YOLOv4的论文是我读文献以来最不“爽”的一篇,YOLOv4像一个“缝合怪”,几乎没有提出什么创新性的东西,其实是一个结合了大量前人研究技术,加以组合并进行适当创新的算法,实现了速度和精度的完美平衡。里面涉及的tricks过多,每读到一点我都要查大量资料。由于篇幅有限,本篇只是对论文进行解读,trick详解请看这篇:【YOLO系列】YOLOv4论文超详细解读2(网络详解)

       好了,我们现在开始吧~


学习资料: 

论文链接:《YOLOv4:Optimal Speed and Accuracy of Object Detection》

代码链接:mirrors / alexeyab / darknet · GitCode 


前期回顾: 

【YOLO系列】YOLOv3论文超详细解读(翻译 +学习笔记)【YOLO系列】YOLOv2论文超详细解读(翻译 +学习笔记) 

【YOLO系列】YOLOv1论文超详细解读(翻译 +学习笔记)


目录

前言 

 Abstract—摘要

 一、 Introduction—简介

二、Related work—相关工作

2.1 Object detection models—目标检测模型

2.2 Bag of freebies

2.3 Bag of specials

三、Methodology—方法

3.1 Selection of architecture—架构选择 

3.2 Selection of BoF and BoS—BoF和BoS的选择

3.3 Additional improvements—进一步改进

3.4 YOLOv4

四、Experiments—实验

4.1 Experimental setup—实验设置

4.2 Influence of different features on Classifier training—不同特征对分类器训练的影响

4.3 Influence of different features on Detector training—不同特征对检测器训练的影响

4.4 Influence of different backbones and pre- trained weightings on Detector training—不同的backbone和预先训练权重对检测器训练的影响

4.5 Influence of different mini-batch size on Detec- tor training—不同的小批尺寸对检测器培训的影响

 五、Results—结果


 Abstract—摘要

翻译

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

精读

提高CNN准确性的方法

(1)专用特性: 一些特征只针对某一模型,某一问题,或仅为小规模数据集

(2)通用特性: 一些特性,如批处理规范化和残差连接,则适用于大多数模型、任务和数据集。这些通用特性包括加权剩余连接(WRC)、跨阶段部分连接(CSP)、跨小批标准化(CmBN)、自反训练(SAT)和Mish 激活函数。

YOLOv4使用的技巧

使用新特性:WRC、CSP、CmBN、SAT、Mish 激活函数、Mosaic数据增强、CmBN、DropBlock正则化、CIoU损失,结合这些技巧实现先进的结果。

实现结果

在Tesla V100上,MS COCO数据集以65 FPS的实时速度达到43.5 % AP ( 65.7 % AP50 )。


 一、 Introduction—简介

翻译

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

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

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

        2.我们验证了state-of-the-art Bag-of Freebies and Bag-of-Specials对目标检测的影响。

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

精读

启发

(1)改进性能: 大多数基于CNN的目标检测器主要只适用于推荐系统,因此需要提高实时目标探测器的准确性。

(2)单GPU训练: 最精确的现代神经网络不能实时运行,需要大量的GPU来进行大规模的小批量训练。我们通过创建一个在常规GPU上实时运行的CNN来解决这些问题,而训练只需要一个常规GPU。

目的

设计生产系统中目标检测器的快速运行速度,优化并行计算,而不是低计算量理论指标 (BFLOP)。

贡献

(1)开发了一个高效、强大的目标检测模型。使用单个1080 Ti或2080 Ti GPU就能训练一个超级快速和精确的目标探测器。

(2)验证了在检测器训练过程中,最先进的Bag-of-Freebies 和Bag-of-Specials对目标检测方法的影响。

(3)修改了最先进的方法,使其更有效,更适合于单GPU训练。

Q: Bag-of-Freebies 和Bag-of-Specials

Bag-of-Freebies: 指不会显著影响模型测试速度和模型复杂度的技巧,主要就是数据增强操作、标签软化等外在训练方法,即不需要改变网络模型。

Bag-of-Specials: 是用最新最先进的方法(网络模块)来魔改检测模型。只增加少量推理成本但能显著提高对象检测精度的插件模块和后处理方法,一般来说,这些插件模块都是为了增强模型中的某些属性,如扩大感受野、引入注意力机制或加强特征整合能力等,而后处理是筛选模型预测结果的一种方法。


二、Related work—相关工作

2.1 Object detection models—目标检测模型

翻译

现代探测器通常由两部分组成,一个是在ImageNet上预先训练的主干,另一个是用于预测物体的类和边界框的头部。对于那些运行在GPU平台上的检测器,它们的主干可以是VGG[68]、ResNet[26]、ResNeXt[86]或DenseNet[30]。对于那些运行在CPU平台上的检测器,它们的主干可以是SqueezeNet [31]、MobileNet[28,66,27,74]或ShufflfleNet[97,53]。对于头部部分,通常可分为一级目标探测器和两级目标探测器两类。最具代表性的两级目标探测器是R-CNN[19]系列,包括Fast R-CNN[18]、Faster R-CNN[64]、R-FCN[9]和Libra R-CNN[58].也可以使一个两级目标检测器成为一个无锚点的目标检测器,如反应点[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])用于目标检测。 

        综上所述,一个普通的物体探测器由以下几个部分组成:

精读

现代目标检测器组成

(1)主干backbone: 在ImageNet上预先训练的网络用来特征提取。

  • GPU平台上运行的检测器,主干可以是VGG、ResNet、ResNeXt或DenseNet。
  • CPU平台上运行的检测器,主干可以是SqueezeNet、MobileNet或ShuffleNet。

(2)头部head: 对图像特征进行预测,生成边界框和并预测类别。通常分为两类即单阶段目标检测器和两阶段目标检测器。

  • two stage: R-CNN系列,包括fast R-CNN、faster R-CNN、R-FCN和Libra R-CNN。
  • one stage: 最具代表性的模型有YOLO、SSD和RetinaNet。

(3)颈部neck: 近年来发展起来的目标检测器常常在主干和头部之间插入一系列混合和组合图像特征的网络层,并将图像特征传递到预测层。称之为目标检测器的颈部neck。

通常,一个颈部neck由几个自下而上的路径和几个自上而下的路径组成。具有该机制的网络包括特征金字塔网络(FPN)、路径汇聚网络(PAN)、BiFPN和NAS-FPN。

综上所述,一个普通的物体探测器是由“特征输入、骨干网络、颈部和头部”四部分组成的:


2.2 Bag of freebies

翻译

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

        上述数据增强方法都是像素级调整,并保留调整区域中的所有原始像素信息。此外,一些从事数据增强工作的研究人员将其重点放在了模拟对象遮挡问题上。它们在图像分类和目标检测方面取得了良好的效果。例如,随机擦除[100]和CutOut[11]可以随机选择图像中的矩形区域,并填充一个随机的或互补的零值。对于hide-and-seek[69]和grid mask[6],它们随机或均匀地选择一个图像中的多个矩形区域,并将它们替换为所有的零。如果将类似的概念应用于特征映射,则会有DropOut[71]、Drop连接[80]和DropBlock[16]方法。此外,一些研究者提出了使用多个图像一起进行数据增强的方法。例如,MixUp[92]使用两幅图像用不同的系数比进行乘法和叠加,然后用这些叠加的比率来调整标签。 

         CutMix[91]是将裁剪后的图像覆盖到其他图像的矩形区域,并根据混合区域的大小调整标签。除上述方法外,还采用了样式转移GAN[15]进行数据增强,这种使用可以有效地减少CNN学习到的纹理偏差。

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

        最后bag of freebies是边界盒(BBox)回归的目标函数。传统的对象检测器通常使用均方误差(MSE)直接对BBox的中心点坐标和高度和宽度进行回归,{,w、h}或左上角点和右下角点。对于基于锚的方法,是估计相应的偏移量,例如和,然而,直接估计BBox中每个点的坐标值是要将这些点作为自变量来处理,但实际上并没有考虑对象本身的完整性。为了更好地处理这一问题,一些研究人员最近提出了IoU损失[90],它考虑了预测的BBox区域和地面真实BBox区域的覆盖范围。IoU损失计算过程将通过使用地面真相执行IoU,触发BBox的四个坐标点的计算,然后将生成的结果连接到一个整个代码中。由于IoU是一种尺度不变表示,它可以解决传统方法计算{x、y、w、h}的l1或l2损失时,损失会随着尺度的增加而增加的问题。最近,一些研究人员继续改善IoU的损失。例如,GIoU损失[65]除了包括覆盖区域外,还包括物体的形状和方向。他们提出找到能够同时覆盖预测的BBox和地面真实BBox的最小面积的BBox,并使用该BBox作为分母来代替IoU损失中最初使用的分母。对于DIoU损失[99],它另外考虑了物体中心的距离,而CIoU损失[99]则同时考虑了重叠面积、中心点之间的距离和高宽比。CIoU在BBox回归问题上可以获得更好的收敛速度和精度。

精读

BoF方法一:数据增强

(1)像素级调整

①光度失真: brightness(亮度)、contrast(对比度)、hue(色度)、saturation(饱和度)、noise(噪声)

②几何失真: scaling(缩放尺寸)、cropping(裁剪)、flipping(翻转)、rotating(旋转)

(2)模拟目标遮挡

①erase(擦除)、CutOut(剪切): 随机选择图像的矩形区域,并填充随机或互补的零值

②hide-and-seek和grid mask: 随机或均匀地选择图像中的多个矩形区域,并将它们替换为全零

③将上述方式作用于特征图上: DropOut、DropConnect、DropBlock

(3)将多张图像组合在一起

①MixUp: 使用两个图像以不同的系数比率相乘后叠加,利用叠加比率调整标签

②CutMix: 将裁剪的图像覆盖到其他图像的矩形区域,并根据混合区域大小调整标签

(4)使用style transfer GAN进行数据扩充,有效减少CNN学习到的纹理偏差。

BoF方法二:解决数据集中语义分布偏差问题

①两阶段对象检测器: 使用硬反例挖掘或在线硬例挖掘来解决。不适用于单级目标检测。

②单阶段目标检测器: focal损来处理各个类之间存在的数据不平衡问题。

BoF方法三:边界框(BBox)回归的目标函数

①IoU损失: 将预测BBox区域的区域和真实BBox区域考虑在内。由于IoU是尺度不变的表示,它可以解决传统方法在计算{x, y, w, h}的l1或l2损耗时,损耗会随着尺度的增大而增大的问题。

②GIoU loss: 除了覆盖区域外,还包括了物体的形状和方向。他们提出寻找能够同时覆盖预测BBox和地面真实BBox的最小面积BBox,并以此BBox作为分母来代替IoU损失中原来使用的分母。

③DIoU loss: 它额外考虑了物体中心的距离。

④CIoU loss : 同时考虑了重叠区域、中心点之间的距离和纵横比。对于BBox回归问题,CIoU具有更好的收敛速度和精度。


2.3 Bag of specials

翻译

 对于那些只增加少量推理成本但又能显著提高目标检测精度的插件模块和后处理方法,我们称它们为“bag of specials"。一般来说,这些插件模块是用于增强模型中的某些属性,如扩大接受域、引入注意机制或增强特征整合能力等,而后处理是筛选模型预测结果的一种方法。 

        可用于增强感受野的常见模块是SPP[25]、ASPP[5]和RFB[47]。SPP模块起源于空间金字塔匹配(SPM)[39],SPMs的原始方法是将特征映射分割成几个d×d相等的块,其中d可以是{1,2,3,…},从而形成空间金字塔,然后提取bag-of-word特征。SPP将SPM集成到CNN中,使用最大池化操作,而不是bag-of-word操作。由于He等人[25]提出的SPP模块将输出一维特征向量,因此在全卷积网络(FCN)中应用是不可行的。因此,在YOLOv3[63]的设计中,Redmon和Farhadi将SPP模块改进为核大小为k×k,其中k={1,5,9,13},步幅等于1。在这种设计下,相对较大的最大池有效地增加了主干特征的接受域。 在添加改进版本的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模块可以提高ResNet50的力量在ImageNet图像分类任务1%top-1精度的只增加2%计算,但在GPU通常将使推理时间增加约10%,所以它更适合用于移动设备。但对于SAM,它只需要额外支付0.1%的计算量,就可以将ResNet50-SE提高到ImageNet图像分类任务的0.5%的top-1精度。最重要的是,它根本不影响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和s型激活函数中经常遇到的梯度消失问题。随后,提出了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,它可以用于过滤那些预测同一对象不好的预测框,并且只保留响应率较高的候框。NMS试图改进的方法与优化目标函数的方法是一致的。NMS提出的原始方法不考虑上下文信息,因此Girshick等[19]在R-CNN中添加分类置信分数作为参考,根据置信分数的顺序,按照高到低的顺序进行greedy NMS。对于soft NMS[1],它考虑了对象的遮挡在greedy NMS中可能导致置信度分数下降的问题。DIoU NMS[99]开发者的思维方式是在soft NMS的基础上,将中心点距离的信息添加到BBox的筛选过程中。值得一提的是,由于上述所有的后处理方法都没有直接涉及到所捕获的图像特征,因此在后续的无锚定方法的开发中,不再需要后处理。
 

精读

BoS方法一:插件模块之增强感受野

①改进的SPP模块

②ASPP模块

③RFB模块

BoS方法二:插件模块之注意力机制

①channel-wise注意力: 代表是Squeeze-and-Excitation挤压激励模块(SE)。

②point-wise注意力: 代表是Spatial Attention Module空间注意模块(SAM)。

BoS方法三:插件模块之特征融合

①SFAM: 主要思想是利用SE模块在多尺度的拼接特征图上进行信道级重加权。

②ASFF: 使用softmax对多尺度拼接特征图在点维度进行加权。

 ③BiFPN: 提出了多输入加权剩余连接来执行按比例的水平重加权,然后添加不同比例的特征图。

BoS方法四:激活函数

①LReLU和PReLU: 主要目的是解决输出小于0时ReLU的梯度为零的问题。

②ReLU6和hard-Swish: 专门为量化网络设计的。

③SELU: 针对神经网络的自归一化问题。

④Swish和Mish: 都是连续可微的激活函数。

BoS方法五:后处理

①NMS: 目标检测中常用的后处理方法是NMS, NMS可以对预测较差的bbox进行过滤,只保留响应较高的候选bbox。NMS试图改进的方法与优化目标函数的方法是一致的。NMS提出的原始方法没有考虑上下文信息,所以在R-CNN中加入了分类的置信分作为参考,按照置信分的顺序,从高到低依次进行贪心NMS。

②soft NMS: 考虑了对象的遮挡可能导致带IoU分数的贪婪NMS的信心分数下降的问题。

③DIoU NMS: 在soft NMS的基础上,将中心点距离信息添加到BBox筛选过程中。值得一提的是,由于以上的后处理方法都没有直接引用捕获的图像特征,因此在后续的无锚方法开发中不再需要后处理。


三、Methodology—方法

3.1 Selection of architecture—架构选择 

翻译 


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

        下一个目标是选择额外的块来增加感受野,以及从不同检测器级别的参数聚合的最佳方法:例如FPN、PAN、ASFF、BiFPN。 

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

  •         更高的输入网络大小(分辨率)
  •         用于检测多个小大小的物体更多的层
  •        更高的接受域以覆盖增加的输入网络大小更多的参数
  •        模型更大的能力来检测单一图像中多个不同大小的物体

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

        不同大小的感受野的影响总结如下:

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

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

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

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

        我们不使用Cross-GPU批处理归一化(CGBN或SyncBN)或昂贵的专用设备。这允许任何人都可以在传统的图形处理器上再现我们最先进的结果,例如GTX 1080Ti或RTX 2080Ti。 
 

精读

架构选择目标

目标一:在输入网络分辨率、卷积层数、参数数(filter size2×filters × channel / groups)和层输出数(filters)之间找到最优平衡。

检测器需要满足以下条件:

①更高的输入网络大小(分辨率): 用于检测多个小型对象

②更多的层: 一个更高的接受域,以覆盖增加的输入网络的大小

③更多的参数: 模型有更强大的能力,以检测单个图像中的多个不同大小的对象。

目标二:选择额外的块来增加感受野

不同大小的感受野的影响总结如下:

①对象大小: 允许查看整个对象

②网络大小: 允许查看对象周围的上下文

③超过网络大小: 增加图像点和最终激活之间的连接数

目标三:选择不同的主干层对不同的检测器层(如FPN、PAN、ASFF、BiFPN)进行参数聚合的最佳方法。

YOLOv4架构

(1)CSPDarknet53主干(backbone): 作者实验对比了CSPResNext50、CSPDarknet53和EfficientNet-B3。从理论与实验角度表明:CSPDarkNet53更适合作为检测模型的Backbone。(还是自家的网络结构好用)

CSP介绍:

CSP是可以增强CNN学习能力的新型backbone,论文发表2019年11月份

主要技巧:CSPNet将底层的特征映射分为两部分,一部分经过密集块和过渡层,另一部分与传输的特征映射结合到下一阶段。

(2)SPP附加模块增加感受野: 在CSPDarknet53上添加了SPP块,SPP来源于何恺明大佬的SPP Net因为它显著增加了接受域,分离出了最重要的上下文特性,并且几乎不会降低网络运行速度。

(3)PANet路径聚合(neck): PANet主要是特征融合的改进,使用PANet作为不同检测层的不同主干层的参数聚合方法。而不是YOLOv3中使用的FPN。

(4)基于锚的YOLOv3头部(head): 因为是anchor-base方法,因此分类、回归分支没有改变。

总结: YOLOv4模型 = CSPDarkNet53 + SPP + PANet(path-aggregation neck) + YOLOv3-head


3.2 Selection of BoF and BoS—BoF和BoS的选择

翻译

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

  • 激活:ReLU, leaky-ReLU, parametric-ReLU,ReLU6, SELU, Swish, or Mish
  • 边界盒回归损失:MSE,IoU、GIoU、CIoU、DIoU
  • 数据增强:CutOut, MixUp, CutMix
  • 正则化方法:DropOut, DropPath,Spatial DropOut [79], or DropBlock
  • 规范化的网络激活(通过均值和方差):批标准化(BN)[32],Cross-GPU Batch Normalization(CGBN或SyncBN)[93],Filter Response Normalization(FRN)[70],或交叉迭代批标准化(CBN)[89]
  • Skip-connections:Residual connections,加权Residual connections、多输入加权Residual connections或Cross stage partial连接(CSP) 

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

精读

为了提高目标检测训练,CNN通常使用以上提到的方法(具体在【YOLO系列】YOLOv4论文超详细解读2(网络详解)里详细讲解)

(1)激活函数: 由于PReLU和SELU更难训练,我们选择专门为量化网络设计的ReLU6

(2)正则化: 我们选择DropBlock

(3)归一化: 由于是单GPU,所以没有考虑syncBN


3.3 Additional improvements—进一步改进

翻译

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

 我们引入了一种新的数据增强Mosic,和自我对抗训练(SAT)
我们选择最优超参数而应用遗传算法
我们修改一些现有方法使设计适合有效的训练和检测,modifified SAM,modifified PAN,和交叉小批归一化(CmBN) 
        Mosaic代表了一种新的数据增强方法,它混合了4个训练图像。因此,混合了4种不同的上下文,而CutMix只混合了2个输入图像。这允许检测其正常上下文之外的对象。此外,批归一化计算每一层上4个不同图像的激活统计信息。这大大减少了对大型小批量处理的需求

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

精读

(1)新的数据增强Mosic和自我对抗训练(SAT)

①Mosaic: Mosaic代表了一种新的数据增强方法,它混合了4幅训练图像。基于现有数据极大的丰富了样本的多样性,极大程度降低了模型对于多样性学习的难度。

②自对抗训练(SAT):

  • 在第一阶段,神经网络改变原始图像而不是网络权值。通过这种方式,神经网络对自己执行一种对抗性攻击,改变原始图像,以制造图像上没有期望对象的假象。
  • 在第二阶段,神经网络以正常的方式对这个修改后的图像进行检测。

(2)应用遗传算法选择最优超参数

(3)修改现有的方法,使设计适合于有效的训练和检测

①修改的SAM: 将SAM从空间上的注意修改为点态注意

②修改PAN: 将PAN的快捷连接替换为shortcut 连接

③交叉小批量标准化(CmBN): CmBN表示CBN修改后的版本,如图所示,只在单个批内的小批之间收集统计信息。


3.4 YOLOv4

翻译

 在本节中,我们将详细说明YOLOv4的细节。

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

精读

YOLOv4包括

  • 主干(backbone): CSPDarknet53
  • 颈部(neck): SPP , PAN
  • 头(head): YOLOv3

YOLO v4使用

  • Bag of Freebies 外在引入技巧: CutMix和Mosaic数据增强,DropBlock正则化,类标签平滑
  • Bag of Specials 网络改进技巧: Mish激活、跨级部分连接(CSP)、多输入加权剩余连接(MiWRC)
  • Bag of Freebies 外在检测器引入技巧: CIoU loss, CmBN, DropBlock正则化,Mosaic数据增强,自对抗训练,消除网格敏感性,为一个真值使用多个锚,余弦退火调度,最优超参数,随机训练形状
  • Bag of Specials检测器网络改进技巧: Mish激活、SPP-block、SAM-block、PAN路径聚合块、DIoU-NMS

四、Experiments—实验

4.1 Experimental setup—实验设置

翻译

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

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

精读

(1)在ImageNet图像分类实验中,默认超参数为:

  •  训练步骤: 8,000,000
  •  批大小和小批大小分别: 128和32
  •  初始学习率: 0.1
  •  warm-up步长: 1000
  •  动量衰减: 0.9
  •  权重衰减: 0.005

(2)在MS COCO对象检测实验中,默认的超参数为:

  •  训练步骤: 500500
  •  初始学习率: 0.01
  •  warm-up步长: 在400,000步和450,000步分别乘以因子0.1
  •  动量衰减: 0.9
  •  权重衰减: 0.0005
  •  GPU数量: 1个
  •  批处理大小: 64

4.2 Influence of different features on Classifier training—不同特征对分类器训练的影响

翻译

        首先,我们研究了不同特征对分类器训练的影响;具体来说,类标签平滑的影响,不同数据增强技术的影响,bilateral blurring, MixUp, CutMix and Mosaic,如Fugure7所示,以及不同激活的影响,如Leaky-relu(默认)、Swish和Mish。 

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

精读

研究了不同特征对分类器训练的影响:类标签平滑的影响,不同数据增强技术的影响,不同的激活的影响。

 

 图7:各种数据增强方法

表2:Bof和Mish对Cspresnext - 50 Clas - Sifier准确率的影响

表3:Bof和Mish对Cspdarknet - 53 Classi - Fier精度的影响

结论

(1)通过引入特征如:CutMix和Mosaic数据增强、类标签平滑、Mish激活等,可以提高分类器的准确率。

(2)CutMix和Mosaic数据增强和类标签平滑可用于分类器训练的BoF backbone,此外,还可以使用Mish激活作为补充选项。


4.3 Influence of different features on Detector training—不同特征对检测器训练的影响

翻译

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

        S:消除网格灵敏度的公式 其中cx和cy总是整数,在YOLOv3中用于计算对象坐标,因此,对于接近cx或cx+1值的bx值,需要极高的tx绝对值。我们通过将s型矩阵乘以一个超过1.0的因子来解决这个问题,从而消除了对象无法检测到的网格的影响。

  •         M:Mosaic data-在训练期间使用4张图像的马赛克,而不是单一的图像 
  •         IT:IoU阈值-使用多个锚作为单一地面真实IoU(truth, anchor) >IoU阈值
  •         GA:Genetic algorithms-在前10%的时间段内使用遗传算法选择最优超参数
  •         LS:类标签平滑-使用类标签平滑的s型符号激活 
  •         CBN:CmBN-使用交叉小批标准化来收集整个批内的统计信息,而不是在单个小批内收集统计数据
  •         CA:余弦退火调度器-改变正弦波训练过程中的学习速率
  •         DM:动态小批量大小-在小分辨率训练中,通过使用随机训练形状自动增加小批量大小
  •         OA:优化的锚-使用优化的锚与512x512网络分辨率进行训练
  •         GIoU,CIoU,DIoU,MSE-使用不同的损失算法进行边界框回归 

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

精读

进一步的研究关注不同Bag-of-Freebies免费包 (BoF-detector)对检测器训练精度的影响,通过研究在不影响FPS(帧率:每秒传输的帧数)的情况下提高检测器精度的不同特征,我们显著扩展了BoF列表:

表4:Bag-of-Freebies 的消融研究。( CSPResNeXt50 - PANet - SPP , 512 × 512)。 粗体黑色表示有效

表5:Bag-of-Specials 的消融研究。( 512 × 512 )

结论

当使用SPP、PAN和SAM时,检测器的性能最佳。


4.4 Influence of different backbones and pre- trained weightings on Detector training—不同的backbone和预先训练权重对检测器训练的影响

翻译

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

         首先,虽然使用不同特征训练的CSPResNeXt-50模型的分类精度高于CSPDarknet53模型,但CSPDarknet53模型在目标检测方面具有更高的精度。

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

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

精读

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

结论

  • 具有最佳分类精度的模型在检测器精度方面并不总是最佳的。
  • 骨干CSPDarknet53比CSPResNeXt50更适合于检测器。
  • 由于各种改进,CSPDarknet53模型展示了更大的能力来提高检测器的精度。

4.5 Influence of different mini-batch size on Detec- tor training—不同的小批尺寸对检测器培训的影响

翻译

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

精读

表7:使用不同的 mini-batch size 进行检测器训练。

结论

  • 加入BoF和BoS训练策略后,小批量大小对检测器的性能几乎没有影响。
  • minibatch越大越好,CSPDarknet53对minibatch不敏感,利于单卡训练。
  • 在引入BoF和BoS之后,不再需要使用昂贵的GPU进行训练。

 五、Results—结果

翻译

与其他最先进的对象检测器所获得的结果的比较如图8所示。我们的YOLOv4位于Pareto最优性曲线上,在速度和精度方面都优于最快和最精确的探测器。 

        由于不同的方法使用不同架构的gpu进行推理时间验证,我们在通常采用的Maxwell、Pascal和Volta架构的gpu上操作YOLOv4,并将它们与其他最先进的方法进行比较。表8列出了使用MaxwellGPU的帧率比较结果,它可以是GTX TitanX(Maxwell)或TeslaM40GPU。表9列出了使用PascalGPU的帧率比较结果,可以是TitanX(Pascal)、TitanXp、GTX 1080Ti或特斯拉P100GPU。如表10所述,它列出了使用VoltaGPU的帧率比较结果,可以是Titan Volta或Tesla V100GPU。 

精读

图8 不同物体探测器的速度和精度比较。(一些文章只针对其中一个GPU : Maxwell / Pascal / Volta ,阐述了它们探测器的FPS)

结论

  • 得到的结果与其他最先进的物体探测器的比较如图8所示。我们的YOLOv4位于Pareto最优曲线上,无论是速度还是精度都优于最快最准确的检测器。
  • 由于不同的方法使用不同架构的gpu进行推理时间验证,我们在Maxwell架构、Pascal架构和Volta架构常用的gpu上运行YOLOv4,并与其他最先进的方法进行比较。

这篇就是论文的解读,因为涉及到太多tricks我目前理解的也不够深,以后再慢慢补充吧~ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_74874.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Project】项目管理软件学习笔记

一、前言使用Project制定项目计划步骤大致如下:以Project2013为例,按照上图步骤指定项目计划。二、实施2.1 创建空白项目点击文件——新建——空白项目,即完成了空白项目的创建,在此我把该项目保存为60mm项目管理.mpp,…

内存保护_2:RTA-OS内存保护逻辑及配置说明

上一篇 | 返回主目录 | 下一篇 内存保护_2:RTA-OS内存保护逻辑及配置说明3 OS配置说明3.1 OS一些基本概念及相互关系3.1.1 基本概念3.1.2 相互关系3.2 内存保护基本逻辑(RTA-OS)3.2.1 应用集的基本分类3.2.2 内存保护与应用集的关系3.3 OS等级…

【python】条件语句,简单理解

嗨害大家好鸭!我是小熊猫~ Python 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: 更多python资料获取:点击此处跳转文末名片获取 Python程序语言…

“华为杯”研究生数学建模竞赛2006年-【华为杯】A题:Ad Hoc 网络中的区域划分和资源分配问题(附获奖论文)

赛题描述 Ad Hoc网络是当前网络和通信技术研究的热点之一,对于诸如军队和在野外作业的大型公司和集团来说,Ad Hoc网络有着无需基站、无需特定交换和路由节点、随机组建、灵活接入、移动方便等特点,因而具有极大的吸引力。 在Ad Hoc网络中,节点之间的通信均通过无线传输来完…

【Yolov5】保姆级别源码讲解之-推理部分yolo.py文件

yolo.py文件讲解1.参数部分2.创建模型2.1 第一部分 加载配置文件YOLOv5 detection model2.2 第二部分 是通过加载的配置文件进行网络搭建,每一层Define model2.3 第三部分 对网络的步长进行了处理 Build strides, anchors2.4 第四部分对网络进行初始化 Init weights…

Java还值得选择吗?

自1995年Java问世,到2023年已经差不多存在了28年。作为高级编程语言,他的生命周期相比很多编程语言都长,也见证了很多编程语言的辉煌时刻,不过Java始终都是名列前茅。 Java的主要优势在于其一次编写、随处运行。简单来讲&#xf…

Windows10 把两张图片合并成一张图片

Windows10把两张图片合并成一张图片 文章目录Windows10把两张图片合并成一张图片1. 背景2. "画图"实现多图拼接1. 背景 相比截图功能,在 Google 的 Chrome 浏览器上,整页截屏功能仍需要安装额外的插件才能完成,这一点 微软的 bing…

只会手工测试,裸辞后怎么才能找到工作

我们可以从以下几个方面来具体分析下,想通了,理解透了,才能更好的利用资源提升自己。 一、我会什么? 先说第一个我会什么?第一反应:我只会功能测试,在之前的4年的中我只做了功能测试。内心存在…

Qt5的不同IDE的编码支持中文的问题记录

目录 1. IDE环境设置 1.1 IDE是Qt Creator 1.2 IDE是Visual Studio 1.3 编译器是MSVC 2. 源码文件main函数入口设置中文编码: 1. IDE环境设置 1.1 IDE是Qt Creator 环境设置为“UTF8Bom”编码。 1.2 IDE是Visual Studio 下载插件,名称是ForceUTF…

【C语言】自定义类型:结构体、枚举、联合

目录 1.结构体 1.1结构体类型 1.2结构体的自引用 1.3结构体的初始化 1.4结构体内存对齐 //对齐 //offsetof //修改默认对齐数 1.5结构体传参 2.位段 2.1位段的内存开辟 2.2位段的内存分配 3.枚举 4.联合(共用体) //判断大小端 1.结构体…

广泛运用在工业、轨道交通、监狱的ip对讲终端

ip网络对讲系统是不同于传统广播、调频寻址广播和数控广播的产品,它是基于IP数据网络,将音频信号经过数字编码以数据包形式按TCP\IP协议在局域网或广域网上传送,再由终端解码的纯数字化单向,双向及多向音频扩声系统。 本产品是新一…

2023前端二面经典手写面试题

实现一个call call做了什么: 将函数设为对象的属性执行&删除这个函数指定this到函数并传入给定参数执行函数如果不传入参数,默认指向为 window // 模拟 call bar.mycall(null); //实现一个call方法: Function.prototype.myCall function(context…

LLaMA-META发布单卡就能跑的大模型

2023年2月25日,Meta使用2048张A100 GPU,花费21天训练的Transformer大模型LLaMA开源了。 1.4T tokenstakes approximately 21 days 以下是觉得论文中重要的一些要点 1)相对较小的模型也可以获得不错的性能 研究者发现在给定计算能力限制的情…

《高性能MySQL》读书笔记(下)

目录 Mysql查询性能的优化 慢查询基础 优化数据访问 是否向数据库请求了不需要的数据 查询了不需要的记录 多表联查中返回全部列 MySQL是否在扫描额外的记录 重写查询的方式 切分查询(重点) 分解连接查询(重点) MySQL如…

史上最全的大数据开发八股文【自己的吐血总结】

自我介绍 我本硕都是双非计算机专业,从研一下开始学习大数据开发的相关知识,从找实习到秋招,我投递过100公司,拿到过10的offer,包括滴滴、字节、蚂蚁、携程、蔚来、去哪儿等大厂(岗位都是大数据开发&#…

算法练习(七)数据分类处理

一、数据分类处理 1、题目描述: 信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出…

喜讯!华秋电子荣获第六届“蓝点奖”十佳分销商奖

2 月 25 日,由深圳市电子商会主办的2023 中国电子信息产业创新发展交流大会暨第六届蓝点奖颁奖盛典在深圳隆重举行。 图:华秋商城渠道总监杨阳(右三) 深圳市电子商会连续六年举办“蓝点奖”评选活动,旨在表彰对电子信…

高端电器新十年,求解「竞速突围」

竞争激烈的高端电器品牌们,平时王不见王,但也有例外。海尔、博西、海信、创维、方太、老板等等近乎中国电器行业所有一线品牌副总裁级别以上高层,2月22日都现身于上海,来参加一场由红星美凯龙攒起来的高端电器局,2023中…

能在软路由docker给部署搭建teamsperk服务器么?并且设置好ddns

参考链接(4条消息) 【个人学习总结】使用docker搭建Teamspeak服务器_blcurtain的博客-CSDN博客_teamspeak3 docker(⊙﹏⊙)哎呀,崩溃啦! (tdeh.top)TeamSpeak服务器搭建与使用 - 缘梦の镇 (cmsboy.cn)Openwrt X86 docker运行甜糖-软路由,x86系统,openwrt…

虚拟数字人直播带货相比人工有哪些优势?

新经济时代的到来,彻底改变了传统的消费方式。虚拟数字人的出现,标志着新一波的消费升级到来。虚拟数字人直播带货,不仅降低了商家的带货成本,拉近了商家与消费者的距离,也给消费者带来全新的消费方式。 花西子虚拟形象…