文章目录
-
- 一、CSPNet 简介
- 二、文章思路
-
- 2.1 提出背景
- 2.2 提出问题
- 3.3 改进效果
- 三、改进方法
-
- 3.1 Cross Stage Partial Network
-
- (1) DenseNet
- (2) 跨阶段局部DenseNet
- (3) 局部稠密块
- (4) 局部传输层
- (5) 应用CSPNet到其它网路
- 3.2 Exact Fusion Model
-
- (1) Looking Exactly to predict perfectly
- (2) 金字塔的聚合特征
- (3) 平衡计算开销
- 四、实验
-
- 4.1 实施细节
- 4.2 消融实验
- 4.3 ImageNet 图像分类
- 4.4 MS COCO 目标检测
- 4.5 性能分析
-
- (1) 计算瓶颈
- (2) 内存流量
- (3) 推理率
- 五、总结
前言:这篇文章是由台湾学者Chien-Yao Wang等人在CVPR2019上发表的。文章提出了跨阶段局部网络(CSPNet),为了缓解以往工作需要大量推理计算的问题。目前风靡一时YOLOv也引用了4个目标检测网络CSPNet作为骨干网络。那么今天就来学习一下CSPNet!代码开源代码: https://github.com/WongKinYiu/CrossStagePartialNetworks.
一、CSPNet 简介
本文提出了跨阶段局部网络(CSPNet),为了缓解以往工作需要从网络架构的角度进行大量的推理和计算,作者将这个问题归因于网络优化。.
梯度流通过不同的网络路径通过分割梯度流传播。通过切换系列和过渡步骤,传播的梯度信息可能会有很大的相关性差异。CSPNet可大大降低计算量,提高推理速度和准确性。
在本文的实验中,该方法的计算量减少了20%ImageNet数据集精度相当甚至更高,在MS COCO在目标检测数据集上AP50方面明显优于最先进的方法。
除此之外,CSPNet 易于实现,且足够通用,可与之相匹配 、 和 系统结构结构。
二、文章思路
2.1 提出背景
随着卷积神经网络的结构越来越深越宽,CNN它显示了它特别强大的功能。然而,扩展神经网络的系统结构通常会带来更多的计算,这使得许多人无法承担昂贵的计算成本。
由于实际应用通常需要关注,因为实际应用通常需要在小型设备上,因此需要缩短推理时间,这对计算机视觉算法提出了严峻的挑战。虽然有些方法是专门用于移动的CPU设计,但它们使用技术与工业 IC 设计不兼容,如用于特定用途的集成电路(ASIC)。
因此,提出了(CSPNet)。在这项工作中,作者研究了最先进的方法,如ResNet、ResNeXt和DenseNet计算负担。与上述网络进一步集成开发的高效组件,使上述网络部署cpu和移动gpu不牺牲性能。
2.2 提出问题
设计CSPNet主要目的是实现系统结构。将基础层可以通过将基础层的特征图分为两部分,然后通过提出的跨阶段结构来实现。
提出的基于CSPNet的目标检测器解决了以下三个问题:
- 。现有的CNN轻量化后,其准确性大大降低,作者希望加强CNN学习能力使其在轻量化的同时保持足够的准确性。所提出的CSPNet易于应用ResNet、ResNeXt和DenseNet。将CSPNet应用于上述网络后,计算量从10%减少到20%,但在精度方面,ImageNet在进行图像分类任务时,其性能优于ResNet、ResNeXt、DenseNet、HarDNet等一流算法。
- 。过高的计算瓶颈会导致更多的周期来完成推理过程,否则一些算术单元往往是空的。因此,作者希望在这里CNN平均分配每层的计算量,有效提高各计算单元的利用率,减少不必要的能耗。注意提出的CSPNet使PeleeNet计算瓶颈减半。另外,基于MS COCO该模型基于数据集的目标检测实验YOLOv测试模型时,可有效减少80%的计算瓶颈。
- 。随机动态存取存储器(DRAM)晶圆的制造成本很高,占用了很多空间。如果能有效降低存储成本,就会大大降低ASIC的成本。小面积晶圆可用于各种边缘计算设备。为了减少内存的使用,作者采用了跨通道的[6]pooling 压缩特征映射。这样,在生成特征金字塔时,使用目标检测器CSPNet可以减少PeleeNet 使用75%的内存。
3.3 改进效果
基于CSPNet目标检测器不同效果如下:
- 由于CSPNet能够,因此,可以使用较小的模型来实现更好的准确性。作者提出的模型是COCO的AP50%可达50%,GTX1080ti 达到109 fps。
- 由于CSPNet可以显着,精确FusionModel (EFM)作者提出的方法可以有效地减少所需的内存带宽Nvidia Jetson TX2上以49 fps的速度COCO AP50实现42%。
- 由于CSPNet可以有效地,作者提出的方法可以在Intel Core i9-9900K上以52 fps的速度COCO AP50实现40%。
三、改进方法
3.1 Cross Stage Partial Network
(1) DenseNet
上图为DenseNet单阶段结构的详细结构。DenseNet每个阶段包括一个厚块和一个过渡层,每个厚块由k个厚层组成。其中,第一 l l l层接收所有以前的层 x 0 , x 1 , . . . , x l ? 1 x_0, x_1,..., x_{l-1} x0,x1,...,xl−1的特征图作为输入。表示上述机理的方程可以表示为: 其中 * 为卷积运算符, w i w_i wi 和 x i x_i xi分别表示第 i 个稠密层的权值和输出。
利用反向传播算法更新权值,权值更新方程为: 其中 f 为权值更新函数, g i g_i gi为传播到第i个稠密层的梯度。我们可以发现,大量的梯度信息被重用来更新不同稠密层的权值。
(2) 跨阶段局部DenseNet
提出的CSPDenseNet的单阶段的架构如上图(b)所示。CSPDenseNet的一个阶段由局部密集块和局部过渡层组成。在局部密集块中,通过通道 x 0 = [ x 0 ′ , x 0 ′ ′ ] x_0= [x_0^{'}, x_0^{''}] x0=[x0′,x0′′] 将某一阶段的映射分成两部分。其中, x 0 ′ x_0^{'} x0′直接连接到阶段的末端, x 0 ′ ′ x_0^{''} x0′′将进入一个密集块。
一个局部过渡层所涉及的所有步骤如下:
- 首先,稠密层的输出 [ x 0 ′ ′ , x 1 , … , x k ] [x_0^{''}, x_1,…,x_k] [x0′′,x1,…,xk] ,将会进入到下一个过渡层。
- 其次,这个 的输出将与 x 0 ′ x_0^{'} x0′ 连接,并进入另一个过渡层,然后生成。
CSPDenseNet的方程为:
CSPDenseNet的方程为: 从上面的权值更新方程可以看出,来自密集层的梯度是单独积分的。而且,没有经过密集层的特征图 x 0 ′ x_0^{'} x0′ 也被单独积分。对于更新权值的梯度信息,两边不包含属于其他边的重复梯度信息。
总的来说,所提出的CSPDenseNet保留了DenseNet特性重用特性的优点,但同时通过截断梯度流防止了过多的重复梯度信息。该思想通过设计一种分层的特征融合策略来实现,并应用于局部过渡层。
(3) 局部稠密块
设计局部稠密块的目的是:
- :通过分块归并策略,可以使梯度路径的数量增加一倍。由于采用了跨阶段策略,可以减轻使用显式特征图copy进行拼接所带来的弊端。
- :通常,DenseNet基层的通道数远大于生长速率。由于在局部稠密块中,参与稠密层操作的基础层通道仅占原始数据的一半,可以有效解决近一半的计算瓶颈;
- :假设DenseNet中一个稠密块的基本特征图大小为w×h×c,增长率为d,共有m个稠密层。则该密集块的CIO为 c × m + ( ( m 2 + m ) × d ) / 2 c×m + ((m^{2}+m)×d)/2 c×m+((m2+m)×d)/2,而局部密集块的CIO为 ( ( c × m ) + ( m 2 + m ) × d ) / 2 ((c×m) + (m^2+m)×d)/2 ((c×m)+(m2+m)×d)/2。虽然m和d通常比c小得多,但单局部密集的块最多可以节省一半的网络内存流量。
注:增长率d指的是,稠密块中每个稠密层输出特征图的通道数。
(4) 局部传输层
设计局部过渡层的目的是使。局部过渡层是一种层次化的特征融合机制,它利用梯度流的聚合策略来防止不同的层学习重复的梯度信息。在这里,作者设计了两个CSPDenseNet变体来展示这种梯度流截断是如何影响网络的学习能力的。 上图中的 (c) 和 (d) 展示了两种不同的融合策略:
- :是将两部分生成的feature map进行拼接,然后进入过渡层。如果采用这种策略,将会损失大量的梯度信息。
- :对于fusion last策略,来自稠密块的输出将经过过渡层,然后与来自Part1的feature map进行连接。如果采用这种策略,由于梯度流被截断,梯度信息将不会被重用。
如果我们使用上图所示的四种架构来进行图像分类,其结果如下图所示: 从上图可以看出,如果采用Fusion Last策略进行图像分类,计算成本明显下降,但Top-1的准确率仅下降0.1%。另一方面,CSP (fusion first)策略确实有助于显著降低计算成本,但Top-1的准确率显著下降1.5%。
通过使用跨阶段的分割和合并策略,我们能够有效地减少信息集成过程中重复的可能性。如果能够有效地减少重复的梯度信息,那么网络的学习能力将会得到很大的提高。
(5) 应用CSPNet到其它网路
CSPNet也可以轻松地应用于ResNet 和 ResNeXt,其架构如下图所示。由于只有一半的特征通道通过Res(X)Blocks,因此就不再需要引入bottleneck了。当固定浮点运算(FLOP)时,这使理论上的内存访问成本(MAC)下限成为可能。
3.2 Exact Fusion Model
(1) Looking Exactly to predict perfectly
作者建议使用EFM为每个锚点捕获合适的Field of View,以增强单阶段目标检测器的准确性。
对于分割任务,由于像素级标签通常不包含全局信息,因此通常更可取的是考虑使用更大的patches以获得更好的信息检索。但是,对于诸如图像分类和对象检测之类的任务,从图像级和边框框级标签观察时,某些关键信息可能会模糊不清。 Li等人发现,当从图像级标签中学习时,CNN经常会分散注意力并得出结论,这是两阶段目标检测器优于一级目标检测器的主要原因之一。
(2) 聚合特征金字塔
提出的EFM能够更好地聚合初始特征金字塔。 EFM基于YOLOv3 ,对每个真实物体精确分配了一个预选框。每个真值边界框对应于一个超过阈值IoU的预选框。如果预选框的大小等于网格单元的Field of View,则对于第s的网格单元,相应的边界框将由第s-1个scale的下界和第s+1个scale的上限局决定。因此,EFM会从三个比例尺中组合特征。
(3) 平衡计算开销
由于来自特征金字塔的串联特征图非常庞大,因此会引入大量的内存和计算成本。为了缓解该问题,我们采用了Maxout技术来压缩特征图。
四、实验
作者使用ILSVRC 2012中的ImageNet图像分类数据集来验证提出的CSPNet。此外,还使用MS COCO目标检测数据集来验证提出的EFM。
4.1 实施细节
。在ImageNet图像分类实验中,所有超参数(例如训练步数,学习率进度表,优化器,数据增强等)都遵循Redmon等人中定义的设置。对于基于ResNet的模型和基于ResNeXt的模型,作者设置了8000,000个训练步数。对于基于DenseNet的模型,设置了1,600,000个训练步数。作者将初始学习率设置为0.1,并采用多项式衰减学习率调度策略。动量和权重衰减分别设置为0.9和0.005。所有架构都使用单个GPU进行批量训练,batch size为128。最后,作者使用ILSVRC 2012的验证集来验证该方法。
。在MS COCO目标检测实验中,所有超参数也都遵循Redmon等人中定义的设置。作者总共进行了500,000个训练步数。作者采用逐步衰减学习率调度策略,并分别在40万步和45万步处乘以系数0.1。动量和权重衰减分别设置为0.9和0.0005。所有架构都使用单个GPU,batch size设置为64,执行多尺度训练。最后,采用COCO test-dev集来验证我们的方法。
4.2 消融实验
。在CSPNet上进行的消融实验中,我们采用PeleeNet作为基线,并使用ImageNet来验证CSPNet的性能。我们使用不同的和不同的进行消融研究。表1显示了在CSPNet上进行消融研究的结果。在表1中,SPeleeNet和PeleeNeXt分别是将稀疏连接和组卷积引入PeleeNet的体系结构。至于CSP(fusion first)和CSP(fusion last),它们是为验证部分过渡的好处而提出的两种策略。 从实验结果来看,如果仅在跨阶段部分密集区块上使用CSP(融合优先)策略,则性能可能会略好于SPeleeNet和PeleeNeXt。但是,设计用于减少冗余信息学习的部分过渡层可以实现非常好的性能。例如,当计算减少21%时,精度只会降低0.1%。要注意的一件事是,当γ= 0.25时,计算量减少了11%,而精度提高了0.1%。与基线PeleeNet相比,建议的CSPPeleeNet达到了最佳性能,可以减少13%的计算量,但同时将准确性提高0.2%。如果将部分比例调整为γ= 0.25,则可以将精度提高0.8%,同时减少3%的计算量。
。接下来,作者将基于MS COCO数据集进行EFM的消融研究。在这一系列实验中,作者比较了上面图6中所示的三种不同的特征融合策略。选择了两种最新的轻量级模型 PRN 和 ThunderNet 进行比较。PRN是用于比较的功能金字塔体系结构,带有上下文增强模块(CEM)和空间注意模块(SAM)的ThunderNet 是用于比较的全局融合体系结构。作者设计了一个全局融合模型(GFM)与提出的EFM进行比较。此外,GioU、SPP和SAM也被应用于EFM进行消融研究。表2中列出的所有实验结果均以CSPPeleeNet为骨干。
4.3 ImageNet 图像分类
作者将提出的CSPNet应用于ResNet-10,ResNeXt-50,PeleeNet和DenseNet-201-Elastic,并与最新方法进行比较,实验结果示于表3。 实验结果证实:无论是基于ResNet的模型,基于ResNeXt的模型还是基于DenseNet的模型,引入CSPNet后,计算量至少减少了10%,并且精度保持不变或提高。引入CSPNet对于改进特别有用。
例如,与ResNet-10相比,CSPResNet-10可以将准确性提高1.8%。对于PeleeNet和DenseNet-201-Elastic,CSPPeleeNet和CSPDenseNet-201-Elastic可以分别减少13%和19%的计算量,或者稍微升级或保持准确性。对于ResNeXt-50,CSPResNeXt-50可以减少22%的计算量,并将top-1精度提高到77.9%。
4.4 MS COCO 目标检测
在目标检测任务中,我们针对三个目标场景:
- :我们采用带有PANet(SPP)的CSPResNeXt50;
- :我们将CSPPeleeNet,CSPPeleeNet参考和CSPDenseNet参考与拟议的EFM(SAM)结合使用;
- :我们采用带有PRN的CSPPeleeNet和CSPDenseNet。
表4列出了上述模型与最新方法之间的比较。关于CPU和移动GPU推理速度的分析将在下一部分中详细介绍。 从实验数据,可以看出:
- 与30-100 fps的物体检测器相比,带有PANet(SPP)的CSPResNeXt50在AP,AP50和AP75中获得最佳性能。他们分别获得38.4%,60.6%和41.6%的检出率。
- 如果在输入图像尺寸512×512下与最新的LRF进行比较,带有PANet(SPP)的CSPResNeXt50优于带有LRF的ResNet101分别为0.7%AP,1.5%AP50和1.1%AP75。
- 如果与以100-200fps运行的目标检测器相比,带有EFM(SAM)的CSPPeleeNet可以与Pelee相同的速度提高AP10.5%,并以与CenterNet 相同的速度提高4.1%。
- 如果与非常快速的目标检测器(如ThunderNet ,YOLOv3-tiny 和YOLOv3-tiny-PRN)进行比较,则提出的带有PRN的CSPDenseNetb是最快的。 在GTX 1080ti显卡上测试,能到达400fps。
4.5 性能分析
(1) 计算瓶颈
图7显示了PeleeNet-YOLO,PeleeNet-PRN和提出的CSPPeleeNet-EFM每一层的BLOPS。从图7中可以明显看出,当头部集成了特征金字塔时,PeleeNet-YOLO就会出现计算瓶颈。 PeleeNet-PRN的计算瓶颈出现在PeleeNet主干的过渡层上。对于拟提出的CSPPeleeNet-EFM,它可以平衡总体计算瓶颈,从而减少了PeleeNet主干网44%的计算瓶颈,减少了PeleeNet-YOLO 80%的计算瓶颈。因此,可以说,
(2) 内存流量
图8显示了ResNeXt50和提出的CSPResNeXt50每一层的大小。提出的CSPResNeXt(32.6M)的CIO低于原始ResNeXt50(34.4M)的CIO。另外,CSPResNeXt50消除了ResXBlock中的瓶颈层,并保持相同数量的输入通道和输出通道。
(3) 推理率
我们进一步评估了所提出的方法是否能够部署在带有移动GPU或CPU的实时检测器上。我们的实验基于NVIDIA Jetson TX2和Intel Core i9-9900K,并且使用OpenCV DNN模块评估了CPU的推理率。我们不采用模型压缩或量化进行公平比较,结果示于表5。 如果我们比较在CPU上执行的推理速度,则CSPDenseNetb Ref.-PRN的AP50高于SNet49-TunderNet,YOLOv3-tiny和YOLOv3-tiny-PRN,并且在帧速率方面还分别比上述三个模型高出55 fps,48 fps和31 fps。另一方面,CSPPeleeNet Ref.-PRN(3l)达到与SNet146-ThunderNet相同的准确度,但CPU的帧速率显着提高了20 fps。
。由于我们提出的EFM可以极大地减少生成特征金字塔时的内存需求,因此在内存带宽受限的移动环境下运行绝对有利。例如,CSPPeleeNet Ref.-EFM(SAM)的帧速率可以比YOLOv3-tiny高,并且其AP50比YOLOv3-tiny高11.5%,这是一个显著的提升。
对于相同的CSPPeleeNet Ref骨干网络,尽管EFM(SAM)在GTX 1080ti上比PRN(3l)慢62 fps,但在Jetson TX2上达到41 fps,比PRN(3l)快3 fps,并且AP504.6%增长。
五、总结
本文提出的CSPNet,可以使诸如ResNet,ResNeXt和DenseNet之类的最新方法轻量化以用于移动GPU或CPU。主要贡献之一是,我们已经认识到冗余梯度信息问题,该问题导致效率低下的优化和昂贵的推理计算。我们提出了利用跨阶段特征融合策略和截断梯度流来增强不同层中学习特征的可变性。此外,我们提出了结合了Maxout操作的EFM,以压缩从特征金字塔生成的特征图,从而大大减少了所需的内存带宽,因此推理效率很高,足以与边缘计算设备兼容。通过实验,我们已经证明,提出的带有EFM的CSPNet在用于实时目标检测任务的移动GPU和CPU的准确性和推断率方面明显优于竞争对手。