赞
踩
前言:这篇文章是由台湾学者Chien-Yao Wang等人在CVPR2019上发表的。文章提出了跨阶段局部网络(CSPNet),以缓解以往的工作需进行大量推理计算的问题。在当前风靡一时的YOLOv4目标检测网络中,也引用了CSPNet作为骨干网络。那么今天就来学习一下CSPNet!作者已将代码开源: https://github.com/WongKinYiu/CrossStagePartialNetworks.
在本文中,作者提出了跨阶段局部网络(CSPNet),用来缓解以往工作需要从网络架构角度进行大量推理计算的问题,作者把这个问题归结为网络优化中的重复梯度信息。.
作者的主要想法是通过分割梯度流,使梯度流通过不同的网络路径传播。通过切换串联和过渡步骤,传播的梯度信息可以具有较大的相关性差异。此外,CSPNet可以大大减少计算量,并提高推理速度和准确性。
在本文的实验中,该方法减少了20%的计算量,在ImageNet数据集上具有相当、甚至更高的精度,并且在MS COCO目标检测数据集上的AP50方面显著优于最先进的方法。
除此之外,CSPNet 易于实现,并且足够通用,可以与 ResNet、ResNeXt 和 DenseNet 的体系结构相融合。
随着卷积神经网络结构变得更深更宽,CNN显示出了它特别强大的功能。但是,扩展神经网络的体系结构通常会带来更多的计算,这使很多数人无法承担昂贵的算力成本。
轻量级计算已逐渐受到越来越多的关注,因为实际应用通常需要在小型设备上,所以需要缩短推理时间,这对计算机视觉算法提出了严峻挑战。尽管一些方法是专门为移动CPU设计的,但它们采用的深度可分离卷积技术与工业 IC 设计不兼容,例如用于特定用途的集成电路(ASIC)。
由此,而提出了跨阶段局部网络(CSPNet)。在这项工作中,作者研究了最先进的方法,比如ResNet、ResNeXt和DenseNet的计算负担。进一步将开发的高效组件与上述网络融合,使上述网络可以部署在cpu和移动gpu上,而不会牺牲性能。
设计CSPNet的主要目的是使该体系结构能够实现更丰富的梯度组合,同时减少计算量。通过将基础层的特征图划分为两个部分,然后通过提出的跨阶段层次结构将它们合并,可以实现此目标。
提出的基于CSPNet的目标检测器解决了以下三个问题:
相应地,基于CSPNet的目标检测器在不同改进方面的效果如下:
上图为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个稠密层的梯度。我们可以发现,大量的梯度信息被重用来更新不同稠密层的权值。这将导致无差异的稠密层反复学习同样的梯度信息。
提出的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′′将进入一个密集块。
一个局部过渡层所涉及的所有步骤如下:
CSPDenseNet的前向计算方程为:
CSPDenseNet的权值更新方程为:
从上面的权值更新方程可以看出,来自密集层的梯度是单独积分的。而且,没有经过密集层的特征图
x
0
′
x_0^{'}
x0′ 也被单独积分。对于更新权值的梯度信息,两边不包含属于其他边的重复梯度信息。
总的来说,所提出的CSPDenseNet保留了DenseNet特性重用特性的优点,但同时通过截断梯度流防止了过多的重复梯度信息。该思想通过设计一种分层的特征融合策略来实现,并应用于局部过渡层。
设计局部稠密块的目的是:
注:增长率d指的是,稠密块中每个稠密层输出特征图的通道数。
设计局部过渡层的目的是使梯度组合的差异最大。局部过渡层是一种层次化的特征融合机制,它利用梯度流的聚合策略来防止不同的层学习重复的梯度信息。在这里,作者设计了两个CSPDenseNet变体来展示这种梯度流截断是如何影响网络的学习能力的。
上图中的 (c) 和 (d) 展示了两种不同的融合策略:
如果我们使用上图所示的四种架构来进行图像分类,其结果如下图所示:
从上图可以看出,如果采用Fusion Last策略进行图像分类,计算成本明显下降,但Top-1的准确率仅下降0.1%。另一方面,CSP (fusion first)策略确实有助于显著降低计算成本,但Top-1的准确率显著下降1.5%。
通过使用跨阶段的分割和合并策略,我们能够有效地减少信息集成过程中重复的可能性。如果能够有效地减少重复的梯度信息,那么网络的学习能力将会得到很大的提高。
CSPNet也可以轻松地应用于ResNet 和 ResNeXt,其架构如下图所示。由于只有一半的特征通道通过Res(X)Blocks,因此就不再需要引入bottleneck了。当固定浮点运算(FLOP)时,这使理论上的内存访问成本(MAC)下限成为可能。
作者建议使用EFM为每个锚点捕获合适的Field of View,以增强单阶段目标检测器的准确性。
对于分割任务,由于像素级标签通常不包含全局信息,因此通常更可取的是考虑使用更大的patches以获得更好的信息检索。但是,对于诸如图像分类和对象检测之类的任务,从图像级和边框框级标签观察时,某些关键信息可能会模糊不清。 Li等人发现,当从图像级标签中学习时,CNN经常会分散注意力并得出结论,这是两阶段目标检测器优于一级目标检测器的主要原因之一。
提出的EFM能够更好地聚合初始特征金字塔。 EFM基于YOLOv3 ,对每个真实物体精确分配了一个预选框。每个真值边界框对应于一个超过阈值IoU的预选框。如果预选框的大小等于网格单元的Field of View,则对于第s的网格单元,相应的边界框将由第s-1个scale的下界和第s+1个scale的上限局决定。因此,EFM会从三个比例尺中组合特征。
由于来自特征金字塔的串联特征图非常庞大,因此会引入大量的内存和计算成本。为了缓解该问题,我们采用了Maxout技术来压缩特征图。
作者使用ILSVRC 2012中的ImageNet图像分类数据集来验证提出的CSPNet。此外,还使用MS COCO目标检测数据集来验证提出的EFM。
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集来验证我们的方法。
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为骨干。
作者将提出的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列出了上述模型与最新方法之间的比较。关于CPU和移动GPU推理速度的分析将在下一部分中详细介绍。
从实验数据,可以看出:
图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%,这是一个显著的提升。
对于相同的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的准确性和推断率方面明显优于竞争对手。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。