【CSPNet】一种增强学习能力的跨阶段局部网络

重磅干货,第一时间送达!
AI 修炼之路

研究僧一枚,CSDN博客专家,专注于无人驾驶(环境感知方向),热衷于分享AI、CV、DL、ML、OpenCV、Python、C++等相关技术文章。
44篇原创内容
公众号

这篇文章是由台湾学者Chien-Yao Wang等人在CVPR2019上发表的。文章提出了跨阶段局部网络(CSPNet),以缓解以往的工作需进行大量推理计算的问题。在当前风靡一时的YOLOv4目标检测网络中,也引用了CSPNet作为骨干网络。那么今天就来学习一下CSPNet!

作者已将代码开源:https://github.com/WongKinYiu/CrossStagePartialNetworks.

一、CSPNet 简介

在本文中,作者提出了跨阶段局部网络(CSPNet),用来缓解以往工作需要从网络架构角度进行大量推理计算的问题,作者把这个问题归结为网络优化中的「重复梯度信息」

CSPNet通过整合网络阶段开始和结束的特征图来尊重梯度的可变性,在我们的实验中,该方法减少了20%的计算量,在ImageNet数据集上具有相当、甚至更高的精度,并且在MS COCO目标检测数据集上的AP50方面显著优于最先进的方法。

除此之外,CSPNet易于实现,并且足够通用,可以处理基于「ResNet」「ResNeXt」「DenseNet」的体系结构。

二、文章思路

2.1 提出背景

随着卷积神经网络结构变得更深更宽,CNN显示出了它特别强大的功能。但是,扩展神经网络的体系结构通常会带来更多的计算,这使大多数人无法负担诸如目标检测之类的计算量繁重的任务。

「轻量级计算」已逐渐受到越来越多的关注,因为实际应用通常需要在小型设备上,所以需要缩短推理时间,这对计算机视觉算法提出了严峻挑战。尽管某些方法是专门为移动CPU设计的,但它们采用的「深度可分离卷积」技术与工业IC设计不兼容,例如用于特定用途的集成电路(ASIC)。

由此,而提出了「跨阶段局部网络」(CSPNet)。在这项工作中,作者研究了最先进的方法,比如ResNet、ResNeXt和DenseNet的计算负担。进一步将开发的高效组件与上述网络融合,使上述网络可以部署在cpu和移动gpu上,而不会牺牲性能。

2.2 提出问题

设计CSPNet的主要目的是使该体系结构能够实现「更丰富的梯度组合,同时减少计算量」。通过将基础层的特征图划分为两个部分,然后通过提出的跨阶段层次结构将它们合并,可以实现此目标。

「作者的主要想法」是通过分割梯度流,使梯度流通过不同的网络路径传播。通过切换串联和过渡步骤,传播的梯度信息可以具有较大的相关性差异。此外,CSPNet可以大大减少计算量,并提高推理速度和准确性,如图1所示。

提出的基于CSPNet的目标检测器解决了以下三个问题:

  • 「增强了CNN的学习能力」。现有的CNN经过轻量化后,其准确性大大降低,所以作者希望加强CNN的学习能力,使其在轻量化的同时保持足够的准确性。所提出的CSPNet可以很容易地应用于ResNet、ResNeXt和DenseNet。将CSPNet应用于上述网络后,计算量从10%减少到20%,但在精度方面,在ImageNet上进行图像分类任务时,其表现优于ResNet、ResNeXt、DenseNet、HarDNet等一流的算法。
  • 「消除计算瓶颈」。过高的计算瓶颈将导致更多的周期来完成推理过程,否则一些算术单元将经常空闲。因此,作者希望在CNN中能够将每一层的计算量平均分配,从而有效的提高每一个计算单元的利用率,减少不必要的能源消耗。注意到所提出的CSPNet使PeleeNet的计算瓶颈减半。此外,在基于MS COCO数据集的目标检测实验中,该模型在基于YOLOv3的模型上测试时,可以有效地减少80%的计算瓶颈。
  • 「减少内存成本」。动态随机存取存储器(DRAM)的晶圆制造成本非常高,同时也占用大量的空间。如果能有效降低存储成本,将大大降低ASIC的成本。此外,小面积晶圆可以用于各种边缘计算设备。为了减少内存使用,在特征金字塔生成过程中,作者采用了跨通道的[6]pooling 来压缩特征映射。这样,在生成特征金字塔时,使用目标检测器的CSPNet可以减少PeleeNet 75%的内存使用。

2.3 改进效果

相应地,基于CSPNet的目标检测器在不同「改进方面」的效果如下:

  • 由于CSPNet能够「提升CNN的学习能力」,因此可以使用更小的模型来达到更好的准确性。作者提出的模型在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个稠密层组成。其中,第层接收所有先前的层的特征图作为输入。表示上述机理的方程可以表示为:

其中 * 为卷积运算符, 和 分别表示第 i 个稠密层的权值和输出。

利用反向传播算法更新权值,权值更新方程为:

其中 f 为权值更新函数,为传播到第i个稠密层的梯度。我们可以发现,大量的梯度信息被重用来更新不同稠密层的权值。「这将导致无差异的稠密层反复学习同样的梯度信息。」

(2) 跨阶段局部DenseNet

提出的CSPDenseNet的单阶段的架构如上图(b)所示。CSPDenseNet的一个阶段由局部密集块和局部过渡层组成。在局部密集块中,通过通道 将某一阶段的「基础层特征」映射分成两部分。其中,直接连接到阶段的末端,将进入一个密集块。

一个局部过渡层所涉及的所有步骤如下:

  • 首先,稠密层的输出 ,将会进入到下一个过渡层。
  • 其次,这个「过渡层 」 的输出将与 连接,并进入另一个过渡层,然后生成「输出」

CSPDenseNet的「前向计算」方程为:

CSPDenseNet的「权值更新」方程为:

从上面的权值更新方程可以看出,来自密集层的梯度是单独积分的。而且,没有经过密集层的特征图  也被单独积分。对于更新权值的梯度信息,两边不包含属于其他边的重复梯度信息。

总的来说,所提出的CSPDenseNet保留了DenseNet特性重用特性的优点,但同时通过截断梯度流防止了过多的重复梯度信息。该思想通过设计一种分层的特征融合策略来实现,并应用于局部过渡层。

(3) 局部稠密块

设计局部稠密块的目的是:

  • 「增加梯度路径」:通过分块归并策略,可以使梯度路径的数量增加一倍。由于采用了跨阶段策略,可以减轻使用显式特征图copy进行拼接所带来的弊端。
  • 「每一层的平衡计算」:通常,DenseNet基层的通道数远大于生长速率。由于在局部稠密块中,参与稠密层操作的基础层通道仅占原始数据的一半,可以有效解决近一半的计算瓶颈;
  • 「减少内存流量」:假设DenseNet中一个稠密块的基本特征图大小为w×h×c,增长率为d,共有m个稠密层。则该密集块的CIO为,而局部密集块的CIO为。虽然m和d通常比c小得多,但单局部密集的块最多可以节省一半的网络内存流量。

注:增长率d指的是,稠密块中每个稠密层输出特征图的通道数。

(4) 局部传输层

设计局部过渡层的目的是使「梯度组合的差异最大」。局部过渡层是一种层次化的特征融合机制,它利用梯度流的聚合策略来防止不同的层学习重复的梯度信息。在这里,作者设计了两个CSPDenseNet变体来展示这种梯度流截断是如何影响网络的学习能力的。

上图中的 (c) 和 (d) 展示了两种不同的融合策略:

  • 「Fusion First」:是将两部分生成的feature map进行拼接,然后进入过渡层。如果采用这种策略,将会损失大量的梯度信息。
  • 「Fusion Last」:对于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

聚合特征金字塔

提出的EFM能够更好地聚合初始特征金字塔。EFM基于YOLOv3 ,对每个真实物体精确分配了一个预选框。每个真值边界框对应于一个超过阈值IoU的预选框。如果预选框的大小等于网格单元的Field of View,则对于第s的网格单元,相应的边界框将由第s-1个scale的下界和第s+1个scale的上限局决定。因此,EFM会从三个比例尺中组合特征。

平衡计算开销

由于来自特征金字塔的串联特征图非常庞大,因此会引入大量的内存和计算成本。为了缓解该问题,我们采用了Maxout技术来压缩特征图。

四、实验

作者使用ILSVRC 2012中的ImageNet图像分类数据集来验证提出的CSPNet。此外,还使用MS COCO目标检测数据集来验证提出的EFM。

4.1 实施细节

「ImageNet」。在ImageNet图像分类实验中,所有超参数(例如训练步数,学习率进度表,优化器,数据增强等)都遵循Redmon等人中定义的设置。对于基于ResNet的模型和基于ResNeXt的模型,作者设置了8000,000个训练步数。对于基于DenseNet的模型,设置了1,600,000个训练步数。作者将初始学习率设置为0.1,并采用多项式衰减学习率调度策略。动量和权重衰减分别设置为0.9和0.005。所有架构都使用单个GPU进行批量训练,batch size为128。最后,作者使用ILSVRC 2012的验证集来验证该方法。

「MS COCO」。在MS COCO目标检测实验中,所有超参数也都遵循Redmon等人中定义的设置。作者总共进行了500,000个训练步数。作者采用逐步衰减学习率调度策略,并分别在40万步和45万步处乘以系数0.1。动量和权重衰减分别设置为0.9和0.0005。所有架构都使用单个GPU,batch size设置为64,执行多尺度训练。最后,采用COCO test-dev集来验证我们的方法。

4.2 消融实验

「Ablation study of CSPNet on ImageNet」。在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%的计算量。

「Ablation study of EFM on MS COCO」。接下来,作者将基于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 目标检测

在目标检测任务中,我们针对三个目标场景:

  • 「在GPU上实时」:我们采用带有PANet(SPP)的CSPResNeXt50;
  • 「在移动GPU上实时」:我们将CSPPeleeNet,CSPPeleeNet参考和CSPDenseNet参考与拟议的EFM(SAM)结合使用;
  • 「在CPU上实时」:我们采用带有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 性能分析

计算瓶颈

图7显示了PeleeNet-YOLO,PeleeNet-PRN和提出的CSPPeleeNet-EFM每一层的BLOPS。从图7中可以明显看出,当头部集成了特征金字塔时,PeleeNet-YOLO就会出现计算瓶颈。PeleeNet-PRN的计算瓶颈出现在PeleeNet主干的过渡层上。对于拟提出的CSPPeleeNet-EFM,它可以平衡总体计算瓶颈,从而减少了PeleeNet主干网44%的计算瓶颈,减少了PeleeNet-YOLO 80%的计算瓶颈。因此,可以说,「提出的CSPNet可以为硬件提供更高的利用率。」

内存流量

图8显示了ResNeXt50和提出的CSPResNeXt50每一层的大小。提出的CSPResNeXt(32.6M)的CIO低于原始ResNeXt50(34.4M)的CIO。另外,CSPResNeXt50消除了ResXBlock中的瓶颈层,并保持相同数量的输入通道和输出通道。

推理率

我们进一步评估了所提出的方法是否能够部署在带有移动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。

「如果我们比较在移动GPU上执行的推理速度,那么我们提出的EFM将是一个很好的模型」。由于我们提出的EFM可以极大地减少生成特征金字塔时的内存需求,因此在内存带宽受限的移动环境下运行绝对有利。例如,CSPPeleeNet Ref.-EFM(SAM)的帧速率可以比YOLOv3-tiny高,并且其AP50比YOLOv3-tiny高11.5%,这是一个显著的提升。

五、总结

本文提出的CSPNet,可以使诸如ResNet,ResNeXt和DenseNet之类的最新方法轻量化以用于移动GPU或CPU。主要贡献之一是,认识到冗余梯度信息问题,该问题导致效率低下的优化和昂贵的推理计算。本文提出了利用跨阶段特征融合策略和截断梯度流来增强不同层中学习特征的可变性。

此外,本文提出了结合Maxout操作的EFM,以压缩从特征金字塔生成的特征图,从而大大减少了所需的内存带宽,因此推理效率很高,足以与边缘计算设备兼容。通过实验已经证明,提出的带有EFM的CSPNet在用于实时目标检测任务的移动GPU和CPU的准确性和推断率方面明显优于竞争对手。

扫描二维码

(0)

相关推荐