Press "Enter" to skip to content

YOLO系列目标检测算法-Scaled-YOLOv4

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

YOLO系列目标检测算法目录

 

 

    1. YOLO系列目标检测算法总结对比

 

    1. YOLOv1

 

    1. YOLOv2

 

    1. YOLOv3

 

    1. YOLOv4

Scaled-YOLOv4

文章链接
YOLOv5

文章链接
YOLOv6

文章链接
YOLOv7

文章链接

 

本文总结:

 

 

    1. 提出一种网络缩放方法,使得基于CSP的YOLOv4可以上下伸缩,以适用于大型/小型网络;

 

    1. 将CSP应用到各式CNN中,可以减少参数和计算量,提高准确性,减少推理时间,因此CSP化了Backbone、neck和SPP;

 

    1. 分别分析了对于低端设备和高端设备对模型缩放的研究;

 

    1. 对于小型模型,限制计算复杂度小于O(whkb^2),选择使用OSANet,并CSP化,得到CSPOSANet;最小化/平衡特征图的大小,在CSPOSANet的计算块之间执行梯度截断,并将它们分割为通道数相等的两条路径;当Cin=Cout时的内存访问成本MAC最小,所以卷积前后保持相同的通道数;

 

    1. 对于大型模型,能更好地预测物体大小的能力基本上取决于特征向量的感受野,与感受野最直接相关的是stage,分析多个因素对感受野的影响后得出,{ s i z e i n p u t size^{input} s i z e in p u t ,#stage}的组合效果最好。因此,在执行缩放时,首先对 s i z e i n p u t size^{input} s i z e in p u t 、#stage执行复合缩放,然后根据实时要求,分别对深度和宽度执行缩放;将一个完全CSP化的YOLOv4-P5,通过缩放,并将其扩展到YOLOv4-P6和YOLOv4-P7;

 

 

深度学习知识点总结

 

专栏链接:

https://blog.csdn.net/qq_39707285/article/details/124005405

此专栏主要总结深度学习中的知识点,从各大数据集比赛开始,介绍历年冠军算法;同时总结深度学习中重要的知识点,包括损失函数、优化器、各种经典算法、各种算法的优化策略Bag of Freebies (BoF)等。

 

本章目录

6. YOLO系列目标检测算法-Scaled-YOLOv4

6. YOLO系列目标检测算法-Scaled-YOLOv4

 

6.1 简介

 

本文研究表明, 基于CSP方法的YOLOv4 目标检测神经网络可以上下伸缩,适用于小型和大型网络,同时保持最佳速度和精度。本文提出了一种 网络缩放方法 ,不仅仅是修改网络的 深度、宽度、分辨率 ,还修改 网络结构 。

 

神经网络算法的计算设备可能是云计算设备、通用GPU、物联网集群或单个嵌入式设备。为了设计有效的目标检测器,模型缩放技术是非常重要的,因为它可以使目标检测器对各种类型的设备实现高精度和实时推理。

 

最常见的模型缩放技术是改变Backbone的深度(CNN中卷积层的数量)和宽度(卷积层中卷积滤波器的数量),然后训练适合不同设备的CNN。 EfficientNet-B0中使用NAS 技术执行复合缩放,包括宽度、深度和分辨率的处理,他们使用这个初始网络,并限定计算量,开始搜索最佳CNN的网络结构,并将其设置为EfficientNet-B1,然后使用线性放大技术获得EfficientNetB2-EfficitentNet-B7的体系结构。

 

RegNet中总结并添加了来自广阔参数搜索空间AnyNet的约束,他们发现CNN的最佳深度约为60,还发现当瓶颈比设置为1,cross-stage宽度增加率设置为2.5时,会获得最佳性能。

 

其他多种轻量级神经网络算法详见系列文章《轻量级神经网络算法》。

 

通过对各种目标检测算法的分析后发现,作为YOLOv4的Backbone的 CSPDarknet53 几乎与通过网络架构搜索技术获得的所有优化过的架构特征相匹配。CSPDarknet53的深度、瓶颈比、stage间宽度增长率分别为65、1和2。因此, 本文基于YOLOv4开发了 模型缩放技术 ,并提出了 scaled-YOLOv 4 。如图1所示,提出的的scaled-YOLOv4具有出色的性能。

 

scaled-YOLOv4的设计过程如下。首先,重新设计了YOLOv4并提出了YOLOv4 CSP,然后基于YOLOv 4 CSP开发了scaled-YOLOv4。在提出的scaled-YOLOv4中,讨论了线性扩大/缩小模型的上下界,并分别分析了小模型和大模型缩放时需要注意的问题。因此,能够系统地开发YOLOv4大型和YOLOv小型模型。

 

本文主要贡献总结如下:

 

(1)针对小模型设计了一种强大的模型缩放方法,可以系统地平衡浅层CNN的计算开销和存储带宽;

 

(2)设计一种简单而有效的策略来扩大大型目标探测器;

 

(3)分析所有模型缩放因子之间的关系,然后基于最有利的组划分执行模型缩放;

 

利用上述方法开发了YOLOv4-tiny和YOLOv4-large。

 

6.2 模型缩放原理

 

在对目标检测器执行模型缩放后,下一步是处理将发生变化的定量因素,包括带有定性因素的参数数量。这些因素包括模型推理时间、平均精度等。定性因素将根据所使用的设备或数据库产生不同的增益效应。将在第1小节中分析和设计定量因素。在第2、3小节中,将分别设计在低端设备和高端GPU上的目标检测器相关的定性因素。

 

6.2.1 模型缩放的一般原理

 

在设计有效的模型缩放方法时, 主要原则是,当缩放比例增大/减小时,我们希望增加/减少的量化成本越低/越高,效果越好。

 

在本节中,将展示和分析各种通用CNN模型,并试图了解它们在1)图像大小、2)层数和3)通道数变化时的量化成本。选择的CNN有ResNet、ResNext和Darknet。

 

对于具有b个base layer通道的k层CNN,

 

ResNet layer的计算为:k*[conv(1×1,b/4)] -> conv(3×3,b/4) -> conv(1×1,b)];

 

ResNeXt layer的计算为:k*[conv(1×1,b/2) -> gconv(3×3/32,b/2) -> conv(1×1,b)];

 

Darknet layer的计算为:k*[conv(1×1,b/2) -> conv(3×3,b)]。

 

分别用 α 、 β 和 γ 表示可用于 调整图像大小、层数和通道数 的缩放因子,当这些比例因子变化时,表1总结了FLOPs的相应变化。

 

从表1可以看出,计算消耗缩放 尺寸和宽度呈平方倍增长,深度呈线性增长 。

 

CSPNet可以应用于各种CNN架构 ,同时减少了参数和计算量。此外,它还提高了准确性,减少了推理时间。将其应用于ResNet、ResNeXt和Darknet,并观察计算量的变化,如表2所示。CSP block的结构如上图所示。

 

从表2所示的数字中,可以看到,将上述CNN转换为CSPNet后,新架构可以 有效地将ResNet、ResNeXt和Darknet上的计算量(FLOP)分别减少23.5%、46.7%和50.0% 。因此,本文使用 CSP-ized化模型作为执行模型缩放的最佳模型。

 

6.2.2 低端设备可缩放的微型模型

 

对于低端设备,设计模型的推理速度不仅受计算量和模型大小的影响,更重要的是必须考虑外围硬件资源的限制。因此,在执行微小模型缩放时,还必须考虑内存带宽、内存访问成本(MAC)和DRAM流量等因素。为了考虑上述因素,设计必须符合以下原则:

 

 

使计算复杂度小于 O ( w h k b 2 ) O(whkb^{2}) O ( w hk b 2 )

 

轻量级模型与大型模型的不同之处在于,它们的 参数利用效率必须更高 ,以便通过少量计算达到所需的精度。在执行模型缩放时,希望计算顺序尽可能低。在表3中,分析了具有有效参数利用率的网络,例如DenseNet和OSANet的计算负载,其中g表示增长率。

 

对于一般的CNN,表3中列出的g、b和k之间的关系为k<<g<b。因此,DenseNet的计算复杂度为 O ( w h g b k ) O(whgbk) O ( w h g bk ) ,OSANet的计算复杂程度为 O ( m a x ( w h b g , w h k g 2 ) ) O(max(whbg,whkg^{2})) O ( ma x ( w hb g , w hk g 2 )) 。以上两个模型的计算复杂度都小于ResNet系列的 O ( w h k b 2 O(whkb^{2} O ( w hk b 2 )。因此, 本文采用OSANet设计计算复杂度较小的小型模型。 OSANet的结构图如下图(b)所示。

 

最小化/平衡特征图的大小

 

为了在计算速度方面取得最佳平衡,提出了一个新概念,即 在CSPOSANet的计算块之间执行梯度截断 。如果将原始CSPNet设计应用于DenseNet或ResNet架构,因为这两种架构的第j层输出是第1到(j-1)层输出的整合,必须将整个计算块视为一个整体。由于OSANet的计算块属于PlainNet架构,因此从计算块的任何层制作CSPNet都可以实现梯度截断的效果。本文使用此功能重新规划基础层的b通道和计算块生成的kg通道,并将它们分割为通道数相等的两条路径,如表4所示。

当通道数为
b + k g b+kg k g 时,如果要将这些通道分成两条路径,最好的分割是将其分成两个相等的部分,例如
( b + k g ) / 2 (b+kg)/2 ( b + k g ) /2

。当实际考虑硬件的带宽τ时,如果不考虑软件优化,最佳值为

 

c e i l ( ( b + k g ) / 2 τ ) ∗ τ ceil((b+kg)/2τ)*τ ce i l (( b + k g ) /2 τ ) ∗ τ

 

。本文设计的CSPOSANet可以动态调整信道分配。

 

卷积后保持相同的通道数

 

为了评估低端设备的计算成本,还必须考虑功耗,而影响功耗的最大因素是内存访问成本(MAC)。通常,卷积运算的MAC计算方法如下:

 

其中,h、w、Cin、Cout和K分别表示特征映射的高度和宽度、输入和输出的通道数以及卷积滤波器的数量。通过计算几何不等式,可以得出 当 C i n = C o u t C_{in}=C_{out} C o u t ​ 时的MAC最小。

 

最小化卷积输入/输出(CIO)

 

CIO是一个可以测量DRAM IO状态的指示器。表5列出了OSA、CSP和本文设计的CSPOSANet的CIO。 当kg>b/2时,提出的的CSPOSANet可以获得最佳CIO。

 

 

6.2.3 高端GPU扩展的大型模型

 

由于我们希望在放大CNN模型后提高精度的同时并保持实时推理速度,因此在执行复合缩放时,必须在目标检测器的许多缩放因子中找到最佳组合。通常,可以调整目标探测器input、backbone和neck的比例因子。表6总结了可调整的缩放因子。

 

图像分类和目标检测的最大区别在于,前者只需要识别图像中最大占比的类别,而后者需要预测图像中每个目标的位置和大小。在一阶段目标检测器中,每个位置对应的特征向量用于预测该位置上的目标类别和大小。 更好地预测物体大小的能力基本上取决于特征向量的感受野。在CNN架构中,与感受野最直接相关的是stage,而特征金字塔网络(FPN)架构告诉我们,更多的stage更适合预测大型物体 。在表7中,说明了感受野和几个参数之间的关系。

 

从表7可以看出,宽度缩放可以独立操作。当输入图像尺寸增大时,如果想要对大型目标有更好的预测效果,就必须增加网络的深度或stage数。在表7中列出的参数中,{ s i z e i n p u t size^{input} s i z e in p u t ,#stage}的组合效果最好。 因此,在执行缩放时,首先对size^input、#stage执行复合缩放,然后根据实时要求,分别对深度和宽度执行缩放。

 

6.3 Scaled-YOLOv4

 

在本节中,讲解为普通GPU、低端GPU和高端GPU设计可缩放的YOLOv4。

 

6.3.1 SCP-ized YOLOv4

 

YOLOv4是为通用GPU上的实时目标检测而设计的。在本小节中,重新设计了YOLOv4得到YOLOv 4 CSP,以获得最佳速度/精度权衡。

 

 

Backbone

在CSPDarknet53的设计中,跨阶段过程的下采样卷积计算不包括在残差块中。因此,可以推断出每个CSPDarknet阶段的计算量为 w h b 2 ( 9 / 4 + 3 / 4 + 5 k / 2 ) whb^{2}(9/4+3/4+5k/2) w h b 2 ( 9/4 + 5 k /2 ) 。从上面推导的公式中,可以知道 只有当满足k>1时,CSPDarknet stage才比Darknet stage有更好的计算优势 。CSPDarknet53中每个stage的残差层数量分别为1-2-8-8-4。为了获得更好的速度/精度权衡,将第一个CSP stage转换为原始的Darknet残差层。

 

Neck

 

为了有效地减少计算量,在YOLOv4中 CSP化了PAN架构 。PAN的结构如图2(a)所示。它主要整合来自不同特征金字塔的特征,然后通过两组反向Darknet残差层,没有shortcut连接。CSP化之后,新的结构如图2(b)所示,这个新的更新有效地减少了40%的计算量。

 

SPP

SPP模块最初插入neck第一个计算列表组的中间位置。因此,本文还 将SPP模块插入到CSPPAN第一个计算列表组的中间位置 。

 

 

6.3.2 YOLOv4-tiny

 

YOLOv4 tiny是为低端GPU设备设计的,设计遵循<低端设备可缩放的微型模型>节中提到的原则。

 

本文使用带有PCB架构的CSPOSANet来构成YOLOv4的Backbone。设置 g = b / 2 g=b/2 b /2 作为增长率,并在最后使其增长到 b / 2 + k g = 2 b b/2+kg=2b b /2 + k g = 2 b 。通过计算,得出 k = 3 k=3 3 ,其结构如图3所示。对于每个阶段和neck部分的通道数,遵循YOLOv3-tiny的设计规则。

 

6.3.3 YOLOv4-large

 

YOLOv4 large是为云GPU设计的,主要目的是实现高精度的目标检测 。设计了一个 完全CSP化的YOLOv4-P5,并将其扩展到YOLOv4-P6和YOLOv4-P7 。

 

图4展示了YOLOv4-P5、YOLOv 4P6和YOLOv-4-P7的结构。在 s i z e i n p u t size^{input} s i z e in p u t 、#stage上执行复合缩放,将每个阶段的深度刻度设置为 2 d s i 2^{dsi} 2 d s i , d s 为 [ 1 , 3 , 15 , 15 , 7 , 7 , 7 ] ds为[1,3,15,15,7,7,7] d s 为 [ 1 , 3 , 15 , 15 , 7 , 7 , 7 ] 。最后,进一步使用推理时间作为约束来执行额外的宽度缩放。实验表明,当宽度缩放因子等于1时,YOLOv4-P6可以在30 FPS视频上达到实时性能。对于YOLOv4-P7,当宽度比例因子等于1.25时,它可以在16 FPS视频下实现实时性能。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注