YOLOv4全文阅读(全文中文翻译)
YOLOv4全文阅读(全文中文翻译)
YOLOv4: Optimal Speed and Accuracy of Object Detection
论文链接:
https://arxiv.org/pdf/2004.10934.pdf
代码链接:
https://github.com/AlexeyAB/darknet
摘要
有大量的特征被认为可以提高卷积神经网络(CNN)的精度。需要在大型数据集上对这些特征的组合进行实际测试,并对结果进行理论验证。某些功能只对某些模型进行操作,某些问题只对某些模型进行操作,或只对小规模数据集进行操作;而某些功能(如批处理规范化和剩余连接)则适用于大多数模型、任务和数据集。本文假设这些通用特征包括加权剩余连接(WRC)、跨阶段部分连接(CSP)、跨小批量规范化(CmBN)、自对抗训练(SAT)和Mish激活。本文使用了新功能:WRC、CSP、CmBN、SAT、误激活、马赛克数据增强、CmBN、DropBlock正则化和CIoU丢失,并将其中一些功能结合起来,以达到以下效果:43.5%的AP(65.7%的AP50)用于MS COCO数据集,在Tesla V100上以65 FPS的实时速度。
1. Introduction
大多数基于CNN的目标检测大多只适用于推荐系统。例如,通过城市摄像机搜索免费停车位是由低精度模型执行的,而汽车碰撞警告则与高精度模型相关。通过提高实时目标检测的准确性,不仅可以将其用于提示生成推荐系统,还可以用于独立的过程管理和减少人工输入。在传统图形处理单元(GPU)上进行实时目标检测,可以以合理的价格大量使用。最精确的现代神经网络不能实时工作,需要大量的gpu来进行小批量的训练。本文通过创建一个CNN来解决这些问题,CNN在传统GPU上实时运行,而训练只需要一个传统GPU。
这项工作的主要目标是设计生产系统中目标检测的快速运行速度和并行计算的优化,而不是低计算量理论指标(BFLOP)。本文希望所设计的对象可以很容易地训练和使用。例如,任何使用传统GPU进行训练和测试的人都可以获得实时、高质量和令人信服的目标检测结果,如图1所示的YOLOv4结果。
本文的贡献总结如下:
1. 本文开发了一个高效、强大的目标检测模型。它使得每个人都可以使用1080Ti或2080Ti的GPU来训练一个超快速和精确的目标检测。
2. 在检测训练期间,本文验证了最先进的免费包和特殊包目标检测方法的影响。 3. 本文修改了最新的方法,使之更有效,更适合于单一GPU训练,包括CBN[89]、PAN[49]、SAM[85]等。
2. Related work
2.1. Object detection models
现代检测通常由两部分组成,一部分是在图像网上预先训练的主干,另一部分是用来预测物体类别和边界盒的头部。对于运行在GPU平台上的检测,它们的主干可以是VGG[68]、ResNet[26]、ResNeXt[86]或DenseNet[30]。对于运行在CPU平台上的检测,它们的主干可以是SqueezeNet[31]、MobileNet[28、66、27、74]或Shuf flenet[97、53]。
头部一般分为一级目标检测和两级目标检测。最具代表性的两级目标检测是R-CNN[19]系列,包括fast R-CNN[18]、fasterR CNN[64]、R-FCN[9]和Libra R-CNN[58]。也可以使两级目标检测成为无锚目标检测,例如RepPoints[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]、hitdector[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::
• DensePrediction(one-stage):
◦ RPN[64],SSD[50],YOLO[61],RetinaNet [45] (anchor based)
◦ CornerNet [37], CenterNet [13], MatrixNet [60], FCOS [78] (anchor free)
• SparsePrediction(two-stage):
◦ Faster R-CNN [64], R-FCN [9], Mask RCNN [23] (anchor based) ◦ RepPoints [87] (anchor free)
2.2. Bag of freebies
通常,传统的目标检测是离线训练的。因此,研究者总是希望利用这一优势,开发出更好的训练方法,使目标检测在不增加推理成本的情况下获得更好的精度。本文将这些只改变训练策略或只增加训练成本的方法称为“免费包”,目标检测方法通常采用的满足免费包定义的方法是数据增强。数据增强的目的是增加输入图像的可变性,使所设计的目标检测模型对来自不同环境的图像具有更高的鲁棒性。例如,光照畸变和几何畸变是两种常用的数据增强方法,它们有利于目标检测任务。在处理光照失真时,本文调整图像的亮度、对比度、色调、饱和度和噪声。对于几何失真,本文添加了随机缩放、裁剪、偏移和旋转。上述数据增强方法均为逐像素调整,并且保留调整区域中的所有原始像素信息。
此外,一些从事数据增强的研究者把重点放在模拟物体遮挡问题上。在图像分类和目标检测方面取得了良好的效果。例如,random erase[100]和CutOut[11]可以随机选择图像中的矩形区域,并以0的随机或互补值填充。至于探测搜索(69)和网格掩码(6),它们随机或均匀地选择图像中的多个矩形区域,并将它们替换为全部零。如果将类似的概念应用于特征地图,则有DropOut[71]、DropConnect[80]和DropBlock[16]方法。此外,一些研究者还提出了利用多幅图像进行数据增强的方法。例如,MixUp[92]使用两个图像以不同的系数比率进行乘法和叠加,然后使用这些叠加比率调整标签。
对于CutMix[91],它是将裁剪后的图像覆盖到其他图像的矩形区域,并根据混合区域的大小调整标签。除了上述方法外,样式转移GAN[15]还用于数据增强,这样的使用可以有效地减少CNN学习到的纹理偏差。与以上提出的各种方法不同,一些其他的免费包方法致力于解决这些数据集中的mantic分布可能存在偏差的问题。在处理语义分布偏差问题时,一个非常重要的问题是不同类之间存在数据不平衡的问题,这一问题通常通过两级对象检测中的硬负示例挖掘[72]或在线硬示例挖掘[67]来解决。
但示例挖掘方法不适用对于单级目标检测,由于这种检测属于密集预测结构。因此,Lin等人 [45]提出了焦点损失的概念,以解决不同类别之间存在的数据不平衡问题。另一个非常重要的问题是,很难表达不同类别之间的关联度与一个热门的硬性表示之间的关系。此表示方案通常在执行标记时使用。文[73]提出的标签平滑是将硬标签转化为软标签进行训练,使模型更加健壮。为了获得更好的软标签,Islam 等人[33]引入了知识蒸馏的概念来设计标签关系网络。
最后一个亮度是边界盒回归的目标函数。传统的目标检测通常采用均方误差(MSE)直接对BBox的中心点坐标和高度、宽度进行回归。
然而,直接估计BBox中每个点的坐标值就是把这些点作为自变量来处理,但实际上并不考虑对象本身的完整性。为了使这个问题得到更好的处理,一些研究人员最近提出了IoU损失[90],其中考虑了预测BBox面积和地面真实BBox面积的覆盖。IoU损耗计算过程将通过执行IoU和地面真值来触发BBox四个坐标点的计算,然后将生成的结果连接成一个完整的代码。由于IoU是尺度不变的表示,它可以解决传统方法计算{x,y,w,h}的l1或l2损失时,损失会随着尺度的增大而增大的问题。最近,一些研究人员继续改善借据损失。例如,GIoU loss[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],SPMs最初的方法是将特征图分割成若干个d×d相等的块,其中d可以是{1,2,3,…},从而形成空间金字塔,然后提取一袋字的特征。SPP将SPM集成到CNN中,使用max池操作而不是包字操作。自He等人提出SPP模块以来 [25]提出一维特征向量,不适用于全卷积网络。
因此,在YOLOv3[63]的设计中,Redmon和Farhadi改进了SPP模块,将最大池输出与内核大小k×k(其中k={1,5,9,13},步长等于1)连接起来。在这种设计下,相对较大的k×k最大池有效地增加了主干特征的接收范围。在加入了改进版的SPP模块后,YOLOv3-608在MS-COCO目标检测任务中以0.5%的额外计算代价将AP50升级了2.7%。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%。在目标检测中常用的注意模块主要分为通道注意和点注意,这两种注意模型的代表分别是挤压和激发(SE)[29]和空间注意模块(SAM)[85]。虽然SE模块可以在ImageNet图像分类任务中以仅增加2%的计算量为代价提高ResNet50的功率1%top-1精度,但在GPU上,它通常会增加约10%的推理时间,因此更适合在移动设备中使用。但是对于SAM,它只需要支付0.1%的额外计算,并且它可以提高ResNet50 SE 0.5%在ImageNet图像分类任务中的top-1精度。最重要的是,它根本不影响GPU上的推理速度。
在特征集成中,早期的做法是使用skip连接[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]、ScaledExponential线性单元(SELU)[35]、Swish[59]、hard Swish[27]和Mish[55]等也被用来解决梯度消失问题。LReLU和PReLU的主要目的是解决输出小于零时ReLU的梯度为零的问题。对于ReLU6和硬开关,它们是专门为量化网络设计的。为了实现神经网络的自规范化,提出了一种SELU激活函数。值得注意的是Swish和Mish都是连续可微的激活函数。
在基于深度学习的目标检测中,常用的后处理方法是NMS,它可以过滤那些对同一目标预测不好的bbox,只保留响应较高的候选bbox。NMS试图改进的方法与优化目标函数的方法是一致的。NMS提出的原始方法不考虑上下文信息,因此采用Girshicketal。[19] 在R-CNN中增加分类可信度得分作为参考,根据可信度得分的顺序,贪婪的NMS按照从高到低的顺序进行。
对于SoftMs[1],它考虑了对象的遮挡可能导致贪婪的具有IoU分数的NMS的可信度下降的问题。DIoU NMS[99]开发者的思路是在软NMS的基础上,在BBox筛选过程中加入中心点距离的信息,值得一提的是,由于以上的后处理方法都没有直接涉及到采集到的图像特征,在后续的开发中不再需要后处理无锚法。
3. Methodology
其基本目标是神经网络在生产系统中的快速运行和并行计算的优化,而不是低计算量理论指标(BFLOP)。本文提出了两种实时神经网络方案:
•对于GPU,本文在卷积层中使用少量组(1-8):CSPResNeXt50/CSPDarknet53
•对于VPU-本文使用分组卷积,但本文不使用Squeeze-and-excitement(SE)块-具体来说,这包括以下模型:Ef ficientnet lite/MixNet[76]/GhostNet[21]/mobilenet3
3.1. Selection of architecture
本文的目标是找到输入网络分辨率、卷积层数、参数数(滤波器尺寸2*滤波器*信道/组)和层输出数(滤波器)之间的最佳平衡。例如,本文的大量研究表明,就ILSVRC2012(ImageNet)数据集上的对象分类而言,CSPResNext50比CSPDarknet53要好得多[10]。然而,相反地,CSPDarknet53在MS-COCO数据集上的检测对象的CSPResNext50 interms上要好于CSPResNext50[46]。
下一个目标是为增加接收场选择额外的块,并为不同的检测级别从不同的主干级别选择最佳的参数聚集方法:
例如,FPN、PAN、ASFF、BiFPN。对于检测来说,分类最佳的参考模型并不总是最优的。
与分类不同的是,检测要求如下:
•更高的输入网络尺寸(分辨率)-用于检测多个小尺寸物体
•更多层-用于更高的接收场,以覆盖输入网络的增大尺寸
•更多参数-使模型能够在单个图像中检测多个不同大小的对象
假设本文可以假设对于较大的接收野尺寸(卷积层的数量较大,为3×3)和较大数量的参数,应选择作为主干。表1显示了CSPResNeXt50、CSPDarknet53和Ef ficientnet B3的信息。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的体系结构。
在未来,本文计划大幅扩展检测的免费包(BoF)内容,理论上可以解决一些问题,提高检测的精度,并以实验的方式依次检查每个特征的影响。本文不使用跨GPU批处理规范化(CGBN或SyncBN)或昂贵的专用设备。这允许任何人在传统图形处理器(如GTX 1080Ti或RTX 2080Ti)上复制本文的最新成果。
3.2. Selection of BoF and BoS
为了改进目标检测训练,CNN通常使用以下方法:
•激活:ReLU、泄漏ReLU、参数ReLU、ReLU6、SELU、Swish或Mish
•边界框回归损失:MSE、IoU、GIoU、CIoU、DIoU
•数据增强:剪切、混合、剪切
•正则化方法:DropOut、DropPath[36]、space DropOut[79]或DropBlock
•按平均值和方差对网络激活进行规范化:批处理规范化(BN)[32]、跨GPU批处理规范化(CGBN或SyncBN)[93]、过滤器响应规范化(FRN)[70]或跨迭代批处理规范化(CBN)[89]
•跳过连接:剩余连接、加权剩余连接、多输入加权剩余连接或跨级部分连接(CSP) 至于训练激活功能,由于PReLU和SELU更难训练,并且ReLU6是专门为量化网络设计的,因此本文从候选列表中删除了上述激活功能。在重新规范化方法中,发表DropBlock的人详细比较了他们的方法和其他方法,他们的正则化方法赢得了很多。因此,本文毫不犹豫地选择DropBlock作为正则化方法。至于规范化方法的选择,由于本文关注的是一种只使用一个GPU的训练策略,所以不考虑syncBN。
3.3. Additional improvements
为了使所设计的检测更适合单GPU的训练,本文做了如下的额外设计和改进:
•本文介绍了一种新的数据增强拼接和自我对抗训练(SAT)方法
•本文在应用遗传算法时选择最佳超参数
•本文修改了一些现有的方法,使本文的设计适合于有效的训练和检测-修改的SAM、修改的PAN和跨小批量标准化(CmBN)马赛克代表了一种新的数据增强方法,混合了4幅训练图像。
因此,4种不同的背景是混合,而CutMix只混合2个输入图像。这允许检测正常上下文之外的对象。此外,批处理规范化从每一层上的4个不同图像计算激活统计信息。这大大减少了对大批量生产的需求。自对抗训练(SAT)也代表了一种新的数据增强技术,它分为两个前后阶段。在第一阶段,神经网络改变原始图像而不是网络权值。通过这种方式,神经网络对自身进行对抗性攻击,改变原始图像,从而产生图像上存在节点所需对象的欺骗。在第二阶段中,训练神经网络以正常方式检测该修改图像上的目标。
CmBN表示CBN修改版本,如图4所示,定义为跨小批量标准化(CmBN)。这只收集单个批次内小批量之间的统计数据。本文将SAM从空间注意修改为点注意,并替换PAN到连接的快捷连接,分别如图5和图6所示。
3.4. YOLOv4
在本节中,本文将详细介绍YOLOv4。
YOLOv4包括:
• Backbone: CSPDarknet53 [81]
• Neck: SPP [25], PAN [49]
• Head: YOLOv3 [63]
•主干:CSPDarknet53[81]
•颈部:SPP[25],PAN[49]
•头部:YOLOv3[63]
Yolov4用途:
•主干线免费包(BoF):CutMix和Mosaic数据增强、DropBlock正则化、类标签平滑
•主干网专用包(BO):误激活、跨阶段部分连接(CSP)、多输入加权剩余连接(MiWRC)
•检测的免费包(BoF):CIoU丢失,CmBN,DropBlock正则化,马赛克数据增强,自我对抗训练,消除网格敏感度,使用多个锚实现单一地面真理,cosineanAlingScheduler[52],最佳超参数,随机训练形状
•检测专用包(BoS):Mish激活、SPP块、SAM块、泛路径聚合块、DIoU NMS Experiments
4. Experiments
本文测试了不同训练改进技术对ImageNet(ILSVRC2012val)数据集分类精度的影响,然后测试了MS COCO(test dev 2017)数据集上检测的精度。
4.1. Experimental setup
在ImageNet图像分类实验中,默认的超参数如下:训练步长为8000000;批大小为128,最小批大小为32;采用多项式衰减学习率调度策略,初始学习率为0.1;预热步长为1000;动量和权重衰减分别设置为0.9和0.005。本文所有的BoS实验都使用与默认设置相同的超参数,在BoF实验中,本文添加了50%的额外训练步骤。在BoF实验中,本文验证了MixUp、CutMix、Mosaic、模糊数据增强和标签平滑正则化方法。在BoS实验中,本文比较了sofLReLU、Swish和Mish激活函数的效果。所有实验均采用a1080 Ti或2080ti GPU进行训练。
在MS-COCO目标检测实验中,默认超参数为:训练步长为500500;采用步长衰减学习速率调度策略,初始学习速率为0.01,在400000步和450000步分别乘以因子0.1;分别设置动量衰减和权重衰减分别为0.9和0.0005。所有架构都使用单个GPU执行64批的多尺度训练,而最小批大小为8或4取决于体系结构和GPU内存限制。除了使用遗传算法进行超参数搜索实验外,所有其他实验都使用默认设置。遗传算法利用YOLOv3 SPP进行带GIoU损失的训练,搜索300个时间段的最小val 5k集。采用搜索学习率0.00261、动量0.949、IoU阈值指定地面真值0.213、损失归一化器0.07进行遗传算法实验。
本文已经验证了大量的BoF,包括网格敏感度消除,马赛克数据增强,IoU阈值,遗传算法,类标签平滑,跨小批量规范化,自对抗训练,余弦退火调度,动态小批量大小,DropBlock,优化锚,不同种类的oulosses。本文还对各种BoS进行了实验,包括Mish、SPP、SAM、RFB、BiFPN和Gaussian YOLO[8]。对于所有的实验,本文只使用一个GPU进行训练,所以不使用syncBN等优化多个GPU的技术。
4.2. Influence of different features on Classifier training
首先,本文研究不同特征对分类训练的影响;具体来说,如图7所示,类标签平滑的影响,不同数据增强技术的影响,双边模糊、混合、剪切和镶嵌,以及不同激活的影响,如漏ReLU(默认)、Swish和Mish。
在本文的实验中,如表2所示,通过引入CutMix和Mosaic数据增强、类标签平滑和Mish激活等功能,分类精度得到了提高。因此,本文用于分级训练的BoF骨干(免费包)包括以下内容:CutMix和Mosaic数据增强和类标签平滑。此外,本文使用Mish激活作为补充选项,如表2和表3所示。
4.3. Influence of different features on Detector training
进一步的研究涉及不同的免费包(BoF检测)对检测训练精度的影响,如表4所示。本文通过研究在不影响FPS的情况下提高检测精度的不同特性,显著地扩展了BoF列表:
•S:消除网格敏感度——方程bx=σ(tx)+cx,by=σ(ty)+cy,其中cx和cy始终是整数,在YOLOv3中用于评估目标坐标,因此,接近cx或cx+1值的bx值需要极高的tx绝对值。本文通过将sigmoid乘以一个超过1.0的因子来解决这个问题,从而消除了物体无法检测到的网格效应。
•M:在训练期间使用4-图像拼接而不是单个图像进行拼接数据增强 •IT:IoU阈值-使用多个锚定一个地面真相IoU(真相,锚定)>IoU阈值
•GA:遗传算法-使用遗传算法在前10%时间段的网络训练期间选择最佳超参数
•LS:类标签平滑-使用类标签平滑进行sigmoid激活
•CBN: CmBN-使用跨小批量规范化来收集整个批次内的统计信息,而不是在单个小批量内收集统计信息
•CA:余弦退火调度器在正弦训练期间改变学习率
•DM:动态小批量-使用随机训练形状,在小分辨率训练期间自动增加小批量
•OA:使用用于512x512网络分辨率训练的时间轴优化传感器
•GIoU、CIoU、DIoU、MSE-使用不同的损失算法进行有界盒回归如表5所示,进一步的研究涉及不同的特种包(BoS检测)对检测训练精度的影响,包括PAN、RFB、SAM、高斯YOLO(G)和ASFF。在本文的实验中,当使用SPP、PAN和SAM时,检测获得最佳性能。
4.4. Influence of different backbones and pretrained weightings on Detector training
进一步研究不同主干模型对检测精度的影响,如表6所示。本文注意到,就检测精度而言,具有最佳分类精度的模型并不总是最佳的。
首先,尽管使用不同特征训练的CSPResNeXt50模型的分类精度高于CSPDarknet53模型,但CSPDarknet53模型在目标检测方面显示出更高的精度。
其次,使用BoF和Mish进行CSPResNeXt50分类训练可以提高分类精度,但进一步应用这些预先训练的权重进行检测训练会降低检测精度。然而,使用BoF和Mish进行CSPDarknet53分类训练可提高分类和使用该分类预先训练权重的检测的准确性。结果表明,主干CSPDarknet53比CSPResNeXt50更适合于检测。 本文观察到,CSPDarknet53模型通过各种改进显示出更大的能力来提高检测的精度。
4.5. Influence of different mini-batchsize on Detector training
最后,本文分析了使用不同小批量训练的模型得到的结果,结果如表7所示。从表7的结果可以看出,在加入BoF和BoS训练策略后,小批量对检测的性能几乎没有影响。结果表明,BoF和BoS引入后,不再需要使用昂贵的gpu进行训练。换句话说,任何人都只能使用传统的GPU来训练优秀的检测。
5. Results
图8显示了与其他最先进的目标检测的比较结果。本文的YOLOv4位于P-are最优曲线上,在速度和精度方面都优于最快和最精确的检测。由于不同的方法使用不同体系结构的gpu进行推理时间验证,本文在Maxwell、Pascal和Volta体系结构的常用gpu上操作YOLOv4,并将它们与其他最新方法进行比较。表8列出了使用Maxwell GPU的帧速率比较结果,它可以是GTXTitanX(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. Conclusions
本文提供最先进的检测,比所有可用的替代检测更快(FPS)和更精确(MS COCO AP50…95和AP50)。所述检测可在8-16GB-VRAM的传统GPU上训练和使用,这使得其广泛应用成为可能。一级锚定检测的最初概念已经证明了它的可行性。本文已经验证了大量的特征,并选择使用这些特征来提高分类和检测的精度。这些特性可以作为未来研究和开发的最佳实践。
参考文献
略
YOLOv4全文阅读(全文中文翻译)的更多相关文章
- dedecms5.7文章实现阅读全文功能二次开发
阅读全文功能其实在很多的流行站点都有的,比如网易,新浪等,随着文章内容的增加,当一个页面有多个分页的时候,就会显示出这个“在本页阅读全文”的链接,点击这个链接之后,出现的,将是这篇文章以没有分页出现的 ...
- 吐槽CSDN--想钱想疯了--阅读全文需要关闭广告屏蔽
吐槽CSDN 想钱想疯了–阅读全文需要关闭广告屏蔽 近来csdn开始主推博客皮肤升级,说白了就是有一套新的盈利模式,具体怎么操作呢: 1. 采用信息流方式,博客内容变成类似朋友圈.微博.知乎那样的信息 ...
- CSDN不登录阅读全文(最新更新
CSDN真的烦...然而没卵用 用stylus加两行css就行了: .article_content{height:auto!important} .hide-article-box{display: ...
- vue实现文章内容过长点击阅读全文功能
直接上代码: html: <div class="bodyFont clearfloat" id="bodyFont" ref="bodyFon ...
- Hexo-设置阅读全文
最近使用Hexo搭建了自己的博客,并且使用了简洁但是强大的NexT主题.这里介绍一下NexT主题下设置在首页显示一篇文章的简介,在简介后面提供一个链接阅读全文来进入文章的详情页.效果请看 我的小窝 在 ...
- 展开阅读全文 js 爬虫操作
from selenium import webdriver import time import random from bs4 import * browser = webdriver.Chrom ...
- Next.js v4.1.4 文档中文翻译【转载】
最近想稍稍看下 React的 SSR框架 Next.js,因为不想看二手资料, 所以自己跑到 Github上看,Next.js的文档是英文的,看倒是大概也能看得懂, 但有些地方不太确定,而且英文看着毕 ...
- 【转】关于HTTP中文翻译的讨论
http://www.ituring.com.cn/article/1817 讨论参与者共16位: 图灵谢工 杨博 陈睿杰 贾洪峰 李锟 丁雪丰 郭义 梁涛 吴玺喆 邓聪 胡金埔 臧秀涛 张伸 图钉派 ...
- [中文翻译] ASP.NET 5 简介(Introducing ASP.NET 5,原作ScottGu 2015/2/23)
本文出处 [中文翻译] ASP.NET 5 简介(Introducing ASP.NET 5,原作ScottGu 2015/2/23) 这是我的文章备份 http://www.dotblogs.co ...
随机推荐
- 10- JMeter5.1.1 工具快速入门
什么是JMeter JMeter是Apache组织开发的开源软件,由Java语言实现. 主要用于软件系统性能测试,他最初被设计用于web测试,后来被扩展到其他领域. Jmeter特点 http://w ...
- 文档翻译第001篇:Process Monitor帮助文档(Part 1)
[译者注] Process Monitor是一款非常著名的系统进程监视软件.总体来说,Process Monitor相当于Filemon+Regmon,其中的Filemon专门用来监视系统中所有文件的 ...
- Python脚本扫描给定网段的MAC地址表(scapy或 python-nmap)
目录 用scapy模块写 用 python-nmap 模块写 python3.7 windows环境 以下两个都可以扫描指定主机或者指定网段的 IP 对应的 MAC 地址,然后保存到 csv 文件中 ...
- XCTF-fakebook
fakebook stm的fakebook,乍一看还以为是facebook,果然fake 看题 有登录和注册两个功能点 看了下robots.txt,发现有备份文件 果断下载,内容如下 这里的blog在 ...
- JAVA连接、操作数据库的DBHelper
工厂模式的DBHelper 1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.Prepa ...
- Python数模笔记-Sklearn(4)线性回归
1.什么是线性回归? 回归分析(Regression analysis)是一种统计分析方法,研究自变量和因变量之间的定量关系.回归分析不仅包括建立数学模型并估计模型参数,检验数学模型的可信度,也包括利 ...
- C异常处理和C++异常处理的对比
每一种编译器实现异常处理的方式会有所不同,但是都是基于Windows的SEH异常处理.这里以MSC编译器为例. C异常处理 #include <Windows.h> int main(in ...
- mitogen附带文件到远程主机
#!/usr/bin/env python # import mitogen.master import mitogen.select import subprocess import logging ...
- BogoMips 和cpu主频无关 不等于cpu频率
http://tinylab.org/explore-linux-bogomips/ 内核探索:Linux BogoMips 探秘 Tao HongLiang 创作于 2015/05/12 打赏 By ...
- Rust trait
Rust trait Rust中的trait类似于Java中的接口,定义了一组可以被类型选择实现的"契约"或共享行为,. 特征定义: trait Playable{ fn play ...