论文翻译:Scaled-YOLOv4: Scaling Cross Stage Partial Network

大体翻译了下,个别地方原文看的我就迷糊,为了保持原样,就保留了。

摘要

____我们展示了基于CSP方法的YOLOv4对象检测神经网络,保持最佳速度和准确性同时,可向上下缩放,且适用于小型和大型网络。我们提出了一种网络缩放方法,该方法不仅可以修改深度、宽度、分辨率,还可以修改网络的结构。 YOLOv4-large模型达到了SOTA结果:在Tesla V100上,15 FPS,MS COCO数据集达到55.4%的AP(73.3%AP50),当增加测试时间,YOLOv4-large的模型达到了55.8% AP(73.2 AP50)。 据我们所知,这是目前所有已发表工作中COCO数据集的最高准确性。YOLOv4-tiny模型在RTX 2080Ti上以443FPS的速度达到22.0%的AP(42.0%AP50),而通过使用TensorRT,batch siz = 4和FP16精度,YOLOv4-tiny的模型达到1774 FPS。

1、介绍

____基于深度学习的对象检测技术在我们的日常生活中有许多应用,例如,医学图像分析、自动驾驶车辆、业务分析和面部识别。以上应用程序所需的计算设施可能是云计算设施,通用GPU,IoT群集或单个嵌入式设备。为了设计有效的物体检测器,模型缩放技术非常重要,因为它可以使物体检测器在各种类型的设备上实现高精度和实时推断。
____最常见的模型缩放技术是更改骨干网的深度(CNN中卷积层的数量)和宽度(卷积层中卷积滤波器的数量),然后训练适用于不同设备的CNN。例如,在ResNet [10]系列中,ResNet-152和ResNet-101通常用于云服务器GPU,ResNet-50和ResNet-34通常用于个人电脑GPU,ResNet-18和ResNet-10可用于低端嵌入式系统。在[2]中,Cai等人尝试开发一种技术,使得网络只需训练一次就可以适用于各种设备。他们使用去耦训练、搜索和知识蒸馏等技术训练几个子网,以便整个网络和子网都能够处理目标任务。Tan等人 [30]提出使用NAS技术执行复合缩放,包括在EfficientNet-B0上处理宽度、深度和分辨率。他们使用此初始网络搜索给定计算量的最佳CNN架构,并将其设置为EfficientNet-B1,然后使用线性放大技术获得诸如EfficientNet-B2到EfficientNet-B7的体系结构。 Radosavovic等人[23]总结并添加了来自庞大参数搜索空间AnyNet的约束,然后设计了RegNet。在RegNet中,他们发现CNN的最佳深度约为60。他们还发现,当瓶颈比率设置为1且跨阶段的宽度增加率设置为2.5时,将获得最佳性能。另外,最近有专门针对对象检测而提出的NAS和模型缩放方法,例如SpineNet [5]和EfficientDet [31]。
____通过分析最新的对象检测器[1、3、5、22、31、36、40],我们发现YOLOv4的骨干CSPDarknet53[1],打得过几乎所有所有结构搜索技术得到的最佳架构。 CSPDarknet53的深度、瓶颈比率、阶段之间的宽度增长比率分别为65、1和2。因此,我们基于YOLOv4的模型开发了缩放技术,并提出了可缩放的YOLOv4。如图1所示,所提出的scale-YOLOv4具有出色的性能。

在这里插入图片描述
____scaled-YOLOv4的设计过程如下。首先,我们重新设计YOLOv4并提出YOLOv4-CSP,然后基于YOLOv4-CSP我们开发了scale-YOLOv4。在提出的scaled-YOLOv4中,我们讨论了线性缩放模型的上限和下限,并分别分析了在小模型和大模型缩放中需要注意的问题。因此,我们能够系统地开发YOLOv4-large和YOLOv4-tiny模型。Scaled-YOLOv4可以在速度和准确性之间取得最佳平衡,并且能够对15 fps,30fps和60fps图像以及嵌入式系统执行实时对象检测。
____我们总结了本文的贡献:(1)为小模型设计了一种强大的模型缩放方法,可以系统地平衡浅层CNN的计算成本和存储带宽;(2)设计一个简单而有效的缩放大型物体检测器的策略;(3)分析所有模型比例因子之间的关系,然后基于最有效的组进行模型比例;(4)实验证实,FPN结构是一劳永逸的结构;(5)利用上述方法开发了YOLOv4-tiny和YOLOv4-large。

2、相关工作

2.1 实时物体检测

_对象检测器主要分为一阶段对象检测器[24、25、26、18、16、20]和两阶段对象检测器[9、8、27]。一阶段目标检测器仅需进行一次CNN操作即可获得输出。 而两阶段目标检测器,通常会将从第一阶段CNN获得的高分区域proposals提供给第二阶段CNN进行最终预测。一阶段目标检测器和二阶段目标检测器的推理时间可以表示为T_one=T(1^st )和T_two=T(1^st ) 〖+mT〗(2^nd ),其中m是置信度超过预置的proposals数量。换句话说,一阶段目标检测器所需的推理时间是恒定的,而二阶段目标检测器所需的推理时间不是固定的。因此,如果我们需要实时对象检测器,则它们几乎必然是一阶段对象检测器。当今流行的一阶段目标检测器主要有两种:基于锚点的[26,16]和不基于锚点的[6,12,13,32]。在所有无锚点方法中,CenterNet [42]非常受欢迎,因为它不需要复杂的后处理,例如非极大值抑制(NMS)。 目前,更准确的实时一阶段目标检测器是基于锚的EfficientDet[31],YOLOv4[1]和PP-YOLO[19]。 在本文中,我们基于YOLOv4[1]开发了模型缩放方法。

2.2 模型缩放

____传统的模型缩放方法是更改模型的深度,即添加更多的卷积层。例如,Simonyan等人设计的VGGNet[28]在不同阶段堆叠其他卷积层,其同样使用此概念设计了VGG-11,VGG-13,VGG-16和VGG-19结构。后续方法通常遵循相同的方法进行模型缩放。对于He等人提出的ResNet[10],深度缩放可以构建非常深的网络,例如ResNet-50,ResNet-101和ResNet-152。后来,Zagoruyko等人[39]考虑了网络的宽度,他们改变了卷积层内核的数量以实现缩放。因此,他们设计了宽版ResNet(WRN),同时保持了相同的准确率。尽管WRN比ResNet具有更多的参数,但推理速度要快得多。随后的DenseNet [11]和ResNeXt [37]也设计了考虑深度和宽度的复合缩放版本。对于图像金字塔推理,这是在运行时执行增强的一种常见方法。它对输入图像并进行各种不同的分辨率缩放,然后将这些不同的金字塔组合输入到经过训练的CNN中。最后,该网络将整合多组输出作为最终结果。Redmon等[26]使用以上概念来执行输入图像尺寸缩放。他们使用更高的输入图像分辨率对经过培训的Darknet53进行微调,执行此步骤的目的是为了获得更高的准确性。
____近年来,网络构架搜索(NAS)相关研究得到了大力发展,NAS-FPN [7]已经可寻找特征金字塔的组合路径。我们可以将NAS-FPN视为一种主要在阶段级别执行的模型缩放技术。至于EfficientNet[30],它使用基于深度、宽度和输入大小的复合缩放搜索。EfficientDet[31]的主要设计思想是分解对象检测器不同功能的模块,然后对图像大小、宽度、#BiFPN层和#box/class层执行缩放。使用NAS概念的另一种设计是SpineNet[5],它主要针对用于鱼形目标检测器的网络架构搜索。该设计概念最终可以产生成比例排列的结构。另一种利用NAS设计的网络是RegNet[23],它主要固定阶段数和输入分辨率,并将每个阶段的深度、宽度、瓶颈比率和组宽度等所有参数集成到深度、初始宽度、斜率量化、瓶颈中比例和组宽度。最后,他们使用这六个参数执行复合模型缩放搜索。上面的方法都是很好的工作,但是很少分析不同参数之间的关系。在本文中,我们将尝试根据对象检测的设计要求寻找一种协同复合缩放的方法。

3、模型缩放准则

____在对提出的目标检测器执行模型缩放后,下一步是处理将改变的定量参数,包括定性参量数量,这些参数包括模型推断时间,平均精度等。定性参数将根据所使用的设备或数据库而具有不同的增益效果。我们将在3.1中分析和设计定量因素。对于3.2和3.3,我们将分别设计在低端设备和高端GPU上运行的微小对象检测器有关的定性因素。

3.1 模型缩放的基本准则

____在设计有效的模型缩放方法时,我们的主要原则是,当缩放比例增大/减小时,要增加/减小的定量成本越低/越高,效果越好。在本节中,我们将展示和分析多种通用的CNN模型,并尝试了解对图像大小、层数和通道数变化时其定量成本。我们选择的CNN是ResNet,ResNext和Darknet。
对于具有b个基层通道的k层CNN,ResNet层的计算为k * {conv 1×1,b / 4 – conv 3×3,b / 4 – conv 1×1,b}, ResNext层为k * {conv 1×1,b / 2 – gconv 3×3/32,b / 2 – conv 1×1,b}。对于Darknet层,计算量为k * {conv 1×1,b / 2 – conv 3×3,b}。令可用于调整图像大小、层数和通道数的缩放因子分别为α、β和γ。当这些比例因子变化时,表1总结了FLOPs的相应变化。

在这里插入图片描述
____从表1可以看出,缩放尺寸、深度和宽度导致计算成本的增加,分别为平方,线性和平方增加。
____Wangetal提出的CSPNet[33]可以应用于各种CNN架构,同时减少参数和计算量。 此外,它还提高了准确性并减少了推理时间。我们将其应用于ResNet,ResNeXt和Darknet,并观察计算量的变化,如表2所示。
在这里插入图片描述
_____根据表2中的图表,我们观察到将上述CNN转换为CSPNet之后,新架构可以有效地将ResNet,ResNeXt和Darknet上的计算量(FLOPs)分别减少23.5%,46.7%和50.0%。因此,我们将CSP化模型为执行模型缩放的最佳模型。

3.2 缩放低端设备的微型模型

____对于低端设备,所设计模型的推理速度不仅受计算量和模型大小的影响,而且更重要的是,必须考虑外围硬件资源的限制。 因此,在执行微小模型缩放时,我们还必须考虑诸如内存带宽,内存访问成本(MAC)和DRAM流量之类的因素。 为了考虑到以上因素,我们的设计必须遵守以下原则:
使计算顺序小于O(whkb2):轻量级模型与大型模型的不同之处在于,它们的参数利用率必须更高,以便通过少量计算即可达到所需的精度。当执行模型缩放时,我们希望计算的顺序可以尽可能的低。在表3中,我们分析了具有有效参数利用率的网络,例如DenseNet和OSANet的计算量。

在这里插入图片描述
____对于一般的CNN,表3中列出的g,b和k之间的关系为k << g <b。 因此,DenseNet的计算复杂度顺序为O(whgbk),而OSANet的计算复杂度顺序为O(max(whbg,whkg2))。以上两者的计算复杂度顺序小于ResNet系列的O(whkb2)。 因此,我们借助OSANet设计了较小的模型,该模型具有较小的计算复杂度。
最小化/平衡特征图的大小:为了在计算速度方面获得最佳折衷,我们提出了一个新概念,即在CSPOSANet的计算块之间执行梯度截断。如果我们将原始CSPNet设计应用于DenseNet或ResNet体系结构,因为这两种体系结构的第j层输出是第1层到第(j−1)层输出的集成,因此我们必须将整个计算块视为整体。因为OSANet的计算块属于PlainNet体系结构,所以从计算块的任何层制作CSPNet都可以实现梯度截断的效果。我们使用此功能来重新规划基础层的b通道和计算块生成的kg通道,并将它们分成具有相同通道数量的两条路径,如表4所示。
在这里插入图片描述
____当通道数为b+kg时,如果要将这些通道分为两条路径,则最好的划分方法是将其分为两个相等的部分,即(b+kg)/2。 当我们考虑硬件的带宽τ时,如果不考虑软件优化,则最佳值为ceil((b + kg)/2τ)×τ。我们设计的CSPOSANet可以动态调整通道分配。
保持卷积前后通道数量相同:为了评估低端设备的计算成本,我们还必须考虑功耗,影响功耗的最大因素是内存访问成本(MAC)。通常,用于卷积运算的MAC计算方法如下:

                                        MAC = hw(Cin + Cout) + KCinCout

____其中,h、w、Cin、Cout、K分别表示特征图的高、宽、输入输出通道数和卷积核大小。通过计算几何不等式,可以得出当Cin = Cout时的MAC最小。
最小化卷积输入/输出(CIO):CIO是可以衡量DRAM IO状态的指示器。 表5列出了OSA、CSP和我们设计的CSPOSANet的CIO。
当kg> b/2时,所设计的CSPOSANet可以得到最好的CIO。
在这里插入图片描述

3.3 为高端GPU缩放大规模模型

____由于我们希望在放大CNN模型后提高准确性并保持实时推理速度,因此在执行复合缩放时,必须在对象检测器的许多缩放因子之间找到最佳组合。通常,我们可以调整对象检测器的输入、主干和颈部的比例因子。可以调整的潜在缩放比例汇总于表6。
在这里插入图片描述
____图像分类和对象检测之间的最大区别在于,前者仅需要识别图像中最大成分的类别,而后者则需要预测图像中每个对象的位置和大小。在一阶段对象检测器中,使用与每个位置相对应的特征向量预测该位置上对象的类别和大小。更好地预测对象大小的能力基本上取决于特征向量的感受野。在CNN架构中,与感受野最直接相关的是阶段,而特征金字塔网络(FPN)架构告诉我们,更高的阶段更适合于预测大物体。在表7中,我们说明了感受野和几个参数之间的关系。
在这里插入图片描述
____从表7可以明显看出,宽度缩放可以独立进行。 当输入图像的大小增加时,如果要对大物体具有更好的预测效果,则他/她必须增加网络的深度或级数。在表7列出的参数中,{sizeinput,#stage}的复合结果影响最大。 因此,在进行放大时,我们首先对大小输入#stage进行复合缩放,然后根据实时要求,分别对深度和宽度进行缩放。

4、Scaled-YOLOv4

____在本节中,我们将重点放在为通用GPU,低端GPU和高端GPU设计缩放的YOLOv4上。

4.1 YOLOv4 CSP化

____YOLOv4设计用于在通用GPU上进行实时对象检测。在本小节中,我们将YOLOv4重新设计为YOLOv4-CSP,以获得最佳的速度/精度权衡。
____Backbone: 在CSPDarknet53的设计中,跨阶段处理的下采样卷积计算不包含在残差块中。因此,我们可以推断出每个CSPDarknet阶段的计算量为whb2(9/4 + 3/4 + 5k / 2)。 根据上面推导的公式,我们知道CSPDarknet阶段仅在满足k>1时才会比Darknet阶段具有更好的计算优势。CSPDarknet53中每个阶段拥有的残差层数分别为1-2-8-8-4。 为了获得更好的速度/精度平衡,我们将第一个CSP阶段转换为原始的Darknet残差层。

在这里插入图片描述
Neck:为了有效地减少计算量,我们对YOLOv4中的PAN架构进行了CSP化。 PAN体系结构的计算列表如图2(a)所示。它主要集中来自不同特征金字塔的特征,然后穿过两组反向的Darknet残差层,没有快捷连接。CSP化之后,新计算列表的体系结构如图2(b)所示。此新更新有效地减少了40%的计算量。
SPP: SPP模块最初插入到neck的第一个计算列表组的中间位置。因此,我们也将SPP模块插入CSPPAN的第一个计算列表组的中间位置。

4.2 YOLOv4-tiny

在这里插入图片描述
____YOLOv4-tiny专为低端GPU设备而设计,其设计将遵循3.2节中提到的原则。
我们将使用具有PCB架构的CSPOSANet来构成YOLOv4的主干。将g=b/2设置为增长率,最后使其增长到b/2+kg=2b。通过计算,我们得出k=3,其架构如图3所示。关于每个阶段和颈部部分的通道数,我们遵循YOLOv3-tiny的设计。

4.3 YOLOv4-large

____YOLOv4-large是专为云GPU设计的,其主要目的是实现物体检测的高精度。 我们设计了完整的CSP模型YOLOv4-P5,并将其扩展到YOLOv4-P6和YOLOv4-P7。 图4显示了YOLOv4-P5,YOLOv4-P6和YOLOv4-P7的结构。我们旨在对sizeinput 、#stage执行复合缩放。我们将每个阶段的深度缩放设置为2dsi,将ds设置为[1、3、15、15、7、7、7]。 最后,我们进一步使用推理时间作为约束条件来执行额外的宽度缩放。我们的实验表明,当宽度比例因子等于1, YOLOv4-P6可以对视频达到实时30fps性能。对于YOLOv4-P7,当宽度比例因子等于1.25时,它可以达到15fps视频的实时性能。
在这里插入图片描述

5、实验

____我们使用MSCOCO 2017对象检测数据集来验证提出的scaled-YOLOv4。我们不使用ImageNet预训练模型,并且所有scaled-YOLOv4模型都是从头开始训练的,采用的工具是SGD优化器。训练YOLOv4-tiny的时间为600 epoch,而训练YOLOv4-CSP的时间为300 epoch。 对于YOLOv4-large,我们先执行300个epoch,然后再使用更强大的数据增强方法训练150个epoch。对于超参数的拉格朗日乘数,例如学习率的锚点、不同数据扩充方法的程度,我们使用k均值和遗传算法来确定。 附录中详细介绍了与超参数有关的所有细节。

5.1 CSP模型的消融研究

____在本小节中,我们将对不同的模型进行CSP转换,并分析CSP转换对参数数量、计算量、吞吐量和平均精度的影响。我们使用Darknet53(D53)作为骨干,并选择带有SPP的FPN(FPNSPP)和带有SPP的PAN(PANSPP)作为颈部来设计消融研究。在表8中,我们列出了在CSP调整不同DNN模型后的APval结果。我们分别使用LeakyReLU(Leaky)和Mish激活函数来比较所使用的参数、计算和吞吐量。实验全部在COCO minval数据集上进行,所得AP示于表8的最后一列。

在这里插入图片描述
____从表8中列出的数据可以看出,CSP化后的模型参数和计算量大大减少了32%,并提高了Batch8的吞吐量和AP。如果要保持相同的帧速率,则可以在CSP转换后为模型添加更多层或更多高级激活功能。从表8所示的数据中,我们可以看到CD53s-CFPNSPP-Mish和CD53s-CPANSPP-Leaky与D53-FPNSPP-Leaky具有相同的Batch8吞吐量,但它们在较低的计算资源基础上,分别提高了1%和1.6%AP。从上面的改进数据中,我们可以看到CSP带来的巨大优势。 因此,我们决定使用CD53s-CPANSPP-Mish用作YOLOv4-CSP的主干,它在表8中获得最高的AP。

5.2 YOLOv4-tiny模型的消融研究

____在这一小节中,我们设计了一个实验,以显示将CSPNet与计算模块中的部分函数一起使用的灵活性如何。我们还与CSP-Darknet53进行了比较,在CSP-Darknet53中,我们对宽度和深度进行了线性缩减,结果示于表9。
在这里插入图片描述
____从表9所示的数据中,我们可以看到,设计的PCB技术可以使模型更加灵活,因为可以根据实际需要调整设计。根据以上结果,我们还证实了线性缩小确实有其局限性。显然,在有限的工作条件下,tinyCD53的残差添加成为推理速度的瓶颈,因为在相同的计算量下,它的帧速率远低于COSA体系结构。同时,我们也看到COSA可以获得更高的AP。因此,我们最终选择了在实验中获得最佳速度/精度折衷的COSA-2x2x作为YOLOv4-tiny架构。

5.3 YOLOv4-large模型的消融研究

____在表10中,我们列出了YOLOv4模型在从头开始和微调训练中获得的AP。
在这里插入图片描述

5.4 物体检测的Scaled-YOLOv4

____我们与其他实时对象检测器进行了比较,结果如表11所示。在[AP,AP50,AP75,APS,APM,APL]项目中以粗体标出的值表明该模型在相应的检测器中表现最佳。我们可以看到,所有Scaled-YOLOv4模型,包括YOLOv4-CSP,YOLOv4-P5,YOLOv4-P6,YOLOv4-P7,在所有指标上都是帕累托最优的。当我们将YOLOv4-CSP与相同精度EfficientDet-D3进行比较时(47.5%对47.5%),推理速度是1.9倍。 当将YOLOv4-P5与相同精度的EfficientDet-D5进行比较(51.4%对51.5%)时,推理速度是2.9倍。 这种情况类似于YOLOv4-P6与EfficientDet-D7(54.3%对53.7%)和YOLOv4-P7与EfficientDet-D7x(55.4%对55.1%)之间的比较。 在两种情况下,YOLOv4-P6和YOLOv4-P7的推断速度分别快3.7倍和2.3倍。 所有缩放后的YOLOv4模型都达到了SOTA水平。
在这里插入图片描述
____表12中显示了YOLOv4-large模型的测试时间增强(TTA)实验的结果。YOLOv4-P5,YOLOv4-P6和YOLOv4-P7应用TTA的AP分别提高了1.1%,0.6%和0.4%。
____然后,我们将YOLOv4-tiny的性能与其他微型物体检测器的性能进行了比较,结果如表13所示。显然,与其他微型模型相比,YOLOv4-tiny的性能最佳。
在这里插入图片描述
____最后,我们将YOLOv4-tiny放在不同的嵌入式GPU上进行测试,包括Xavier AGX,Xavier NX,Jet-son TX2和Jetson NANO。我们还使用TensorRT FP32(如果支持FP16)进行测试。表14列出了通过不同模型获得的所有帧率。很明显,无论使用哪种设备,YOLOv4-tiny都可以实现实时性能。如果我们采用FP16和batch 4来测试Xavier AGX和Xavier NX,则帧速率可以分别达到380fps和199fps。 另外,如果使用TensorRT FP16在通用GPU RTX 2080ti上运行YOLOv4-tiny,则当batch大小分别等于1和4时,相应的帧速率可以达到773fps和1774fps,这是非常快的。
在这里插入图片描述

5.5 Scaled-YOLOv4作为一次性模型

____在本小节中,我们设计实验以表明类似FPN的体系结构是“一劳永逸”的模型。在这里,我们删除了YOLOv4-P7的top-down路径和检测分支的某些阶段。YOLOv4-P7\P7和YOLOv4-P7\P7\P6代表已从经过训练的YOLOv4-P7中移除了{P7}和{P7,P6}阶段的模型。图5显示了修剪后的模型与具有不同输入分辨率的原始YOLOv4-P7之间的AP差异。
在这里插入图片描述
____我们可以发现YOLOv4-P7在高分辨率下具有最佳AP,而YOLOv4-P7\P7和YOLOv4-P7\P7\P6在中分辨率和低分辨率下分别具有最佳AP。这意味着我们可以使用类似FPN的模型的子网来很好地执行对象检测任务。此外,我们可以对模型架构和对象检测器的输入大小进行复合缩减,以获得最佳性能。

6、结论

____我们展示了基于CSP方法的YOLOv4对象检测神经网络,可以上下扩展,并且适用于小型和大型网络。对于YOLOv4-large模型,我们在测试开发COCO数据集上实现了最高准确度55.8%AP。 使用TensorRT-FP16在RTX 2080Ti上为小型型号YOLOv4-tiny提供极高的1774 FPS速度,并为其他YOLOv4型号提供最佳速度和精度。

7、致谢

____作者要感谢美国国家高性能计算中心(NCHC)提供的计算和存储资源。大部分代码是从https://github.com/AlexeyAB、https://github.com/WongKinYiu和https://github.com/glenn-jocher借来的。感谢他们的精彩工作。

参考文献:略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值