【翻译】CSPNet: A New Backbone that can Enhance Learning Capability of CNN

论文链接:https://openaccess.thecvf.com/content_CVPRW_2020/papers/w28/Wang_CSPNet_A_New_Backbone_That_Can_Enhance_Learning_Capability_of_CVPRW_2020_paper.pdf

摘要

神经网络使最先进的方法能够在计算机视觉任务(例如对象检测)上取得令人难以置信的结果。然而,这样的成功很大程度上依赖于昂贵的计算资源,这阻碍了拥有廉价设备的人们欣赏先进技术。在本文中,我们提出了跨阶段部分网络(CSPNet)来缓解以前的工作需要从网络架构角度进行大量推理计算的问题。我们将问题归因于网络优化中的重复梯度信息。所提出的网络通过从网络阶段的开始和结束整合特征图来尊重梯度的可变性,在我们的实验中,这在ImageNet数据集上以等效甚至更高的精度将计算减少了20%,并且显着优于状态MS COCO对象检测数据集上的AP50方面的最先进方法。CSPNet易于实现且通用性足以应对基于ResNet、ResNeXt和DenseNet的架构。

1.介绍

当神经网络变得更深[8, 37, 11]和更宽[38]时,它已被证明特别强大。然而,扩展神经网络的架构通常会带来更多的计算量,这使得大多数人无法承受诸如目标检测之类的计算量大的任务。轻量级计算逐渐受到越来越多的关注,因为现实世界的应用通常需要在小型设备上进行较短的推理时间,这对计算机视觉算法提出了严峻的挑战。尽管有些方法是专门为移动CPU设计的[10, 30, 9, 32, 41, 23],但它们采用的深度卷积通常与工业IC设计不兼容,例如用于边缘的专用集成电路(ASIC)-计算系统。在这项工作中,我们研究了ResNet、ResNeXt和DenseNet等最先进方法的计算负担。我们进一步开发了计算效率高的组件,使上述网络能够部署在CPU和移动GPU上,而不会牺牲性能。
  在这项研究中,我们介绍了跨阶段局部网络(CSPNet)。设计CSPNet的主要目的是让这个架构在减少计算量的同时,实现更丰富的梯度组合。该目标是通过将基础层的特征图划分为两部分,然后通过提出的跨阶段层次结构将它们合并来实现的。我们的主要概念是通过对梯度流进行分裂,使梯度流通过不同的网络路径传播。通过这种方式,我们已经确认传播的梯度信息可以通过切换连接和过渡步骤具有很大的相关性差异。此外,CSPNet可以大大减少计算量,提高推理速度和准确性,如图1所示。提出的基于CSPNet的目标检测器处理以下三个问题:
在这里插入图片描述
  1) 加强CNN的学习能力 现有的CNN在轻量化后准确率大幅下降,所以我们希望加强CNN的学习能力,使其在被轻量化的同时能够保持足够的准确率。提出的CSPNet可以很容易地应用于ResNet、ResNeXt和DenseNet。在上述网络上应用CSPNet后,计算量可以从10%减少到20%,但在准确性方面,在ImageNet[3]上进行图像分类任务,它的性能优于ResNet[8]、ResNeXt[37]、DenseNet[11]、HarDNet[2]、Elastic[34]和Res2Net[5]。
  2)去除计算瓶颈 计算瓶颈太高会导致更多的周期来完成推理过程,或者一些算术单元会经常空闲。因此,我们希望能够在CNN中均匀分配每一层的计算量,从而有效提升每个计算单元的利用率,从而减少不必要的能耗。值得注意的是,所提出的CSPNet使PeleeNet[35]的计算瓶颈减少了一半。此外,在基于MS COCO[17]数据集的对象检测实验中,我们提出的模型在基于YOLOv3的模型上进行测试时可以有效减少80%的计算瓶颈。
  3)降低内存成本 动态随机存取存储器(DRAM)的晶圆制造成本非常昂贵,而且占用的空间也很大。如果能够有效地降低内存成本,那么他/她将大大降低ASIC的成本。此外,小面积晶圆可用于各种边缘计算设备。我们采用跨通道池化[6]在特征金字塔生成过程中压缩特征图。这样,在生成特征金字塔时,提出的带有CSPNet检测器的可以减少PeleeNet上75%的内存使用量。
  由于CSPNet能够提升CNN的学习能力,因此我们使用较小的模型在GTX 1080ti上以109 fps的速度实现50% COCO AP50。由于CSPNet可以有效地减少大量内存流量,我们提出的方法可以在英特尔酷睿i9-9900K上以52 fps的速度实现40% COCO AP50。此外,由于CSPNet可以显着降低计算瓶颈,并且精确融合模型(EFM)可以有效地减少所需的内存带宽,我们提出的方法可以在Nvidia Jetson TX2上以49 fps的速度实现 42% COCO AP50。

2.相关工作

CNN架构设计。在ResNeXt[37]中,Xie等人首先证明基数比宽度和深度的维度更有效。由于采用了大量重用特征的策略,DenseNet[11]可以显着减少参数和计算的数量。并将前面所有层的输出特征连接起来作为下一个输入,这可以被认为是最大化基数的方法。SparseNet[44]将密集连接调整为指数间隔连接可以有效提高参数利用率,从而产生更好的结果。Wang等人通过梯度组合的概念进一步解释了为什么高基数和稀疏连接可以提高网络的学习能力,并开发了部分ResNet(PRN)[33]。为了提高CNN的推理速度,Ma等人[23]引入了四个要遵循的准则并设计了ShuffleNet-v2。Chao等人[2]提出了一种称为Harmonic DenseNet (HarDNet) 的低内存流量CNN和一个度量卷积输入/输出(CIO),它是与实际DRAM流量测量成比例的DRAM流量的近似值。
实时物体检测器。最著名的两个实时物体检测器是YOLOv3[28]和SSD[20]。基于SSD,LRF[36]和RFBNet[18]可以在GPU上实现最先进的实时对象检测性能。最近,基于无锚的物体检测器[4, 43, 13, 14, 40]已成为主流的物体检测系统。这种类型的两个目标检测器是CenterNet[43]和CornerNet-Lite[14],它们在效率和功效方面都表现得非常好。对于CPU或移动GPU上的实时对象检测,基于SSD的Pelee[35]、基于YOLOv3的PRN[33]和基于Light-Head RCNN[16]的ThunderNet[25]在对象检测方面都获得了出色的性能。

3.方法

3.1.跨阶段局部网络

跨阶段局部网络。主流CNN架构,如ResNet[8]、ResNeXt[37]、DenseNet[11],它们的输出通常是中间层输出的线性或非线性组合。因此,一个k层CNN的输出可以表示如下:
在这里插入图片描述
其中F是输入到目标y的映射函数,也是整个CNN的模型。至于,就是CNN第k层的操作函数。通常,由一组卷积层和一个非线性激活函数组成。如果我们以ResNet 和DenseNet为例,它们可以分别用等式2和等式3表示如下:
在这里插入图片描述
上述两个方程中,R和D分别代表残差层和密集层的计算算子,这些算子通常由2∼3个卷积层组成。
  从上面两个等式来看,无论是残差层还是密集层,组成它们的每个卷积层的输入都会接收到之前所有层的输出。在这种情况下,梯度路径的长度可以最小化,并使梯度流在反向传播过程中的传播更加有效。但是,我们也知道这种架构设计会让第k层将梯度传递给所有k-1, k-2, …, 1层并用它来更新权重,这会导致重复学习冗余信息。
  最近,一些研究尝试使用筛选后的的输入来提高学习能力和参数利用率。例如,SparseNet[44]使用指数间隔连接使仅与、、、…、、…直接相关。ShuffleNetV2[23]使用拆分通道使仅与通道的一半直接相关,其方程可以表示为,其中S表示shuffle操作,表示的第1个到c/2个通道。至于PyramidNet[7]和PRN[33],它们都是使用通道数不等的特征图来构建ResNet来实现梯度分流的效果。
  最先进的方法将重点放在优化每一层的函数上,我们提出CSPNet直接优化F函数如下:
在这里插入图片描述
其中沿通道分为两部分,可以表示为。T是用于截断、、…、的梯度流的过渡函数,M是用于混合两个分段部分的过渡函数。接下来,我们将展示如何将CSPNet集成到DenseNet中的示例,并解释如何解 CNN中学习重复信息的问题。
在这里插入图片描述
DenseNet。图2(a)显示了Huang等人[11]提出的DenseNet的一个阶段的详细结构。DenseNet的每个阶段都包含一个密集块和一个过渡层,每个密集块由k个密集层组成。第i个密集层的输出将与第i个密集层的输入连接,连接后的结果将成为第(i+1)个密集层的输入。表示上述机制的方程可以表示为:
在这里插入图片描述
其中*表示卷积算子,[, , …]表示连接, , …,和分别是第i个密集层的权重和输出。
  如果使用反向传播来更新权重,则权重更新的方程可以写为:
在这里插入图片描述
其中是第i个密集层权重更新的函数,表示传播到第i个密集层的梯度。我们可以发现大量梯度信息被重用于更新不同密集层的权重。这将导致不同的密集层重复学习复制的梯度信息。
跨阶段局部网络。所提出的CSPDenseNet的one-stage架构如图2(b)所示。CSPDenseNet的一个阶段由部分密集块和部分过渡层组成。在部分密集块中,阶段中基础层的特征图通过通道分为两部分。在和之间,前者直接连接到阶段的末尾,而后者会经过一个密集块。部分过渡层涉及的所有步骤如下:首先,密集层的输出[ , , …, ]将经历过渡层。其次,该过渡层的输出将与连接并经过另一个过渡层,然后生成输出。CSPDenseNet的前馈传递和权重更新方程分别如方程7和方程8所示。
在这里插入图片描述
  我们可以看到来自密集层的梯度是单独集成的。另一方面,没有经过密集层的特征图也被单独集成。对于更新权重的梯度信息,双方都不包含属于另一方的重复梯度信息。
  总体而言,所提出的CSPDenseNet保留了DenseNet特征重用特性的优势,但同时通过截断梯度流来防止过多的重复梯度信息。这个想法是通过设计分层特征融合策略来实现的,并用于部分过渡层。
局部密集块。设计部分密集块的优点是:1.) 增加梯度路径:通过分裂合并策略,梯度路径的数量可以增加一倍。由于采用了跨阶段策略,可以缓解使用显式特征图副本进行级联带来的缺点;2.) 每层的平衡计算:通常,DenseNet的基础层中的通道数远大于增长率。由于在一个部分密集块中参与密集层操作的基础层通道仅占原始数量的一半,因此可以有效解决近一半的计算瓶颈;3.) 减少内存流量:假设DenseNet中一个密集块的基本特征图大小为w×h× c,增长率为d,总共有m个密集层。那么,那个dense block的CIO是,局部dense block的CIO是。虽然m和d通常远小于c,但部分密集块最多可以节省网络一半的内存流量。
在这里插入图片描述
在这里插入图片描述
局部过渡层。设计局部过渡层的目的是最大化梯度组合的差异。局部过渡层是一种分层特征融合机制,它使用截断梯度流的策略来防止不同层学习重复的梯度信息。在这里,我们设计了CSPDenseNet的两种变体,以展示这种梯度流截断如何影响网络的学习能力。图3©和图3(d)显示了两种不同的融合策略。CSP(fusion first)是指将两部分生成的特征图拼接起来,然后进行过渡操作。如果采用这种策略,将会重用大量的梯度信息。对于CSP(fusion last)策略,dense block的输出会经过transition layer,然后与part 1的feature map做concatenation。如果采用CSP(fusion last)策略,梯度信息由于梯度流被截断,因此不会被重用。如果我们使用图3所示的四种架构进行图像分类,对应的结果如图4所示。可以看出,如果采用CSP(fusion last)策略进行图像分类,计算成本显着下降,但是top-1的准确率只下降了0.1%。另一方面,CSP(融合优先)策略确实有助于计算成本的显着下降,但top-1的准确率显着下降了1.5%。通过跨阶段使用拆分合并策略,我们能够有效降低信息集成过程中重复的可能性。从图4所示的结果可以看出,如果能够有效减少重复的梯度信息,网络的学习能力将得到极大的提升。
在这里插入图片描述

应用CSPNet到其他架构。CSPNet也可以应用于ResNet和ResNeXt,架构如图5所示。由于只有一半的特征通道经过Res(X)Blocks,因此不再需要引入瓶颈层。当浮点操作(FLOP)固定时,这使得内存访问成本(MAC)的达到理论下限。

3.2.精确融合模型

看起来完全可以完美预测。我们提出EFM为每个锚捕获适当的感受野,这提高了单级目标检测器的准确性。对于分割任务,由于像素级标签通常不包含全局信息,因此通常更可取的是考虑更大的patches以获得更好的信息检索[21]。然而,对于图像分类和对象检测等任务,从图像级和边界框级标签观察时,一些关键信息可能会模糊不清。Li等人[15]发现CNN在从图像级标签中学习时经常会分心,并得出结论认为这是两阶段目标检测器优于单阶段目标检测器的主要原因之一。
  聚合特征金字塔。提出的EFM能够更好地聚合初始特征金字塔。EFM基于YOLOv3[28],它在每个ground truth对象之前准确分配一个边界框。每个真实边界框对应一个超过阈值IoU的锚框。如果anchor box的大小等于grid cell的感受野,那么对于第s个scale的grid cell,对应的bounding box的下界为(s − 1)个scale,上界为(s + 1)个scal。因此,EFM组合了三个尺度的特征。
  平衡计算。由于来自特征金字塔的级联特征图是巨大的,它引入了大量的内存和计算成本。为了缓解这个问题,我们结合了Maxout技术来压缩特征图。

4.实验

我们使用ImageNet图像分类数据集[3]来验证提出的CSPNet。并使用MS COCO对象检测数据集[17]来验证提出的CSPNet和EFM。

4.1. 实施细则

ImageNet。在ImageNet图像分类实验中,所有超参数,如训练步骤、学习率计划、优化器、数据增强等,我们都遵循Redmon等人[28]中定义的设置。对于基于ResNet的模型和基于ResNeXt的模型,我们设置了8,000,000个训练步骤。对于基于DenseNet的模型,我们设置了1,600,000个训练步骤。我们将初始学习率设置为0.1,并采用多项式衰减学习率调度策略。动量衰减和权重衰减分别设置为0.9和0.005。所有架构都使用单个GPU以128的批量大小进行通用训练。最后,我们使用ILSVRC 2012的验证集来验证我们的方法。
MS COCO。在MS COCO对象检测实验中,所有超参数也遵循Redmon等人[28]中定义的设置。我们总共进行了500,000个训练步骤。我们采用步进衰减学习率调度策略,并分别在400,000 步和450,000步处乘以因子0.1。动量衰减和权重衰减分别设置为0.9和0.0005。所有架构都使用单个GPU以64的批量大小执行多尺度训练。最后,采用COCO测试开发集来验证我们的方法。

4.2. 消融实验

CSPNet在ImageNet上的消融研究。在CSPNet上进行的消融实验中,我们采用PeleeNet[35]作为基线,并使用ImageNet来验证CSPNet的性能。我们使用不同的部分比率γ和特征融合策略进行消融研究。表1显示了在CSPNet上的消融研究结果。至于CSP(先融合)和CSP(最后融合),它们被提议用于验证部分过渡的好处。
在这里插入图片描述
  从CSP(fusion last)的实验结果来看,为了减少冗余信息的学习而设计的部分过渡层可以取得非常好的性能。例如,当计算量减少21% 时,精度仅下降0.1%。需要注意的一点是,当γ=0.25时,计算量减少了11%,但准确度提高了0.1%。与基线PeleeNet相比,所提出的CSPPeleeNet实现了最佳性能,它可以减少13%的计算量,但同时将精度提升0.2%。如果我们将部分比率调整为γ=0.25,我们可以将准确率提高0.8%,并减少3% 的计算量。
  MS COCO上EFM的消融研究。接下来,我们对EFM进行了消融研究,并比较了图6所示的三种不同的特征融合策略。我们选择PRN[33]和ThunderNet[25]进行比较。带有上下文增强模块(CEM)和空间注意模块(SAM)的PRN和ThunderNet分别是FPN和GFM架构。我们还设计了一个GFM来与提议的EFM进行比较。此外,GIoU[29]、SPP和SAM也适用于EFM。表2中列出的所有实验结果均采用CSPPeleeNet作为主干。
在这里插入图片描述
在这里插入图片描述
  实验结果表明,所提出的EFM比GFM慢2 fps,但其AP50显着提升了 2.4%。GIoU可以将AP提升0.7%,但AP50显着下降2.7%。对于边缘计算,真正重要的是对象的数量和位置。因此,我们不会在后续模型中使用 GIoU 训练。SAM 可以获得比SPP更好的帧率和AP,因此我们使用EFM(SAM)作为最终架构。

4.3. ImageNet图像分类

我们将CSPNet应用于ResNet-10[8]、ResNeXt-50[37]、DenseNet-201[11]、PeleeNet[35]和DenseNet-201-Elastic[34],并与最先进的技术方法进行比较。实验结果如表3所示。
在这里插入图片描述
  实验结果证实,无论是哪种架构,当引入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%。
  提出的CSPResNeXt-50也与ResNet-152[8]、DenseNet-264[11]和HarDNet-138s[2]进行了比较,无论 #parameter、BFLOPs和top-1精度,CSPResNeXt-50都达到了最好结果。对于10-crop测试,CSPResNeXt-50优于 Res2NeXt-50[5]。

4.4. MS COCO目标检测

在这里插入图片描述
  在目标检测任务中,我们针对三个目标场景:(1)GPU 实时:我们采用带有PANet(SPP)的CSPResNeXt50[19]; (2) 在移动GPU上的实时性:我们采用基于CSPDenseNet的模型和提出的EFM(SAM); (3)在CPU上实时:我们采用基于CSPDenseNet的模型和PRN[33]。上述模型与最先进方法的比较如表4所示。关于CPU和移动GPU的推理速度的分析将在下一小节详细介绍。
  如果与以30∼100 fps运行的物体检测器相比,带有PANet(SPP) 的CSPResNeXt50在AP、AP50和AP75中实现了最佳性能。他们分别获得了38.4%、60.6% 和41.6%的检测率。如果在输入图像大小为512×512的情况下与LRF[36]相比,带有PANet(SPP)的CSPResNeXt50的性能优于带有LRF的ResNet101 0.7% AP、1.5% AP50和1.1% AP75。如果与以100∼200 fps运行的物体检测器相比,带有EFM(SAM)的CSPPeleeNet以与Pelee[35]和CenterNet[43]相同的速度分别提高了12.1%和4.1%的AP50。
  如果与 ThunderNet[25]、YOLOv3-tiny[28]和 YOLOv3-tiny-PRN[33]等非常快的物体检测器相比,提出的带有 PRN 的CSPDenseNetb参考是最快的。它可以达到 400 fps 的帧速率,即比使用 SNet49 的 ThunderNet 快 133 fps。此外,它在AP50上高出 0.5%。如果与ThunderNet146相比,带有 PRN (3l) 的 CSPPeleeNet Reference 将帧速率提高了 19 fps,同时保持与AP50相同的水平。

4.5. 分析

计算瓶颈。图 7 显示了 PeleeNet-YOLO、PeleeNet-PRN 和提议的 CSPPeleeNet-EFM 每一层的 BLOPS。PeleeNet-YOLO 的计算瓶颈出现在头部集成特征金字塔时,而 PeleeNet-PRN 的计算瓶颈出现在 PeleeNet 主干的过渡层上。至于提出的CSPPeleeNetEFM,它可以平衡整体计算瓶颈,减少PeleeNet主干44%的计算瓶颈,减少PeleeNet-YOLO 80%的计算瓶颈。因此,我们可以说所提出的CSPNet可以提供更高利用率的硬件。
在这里插入图片描述
  内存流量。图8显示了ResNeXt50和提出的CSPResNeXt50 每一层的大小。提议的 CSPResNeXt (32.6M) 的CIO低于原始ResNeXt50 (34.4M) 的CIO。此外,我们的 CSPResNeXt50 去除了 ResXBlock 中的瓶颈层,并保持输入通道和输出通道的相同数量,这在 Ma 等人[23]中表明,当 FLOPs 时,这将具有最低的 MAC 和最有效的计算 是固定的。低CIO和 FLOP 使我们的 CSPResNeXt50 在计算方面比普通 ResNeXt50 高出 22%。
在这里插入图片描述
  推理速率。我们进一步评估了所提出的方法是否能够部署在具有移动GPU或CPU的实时检测器上。实验基于 NVIDIA Jetson TX2 和 Intel Core i9-9900K。CPU 上的推理率使用 OpenCV DNN 模块进行评估。我们不采用模型压缩或量化来进行公平比较。结果如表5所示。
在这里插入图片描述
  如果我们比较在CPU上执行的推理速度,CSPDenseNetb Ref.-PRN 比 SNet49-TunderNet 获得更高的 AP50,并且在帧速率方面也比 SNet49-TunderNet 高 55 fps。另一方面,CSPPeleeNet Ref.-PRN (3l) 达到与 SNet146-ThunderNet 相同的精度水平,但在CPU上将帧速率显着提高了 20 fps。
  如果我们比较在移动GPU上执行的推理速度,我们提出的EFM可以大大降低生成特征金字塔时的内存需求,这绝对有利于在内存带宽受限的移动环境下运行。比如CSPPeleeNet Ref.-EFM(SAM)可以比YOLOv3-tiny有更高的帧率,其AP50比YOLOv3-tiny高11.5%。对于相同的 CSPPeleeNet 参考。骨干网,虽然EFM(SAM) 在 GTX 1080ti 上比 PRN (3l) 慢 62 fps,但在 Jetson TX2 上达到 41 fps,比 PRN (3l) 快 3 fps,并且AP50增加了 4.6%。

5.结论

我们提出了 CSPNet,它使 ResNet、ResNeXT 和 DenseNet 等最先进的方法能够针对移动GPU或CPU进行轻量化。主要贡献之一是我们已经认识到冗余梯度信息问题会导致优化效率低下和推理计算成本高昂。我们建议利用跨阶段特征融合策略和截断梯度流来增强不同层内学习特征的可变性。此外,我们提出了结合Maxout操作的EFM来压缩从特征金字塔生成的特征图,这在很大程度上减少了所需的内存带宽,因此推理足够有效以兼容边缘计算设备。通过实验,我们已经表明,在移动GPU和CPU上实时对象检测任务的准确性和推理率方面,所提出的带有EFM的CSPNet显着优于竞争对手。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值