天天看点

论文阅读:CVPR2019 | CSPNet: A New Backbone that can Enhance Learning Capability of CNN前言一、Introduction二、Method三、 result总结

文章目录

  • 前言
  • 一、Introduction
  • 二、Method
    • Cross Stage Partial Network
    • Partial Dense Block
    • Partial Transition Layer
    • Exact Fusion Model
  • 三、 result
  • 总结

前言

神经网络使最先进的方法在计算机视觉任务(如目标检测)上取得了令人难以置信的结果。然而,这样的成功在很大程度上依赖于昂贵的计算资源,这阻碍了拥有廉价设备的人们欣赏先进技术。本文从网络结构的角度出发,提出了跨级部分网络(Cross Stage Partial Network,CSPNet),以缓解以往工作中推理计算量大的问题。我们将问题归因于网络优化中的重复梯度信息。所提出的网络通过集成网络阶段开始和结束时的特征图来尊重梯度的可变性,在我们的实验中,在ImageNet数据集上的计算量减少了20%,并且在MS Coco对象检测数据集上的AP50显著优于最先进的方法。CSPNet易于实现,并且足够通用,可以处理基于ResNet、ResNeXt和DenseNet的体系结构。

一、Introduction

在本研究中,设计CSPNet的主要目的是使该体系结构在减少计算量的同时实现更丰富的梯度组合。这一目的是通过将基本层的特征图划分为两部分,然后通过提出的跨级层次将它们合并来实现的。主要概念是通过分裂梯度流,使梯度流在不同的网络路径中传播。通过这种方式,证实了通过切换连接和转换步骤,传播的梯度信息可以有很大的相关差。此外,CSPNet可以大大减少计算量,提高推理速度和精度,如图1所示。本文提出的基于CSPNet的对象检测器解决了以下三个问题:

1)加强CNN的学习能力:现有的CNN在轻量化后,其准确率会有很大的下降,所以我们希望加强CNN的学习能力,使其在轻量化的同时保持足够的准确性。所提出的CSPNet可以很容易地应用于ResNet、ResNeXt和DenseNet。在上述网络上应用CSPNet后,计算量可从10%降至20%,但在进行ImageNet[2]上的图像分类任务时,其准确率优于ResNet、ResNeXt、DenseNet、HarDNet、Elastic和Res2Net。

2)去除计算瓶颈:过高的计算瓶颈会导致更多的周期来完成推理过程,或者一些运算单元经常空闲。因此,作者希望能够在CNN的每一层上均匀分配计算量,从而有效地提高每个计算单元的利用率,从而减少不必要的能源消耗。值得注意的是,所提出的CSPNet使PeleeNet的计算瓶颈减少了一半。此外,在基于MS Coco数据集的目标检测实验中,在基于YOLOv3的模型上测试时,我们提出的模型可以有效地减少80%的计算瓶颈。

3)降低存储成本:动态随机存取存储器(DRAM)晶片制造成本高,占用空间大。如果能有效地降低存储成本,将大大降低ASIC的成本。此外,小面积晶圆可以用于各种边缘计算设备。在减少内存使用方面,在特征金字塔生成过程中,我们采用跨通道池来压缩特征映射。这样,当生成特征金字塔时,使用所提出的对象检测器的CSPNet可以减少75%的PeleeNet内存使用量。

二、Method

Cross Stage Partial Network

论文阅读:CVPR2019 | CSPNet: A New Backbone that can Enhance Learning Capability of CNN前言一、Introduction二、Method三、 result总结

figure2:(A)DenseNet和(B)(CSPDenseNet)的插图。CSPNet将底层的特征图分成两部分,一部分经过密集块和过渡层,另一部分与传输的特征图结合进入下一阶段。

总体而言,本文提出的CSP-DenseNet保留了DenseNet特征重复使用的优点,同时通过截断梯度流防止了过多的重复梯度信息。该思想通过设计层次化特征融合策略实现,并应用于部分过渡层。DenseNet一个很明显的缺点就是不断的进行特征重用导致了很多冗余的计算量和冗余的特征。Cross Stage Partial Network说白了就是砍了一半的特征进入dense layer。

Partial Dense Block

目的是为了:1)增加渐变路径:通过拆分合并策略,可以将渐变路径的数量增加一倍。由于采用了跨阶段的策略,可以缓解使用显式特征地图副本进行拼接所带来的缺点。2)各层均衡计算:通常,DenseNet基础层的通道数远大于增长率。由于在局部密集块中参与密层操作的基层通道只占原来数量的一半,因此可以有效地解决近一半的计算瓶颈;3) 减少内存流量:假设DenseNet中密集块的基本特征图大小为w×h×c,增长率为d,共有m个致密层。然后, dense block的CIO为(c×m)+((m2+m)×d)/2,partial dense block的CIO为((c×m)+(m2+m)×d)/2。当m和d通常远小于c时,一个部分密块最多可以节省网络一半的内存流量。

论文阅读:CVPR2019 | CSPNet: A New Backbone that can Enhance Learning Capability of CNN前言一、Introduction二、Method三、 result总结

图3

Partial Transition Layer

设计partial transition layers的目的是最大化梯度组合的差异。partial transition layers是一种层次化的特征融合机制,它采用截断梯度流的策略来防止不同的层学习重复的梯度信息。作者设计了CSPDenseNet的两个变体,以说明这种梯度流截断是如何影响网络的学习能力的。图3(C)和图3(D)显示了两种不同的融合策略。CSP(Fusion First)指的是将两部分生成的特征映射进行拼接,然后进行转换操作。如果采用这种策略,将会重复利用大量的梯度信息。对于CSP(Fusion Last)策略,稠密块的输出将经过过渡层,然后与第一部分的特征图进行拼接。如果采用CSP(Fusion Last)策略,由于梯度流被截断,梯度信息将不会被重用。如果我们使用3中所示的4种体系结构来进行图像分类,相应的结果如图4所示。可以看出,如果采用CSP(Fusion Last)策略来进行图像分类,则计算成本显著降低,但TOP-1准确率仅下降0.1%。另一方面,CSP(融合优先)策略确实有助于显著降低计算成本,但TOP-1精度显著下降1.5%。通过使用跨阶段的拆分和合并策略,我们能够有效地减少信息集成过程中出现重复的可能性。从图4所示的结果可以明显看出,如果能有效地减少重复的梯度信息,网络的学习能力将会大大提高。

论文阅读:CVPR2019 | CSPNet: A New Backbone that can Enhance Learning Capability of CNN前言一、Introduction二、Method三、 result总结

图4

Exact Fusion Model

这部分不是重点就不提了

三、 result

论文阅读:CVPR2019 | CSPNet: A New Backbone that can Enhance Learning Capability of CNN前言一、Introduction二、Method三、 result总结

参数量没变,计算量减少了。

总结

就是一种通道拆分的策略,来减少计算量。简洁明了。感觉这种操作在ResNext,Xception里面差不多。论文中整的那么玄乎,啥梯度截断,更丰富的梯度组合。直接暴力拆分,通道砍一半进入Denseblock,简单粗暴的减少所谓的特征重用。这个方法想提升精度感觉有点够呛,实验也证明了,精度没有啥提升。感觉创新点不是很大吧,相当于对网络的一个优化操作。

继续阅读