CVPR2020 CSPNet: A New Backbone that can Enhance Learning Capability of CNN

论文地址:CSPNet: A New Backbone that can Enhance Learning Capability of CNN

摘要

神经网络已经使最先进的方法能够在计算机视觉任务上取得令人难以置信的结果,如目标检测。然而,这种成功很大程度上依赖于昂贵的计算资源,这阻碍了拥有廉价设备的人们对先进技术的重视。在本文中,我们提出跨阶段部分网络(CSPNet),以从网络架构的角度减轻以往工作需要大量推理计算的问题。提出网络方面的变化梯度通过集成特征图的开始和结束阶段,网络,在我们的实验中,减少了20%的计算并ImageNet数据集有相当甚至更好的精度,并在MS COCO目标检测数据集的AP50 显著优于SOTA方法。CSPNet易于实现,并且足够通用,可以处理基于ResNet、ResNeXt和DenseNet的体系结构。源代码在https://github.com/WongKinYiu/CrossStagePartialNetworks
在这里插入图片描述

1.介绍

神经网络已经被证明当它变得更深[7,39,11]和更宽[40]是特别强大的。然而,扩展神经网络的结构通常需要更多的计算,这使得像目标检测这样的计算量大的任务对大多数人来说是负担不起的。由于实际应用中在小型设备上的推理时间较短,轻量级计算逐渐受到越来越多的关注,这对计算机视觉算法提出了严峻的挑战。虽然有些方法是专门为移动CPU设计的[9,31,8,33,43,24],但他们采用的深度可分离卷积技术并不兼容工业IC设计,如用于边缘计算系统的专用集成电路(ASIC)。在这项工作中,我们研究了最先进的方法如ResNet、ResNeXt和DenseNet的计算负担。我们进一步开发计算效率高的组件,使提到的网络可以部署在cpu和移动gpu上,而不牺牲性能。
在本研究中,我们引入跨阶段局部网络(CSPNet)。设计CSPNet的主要目的是使该体系结构在减少计算量的同时实现更丰富的梯度组合。通过将基础层的feature map划分为两部分,然后通过一个跨阶段的层次结构将它们合并,可以达到这个目的我们的主要概念是通过分裂梯度流,使梯度流通过不同的网络路径传播。这样,我们就证实了通过切换连接和过渡步骤,传播的梯度信息可以有较大的相关差。此外,CSPNet可以大大减少计算量,提高推理速度和准确度,如图1所示。提出的基于CSPNet的目标检测器解决了以下三个问题:

  1. 增强CNN的学习能力. 现有的CNN经过轻量化后,准确率大大降低,所以我们希望增强CNN的学习能力,使其在轻量化的同时保持足够的准确率。提出的CSPNet可以很容易地应用于ResNet、ResNeXt和DenseNet。将CSPNet应用于上述网络后,计算量可以从10%减少到20%,但在ImageNet[2]上进行图像分类的准确率要优于ResNet[7]、ResNeXt[39]、DenseNet[11]、HarDNet[1]、Elastic[36]、Res2Net[5]。
  2. 删除计算bottlenecks. 过高的计算瓶颈将导致更多的周期来完成推理过程,或一些算术单元将经常闲置。因此,我们希望能够将计算量均匀地分布在CNN的每一层,从而有效地提高每个计算单元的利用率,从而减少不必要的能源消耗。值得注意的是,提出的CSPNet使PeleeNet[37]的计算瓶颈减半。此外,在MS COCO[18]基于数据集的目标检测实验中,我们提出的模型在基于yolov3的模型上测试时,可以有效地减少80%的计算瓶颈。
  3. 减少内存成本. 动态随机存取存储器(DRAM)的晶片制作成本非常昂贵,而且占用了大量的空间。如果能有效地降低存储成本,ASIC的成本就会大大降低。此外,小面积晶片可用于各种边缘计算设备。为了减少内存使用,在特征金字塔生成过程中,我们采用跨通道池化[6]对特征图进行压缩。这样,在生成特征金字塔时,带有目标检测器的CSPNet可以减少PeleeNet 75%的内存使用。

由于CSPNet能够提高CNN的学习能力,因此我们使用更小的模型来达到更好的精度。我们提出的模型可以在GTX 1080ti上以109 fps实现50%的COCO AP50。由于CSPNet可以有效地减少大量的内存流量,我们提出的方法可以在Intel Core i9-9900K上以52fps的速度实现40%的COCO AP50。此外,由于CSPNet可以显著降低计算瓶颈,而精确融合模型(EFM)可以有效降低所需的内存带宽,因此我们提出的方法在Nvidia Jetson TX2上可以在49 fps下实现42%的COCO AP50。

2.相关工作

CNN架构设计. 在ResNeXt[39]中,Xie等人首先证明了基数比宽度和深度维度更有效。DenseNet[11]由于采用了大量重用特征的策略,可以显著减少参数和计算量。它将前面所有层的输出特性串联起来作为下一个输入,这可以被认为是最大化基数的方式。SparseNet[46]将密集连接调整为指数间隔连接,可以有效提高参数利用率,从而获得更好的结果。Wang等人通过梯度组合的概念进一步解释了为什么高基数和稀疏连接可以提高网络的学习能力,并开发了partial ResNet (PRN)[35]。为了提高CNN的推理速度,Ma等[24]引入了四条需要遵循的准则,设计了ShuffleNet-v2。Chao等人[1]提出了一种称为Harmonic DenseNet (HarDNet)的低内存流量CNN和一种指标Convolutional Input/Output(CIO),后者是DRAM流量与真实测量的DRAM流量成比例的近似。
实时目标检测器. 最著名的两个实时目标检测器是YOLOv3[29]和SSD[21]。基于SSD的LRF[38]和RFBNet[19]可以在GPU上实现SOTA的实时目标检测性能。近年来,基于anchor-free的目标检测器[3,45,13,14,42]已成为主流的目标检测系统。这种类型的两个目标检测器是CenterNet[45]和CornerNet-Lite[14],它们在效率和功效方面都表现得非常好。对于CPU或移动GPU上的实时对象检测,基于ssd的Pelee[37],基于yolov3的PRN[35],以及基于Light-Head RCNN[17]的ThunderNet[25]都可以在目标检测实现卓越的表现。

3.方法

3.1 Cross Stage Partial Network

Cross Stage Partial Network. 主流CNN架构,如ResNet[8]、ResNeXt[37]、DenseNet[11],其输出通常是中间层输出的线性或非线性组合。因此,k层CNN的输出可以表示为:
在这里插入图片描述

其中F是从输入x0到目标y的映射函数,也是整个CNN的模型。Hk是CNN第k层的操作函数。Hk通常由一组卷积层和一个非线性激活函数组成。以ResNet和DenseNet为例,分别用式2和式3表示为:
在这里插入图片描述
在上述两个方程中,R和D分别表示残差层和稠密层的计算算子,这些算子通常由2个3个卷积层组成。
由上两个方程可知,无论是残差层还是稠密层,组成它们的每个卷积层的输入都接收到之前所有层的输出。在这种情况下,可以使梯度路径的长度最小化,使反向传播过程中的梯度流传播更加有效。然而,我们也知道,这种架构设计将使第k层传递梯度到所有的k1, k2,…,1层,并利用它来更新权重,这样会导致重复学习冗余信息。
近年来,一些研究尝试使用筛选的Hk(.)输入来提高学习能力和参数的使用。例如,SparseNet[44]使用指数间隔连接使Hk直接只与Hk-1、Hk-2、Hk-4、 Hk2i,…关联。ShuffleNetV2[23]使用split channels,使Hk直接只关联一半的Hk-1 channels,其方程可表示为S([Hk(xk−1[1 : c/2]), xk−1[(c/2 + 1) : c]]),其中S表示shuffle操作,xk-1[1: c/2]表示xk-1的前c/2的通道 。PyramidNet[7]和PRN[33]都是使用不同通道数的feature map构建ResNet来实现梯度分流的效果。
最先进的方法将重点放在优化每一层的Hi函数上,我们建议CSPNet直接优化F函数,如下所示:
在这里插入图片描述
其中x0沿着通道被分成两部分,可以表示为x0 = [x0’, x0"]。T是截断H1, H2,… ,Hk梯度流的过渡函数,M是用于混合两个分割部分的过渡函数。接下来我们将举例说明如何将CSPNet

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值