赞
踩
发表时间:2019
论文地址:https://arxiv.org/pdf/1911.11929.pdf
神经网络已经使最先进的方法在计算机视觉任务上实现了令人难以置信的结果,如目标检测。然而,这种成功在很大程度上依赖于昂贵的计算资源,这阻碍了使用廉价设备的人欣赏先进的技术。在本文中,我们提出了跨阶段部分网络(CSPNet),以缓解以往的工作从网络架构的角度需要大量的推理计算的问题。我们将这个问题归因于网络优化中的重复梯度信息。提出网络尊重梯度的可变性通过整合特征地图从开始和结束的网络阶段,在我们的实验中,在ImageNet数据集上实现同等甚至更高的精度减少20%的计算,在MS COCO目标检测数据集上的 A P 50 AP_{50} AP50得分超出了目前最先进的防范。CSPNet易于实现,并且足够通用,可以处理基于ResNet、ResNeXt和DenseNet的架构。源代码在 https://github.com/WongKinYiu/CrossStagePartialNetworks.
通过变得更深和更宽后,神经网络展现出了强有力的性能。然而,扩展神经网络的架构通常会带来更多的计算量,这使得大多数人都负担不起对象检测等繁重的计算任务。自从现实世界的的应用需要更短的推理时间、更小的设备,轻量级的计算逐渐受到了强烈的关注,这个计算机视觉算法带来了严重的挑战。虽然有一些方法设设计给移动端cpu的,他们所采用的深度可分离卷积技术(e depth-wise separable convolution)与工业集成电路设计不兼容,如用于边缘计算系统的应用专用集成电路(ASIC)。在本文的工作中,我们研究了一些先进方法的计算量,如:ResNet、ResNeXt和DenseNet。我们进一步的开发了计算效率高的组件,使上述网络能够在cpu上同时部署在移动gpu上,而不牺牲性能。
在这个研究中,我们提出了 Cross Stage Partial Network (CSPNet),设计CSPNet的目的是使这些架构能在减少计算量的同时取得丰富的梯度组合。这一目标是通过将base layer的feature map划分成两部分,然后将他们通过一个跨阶段的层次进行合并所实现的。我们的主要概念是通过分割梯度流,使梯度扩散到不同的网络路径。在这种方法中,我们通过切换连接和转换步骤,证实了传播的梯度信息可以有较大的相关差异。此外,CSPNet还大大减少了计算量,提高了推理速度和精度,如图1所示。
所提出的基于cspnet的对象检测器主要处理了以下三个问题:
1) Strengthening learning ability of a CNN 现有的CNN模型在轻量化后精度都会存在下降,所以我们希望增强CNN的学习能力,使其在被轻量化后可以保持精度。所提出的CSPNet可以被应用到 ResNet, ResNeXt, 和 DenseNet中。在使用CSPNet后,上述模型的计算量可以减少10%~20%,且在ImageNet中的图像分类任务中在精度上优于上述模型。
2) Removing computational bottlenecks 高计算量的bottleneck会导致要更多的计算周期来完成推理过程,然后使某些计算单元空闲。因此,我们希望我们能够在CNN的每一层均匀的分布计算量,从而提升计算单元的利用率,减少不必要的消耗。值得注意的是,所提出的CSPNet使PeleeNet的bottlenecks的计算量减少了一半。此外,在基于MS COCO数据集的目标检测实验中,我们所提出的模型在测试基于YOLO-V3的模型时,可以减少bottleneck中80%的计算量。
3) Reducing memory costs 动态随机存取存储器(DRAM)的晶片制造成本非常昂贵,同时也占用了大量的空间。如果可以有效的减少内存消耗,间可以减少ASIC成本。此外,小面积的晶圆可以被应用到不同的边缘设备中。在减少使用内存的过程中,采用cross-chanel pooling取压缩特征金字塔生成中feature maps。通过这种方法,基于CSPNet的目标检测器PeleeNet可以在生成特征金字塔减少75%的内存消耗。
由于CSPNet可以提升CNN的学习能力,因此我们使用更小的模型取得了更好的精度。我们提出的模型可以在GTX 1080ti上实现50%的COCO A P 50 AP_{50} AP50。由于CSPNet可以有效的减小内存流量,我们提出的方法可以在Intel i9-9900K中以52fps取得40%的COCO A P 50 AP_{50} AP50。此外,CSPNet还可以减低bottleneck的计算量,Exact Fusion Model(FFM)可以有效的减少内存带宽,我们提出的方法在NvidiaJetson TX2上以49 fps取得了42%的COCO A P 50 AP_{50} AP50。
CNN architectures design. 在ResNeXt中,Xie等人首先证明了基数(残差分支数,也就是特征的维度)比更宽和更深的特征更有效。由于DenseNet的策略采用了更多的重用特征,所以它可以显著的减少参数量和计算量。它连接了前面层的输出特征,这可以被认为是一种扩大基数(特征维度)的方法。SparseNet调整密集连接为指数间隔连接,可以有效的提升参数利用率,并使性能更好。Wang等人进一步的结论了为什么高基数的和稀疏连接可以通过梯度组合提升网络的学习能力,并设计了基于ResNet的PRN部件。为了提升CNN的推理速度,Ma等人引入了四个需要遵循的指导方针并设计了ShuffleNet-V2。Chao等人提出了一个低内存流量的CNN模型——HarDNet,并定义了评价指标CIO(Convolutionnal Input/Outpu),它是与实际DRAM流量成比例的近似值。
Real-time object detector. 最著名的两个实时目标检测器是Yolov3和SSD。基于SSD、LRF和RFBNet可以在GPU上取得最先进的实时目标检测效果。近年来,anchor-free【yoloV1是anchor-free的,v2-v4不是】的目标检测器成为了主流的研究方法。anchor-free的目标检测器有CenterNet和CornerNet,他们都在效率和性能上都取得了良好的效果。对于一些在CPU或者移动GPU上实时的目标检测器,基于SSD的Pelee、基于yoloV3的PRN和 Light-Head RCNN-based ThunderNet都取得了杰出的性能。
DenseNet 图2展示了DenseNet中一个stage的细节。DenseNet中的每一个stage包含了dense block和transition layer,且每一个dense block都由k个dense layer组成。第i个dense layer的输入将会和第i个dense layer的输出拼接,然后被连接到第i+1个dense layer中。
下面的公式可以展示上述机制的运算过程,其中*标注卷积运算,[a,b,c]表示连接a,b,c,
w
i
w_i
wi和
x
i
x_i
xi表示第i个dense layer的权重和输出。
x
1
=
w
1
∗
x
0
x
2
=
w
2
∗
[
x
0
,
x
1
]
⋮
x
k
=
w
k
∗
[
x
0
,
x
1
,
…
,
x
k
−
1
]
(1)
x1=w1∗x0x2=w2∗[x0,x1] ⋮xk=wk∗[x0,x1,…,xk−1]
如果使用反向传播算法来更新权值,则权值更新的方程可以写为:
其中,f为权值更新的函数, g i g_i gi表示传播到第i个致密层的梯度。我们可以发现,大量的梯度信息被重用来更新不同密集层的权重。这将导致不同的密集层重复学习同样的梯度信息。
Cross Stage Partial DenseNet. CSPDenseNet的单级架构如图2 (b)所示CSPDenseNet的一个stage由部分dense block和部分transition layer组成。在partial Dense block中,stage中的base layer的特征图x0被分为了两部分[x00,x01],前者x00直接连接到舞台的末端,后者x01将通过dense block。在一个过渡层中所涉及的所有步骤如下:首先, [x01, x1, …, xk],将达到过渡层。其次,这个过渡层的输出xT将与x00连接,并经历另一个过渡层,然后生成输出xU。CSPDenseNet的前馈传递和权值更新方程分别如方程3和公式4所示。
x
k
=
w
k
∗
[
x
01
,
x
1
,
…
,
x
k
−
1
]
x
T
=
w
T
∗
[
x
01
,
x
1
,
…
,
x
k
]
x
U
=
w
U
∗
[
x
01
,
x
T
]
(3)
xk=wk∗[x01,x1,…,xk−1]xT=wT∗[x01,x1,…,xk]xU=wU∗[x01,xT]
我们可以看到,来自dense layer的梯度是单独积分的。另一方面,没有通过密集层的特征图x00也被单独集成。对于更新权值的梯度信息,两边都不包含属于其他边的重复梯度信息。
总的来说,所提出的CSPDenseNet保留了DenseNet的特征重用特性的优点,但同时通过截断梯度流,防止了过多的重复梯度信息。该思想是通过设计一种分层特征融合策略来实现的,并应用于部分过渡层。
Partial Dense Block. 设计Partialdense block的目的是 1)增加梯度路径:通过分割和合并策略,梯度路径的数量可以增加一倍。由于跨阶段策略,可以缓解使用显式特征映射副本进行连接所造成的缺点;2)平衡每层的计算量:通常,densenet的一个基底层的通道数比增长率要大得多。由于在Partial dense block中参与dense操作的底层通道只占原始数量的一半,因此可以有效地解决近一半的计算瓶颈;3)减少内存流量:假设DenseNet中dense block的基本特征映射大小为w×h×c,增长率为d,总共有m个dense layer。然后,该dense block的CIO为 ( ( c × m ) + ( m 2 + m ) × d ) / 2 ((c×m)+(m^2 + m)×d)/2 ((c×m)+(m2+m)×d)/2,Partial dense block的CIO为 ( ( c × m ) + ( m 2 + m ) × d ) / 2 ((c×m)+(m^2 + m)×d)/2 ((c×m)+(m2+m)×d)/2。虽然m和d通常比c小得多,但Partial dense block最多能够节省网络一半的内存流量。
Partial Transition Layer. 设计部分过渡层(Partial Transition Layer)的目的是为了使梯度组合的差异最大化。部分过渡层是一种分层的特征融合机制,它采用了截断梯度流的策略,以防止不同的层学习到重复的梯度信息。在这里,我们设计了CSPDenseNet的两种变体来展示这种梯度流截断如何影响网络的学习能力。3 ©和3 (d)有两种不同的融合策略。CSP(首先融合)表示将两部分生成的特征映射连接起来,然后进行转换操作。如果采用这种策略,将会重用大量的梯度信息。至于CSP(最后融合)策略,来自密集块的输出将通过过渡层,然后与来自第1部分的特征映射进行连接。
如果采用CSP(最后融合)策略,梯度信息将不会被重用,因为梯度流将被截断。如果我们使用3中所示的四种体系结构来进行图像分类,则相应的结果如图4所示。可以看出,如果采用CSP(最后融合)策略进行图像分类,计算成本显著降低,而前1位的准确率仅下降0.1%。另一方面,CSP(融合优先)策略确实有助于计算成本的显著下降,但前1位的精度显著下降了1.5%。通过跨阶段使用拆分和合并策略,我们能够有效地减少信息集成过程中重复的可能性。从图4所示的结果中可以明显看出,如果我们能有效地减少重复的梯度信息,那么我们将会大大提高网络的学习能力。
Apply CSPNet to Other Architectures. CSPNet也可以很容易地应用于ResNet和ResNeXt,其体系结构如图5所示。由于只有一半的功能通道通过Res(X)块,它不需要再次引入瓶颈层(bottleneck laye)。这使得在理论上 FLoating-point OPerations(FLOP)固定时,内存访问成本(MAC)的下降。
Looking Exactly to predict perfectly. 我们提出了EFM,它为每个锚捕获一个合适的视场( Field of View,FoV),这提高了但阶段目标探测器的精度。对于分割任务,由于像素级标签通常不包含全局信息,因此通常最好考虑更大的patch,以获得更好的信息检索[22]。然而,对于图像分类和目标检测等任务,从图像级和边界框级标签中观察到的一些关键信息可能会被模糊。Li等人[15]发现,CNN从图像级标签中学习时,经常会分心,并得出结论,这是两阶段物体探测器优于一阶段物体探测器的主要原因之一。
Aggregate Feature Pyramid. 所提出的EFM能够更好地聚合初始特征金字塔。EFM基于YOLOv3 [29],它对每个GT对象只分配一个边界框。每个GT边界框对应一个超过IoU阈值的锚定框。如果锚框的大小等于网格单元的视野,则对应第s个尺度的网格单元,相应的边界框的下限为(s−1)尺度,上限为(s+1)尺度。因此,EFM从三个尺度中学习了特性。
Balance Computation. 由于从特征金字塔连接的特征映射是巨大的,它引入了大量的内存和计算成本。为了缓解这个问题,我们采用了Maxout技术来压缩特征映射。
我们将使用ILSVRC 2012中使用的ImageNet的图像分类数据集[2]来验证我们提出的CSPNet。此外,我们还使用MS COCO目标检测数据集[18]来验证所提出的EFM。拟议架构的细节将在附录中详细阐述。
ImageNet. 在ImageNet图像分类实验中,所有的超参数,如训练iter、学习率计划、优化器、数据增强等,我们都遵循Redmon等人的[29]定义的设置。对于基于resnet的模型和基于resnext的模型,我们设置了800万个训练iter。对于基于densenet的模型,我们设置了160万个训练iter。我们将初始学习率设置为0.1,并采用多项式衰减学习率调度策略。动量衰减和重量衰减分别设为0.9和0.005。所有的架构都使用一个GPU,以128的批量规模进行普遍训练。最后,我们使用ILSVRC 2012的验证集来验证我们的方法。
MS COCO. 在MS COCO目标检测实验中,所有超参数也遵循Redmon等人[29]中定义的设置。我们总共进行了50万个训练iter。我们采用步进衰减学习率调度策略,分别在40万步和45万步处乘以0.1倍。动量衰减和重量衰减分别设为0.9和0.0005。所有架构都使用一个GPU来执行64批大小的多规模训练。最后,采用COCO测试开发集对我们的方法进行了验证。
Ablation study of CSPNet on ImageNet. 在CSPNet上进行的消融实验中,我们以PeleeNet [37]为基线,并使用ImageNet来验证CSPNet的性能。我们使用不同的部分比γ和不同的特征融合策略进行消融研究。表1为CSPNet的消融研究结果。在表1中,SPeleeNet和PeleeNeXt分别是向PeleeNet引入稀疏连接和群卷积的体系结构。至于CSP(融合优先)和CSP(融合最后),这是两种验证部分过渡好处的策略。
从实验结果来看,如果在跨阶段部分密集块上只使用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 [35]和ThunderNet[25],来进行比较。PRN是用于比较的特征金字塔结构,而带上下文增强模块(CEM)和空间注意模块(SAM)是用于比较的全局融合结构。我们设计了一个全局融合模型(GFM)来与所提出的EFM进行比较。此外,GIoU [30]、SPP和SAM也被应用于EFM进行消融研究。表2中所列的所有实验结果均采用CSPPeleeNet为骨干。
从实验结果中可以看出,所提出的EFM比GFM慢2 fps,但其AP和AP50分别显著提高了2.1%和2.4%。虽然GIoU的引入可以使AP升级0.7%,但AP50却显著降低了2.7%。然而,对于边缘计算来说,真正重要的是对象的数量和位置,而不是它们的坐标。因此,我们将不会在后续的模型中使用GIoU训练。与SPP增加的FoV机制相比,SAM所使用的注意机制可以获得更好的帧率和AP,因此我们使用EFM(SAM)作为最终架构。此外,虽然具有swish激活的CSPPeleeNet可以将AP提高1%,但其操作需要一个硬件设计上的查找表来加速,我们最终也放弃了swish激活功能。
我们将所提出的CSPNet应用于ResNet-10 [7]、ResNeXt-50 [39]、PeleeNet [37]和DenseNet-201-Elastic[36],并与最先进的方法进行了比较。实验结果如表3所示。
实验结果证实,无论是基于resNet的模型、基于resnext的模型,还是基于densenet的模型,当引入CSPNet的概念时,计算负载至少降低了10%,精度要么保持不变,要么保持提高。引入CSPNet的概念对于改进轻量级模型特别有用。例如,与ResNet-10相比,CSPResNet-10可以提高1.8%的准确率。对于PeleeNet和DenseNet-201-弹性,CSPPeleeNet和CSPDenseNet-201-弹性可以分别减少13%和19%的计算,并稍微提高或保持精度。对于ResNeXt-50,CSPResNeXt-50可以减少22%的计算,将前1的精度提高到77.9%。
如果与最先进的轻量级模型-EfficientNet-b0相比,虽然在批量大小为2048时,其精度可以达到76.8%,但当实验环境与我们的模型相同时,即只使用一个GPU,但EfficientNet-b0的精度只能达到70.0%。事实上,EfficientNet-b0所使用的swish激活函数和SE块在移动GPU上并不有效。在EfficientNet-EdgeTPU的开发过程中也进行了类似的分析。
在这里,为了展示CSPNet的学习能力,我们在CSPPeleeNet中引入了swish和SE,然后与效率EfficientNet-b0*进行了比较。在本实验中,SECSPPeleeNet-swish减少了3%的计算量,提高了1.1%的前1位精度。
将提出的CSPResNeXt-50与ResNeXt-50 [39]、ResNet-152 [7]、DenseNet-264 [11]和HarDNet-138s [1]进行了比较,无论参数数量、计算量和最高精度如何,CSPResNeXt-50都取得了最好的结果。在10-crop测试中,CSPResNeXt-50的性能也优于Res2Net-50 [5]和Res2NeXt-50 [5]。
在目标检测任务中,我们针对三个目标场景:(1)real-time on GPU:我们采用CSPResNeXt50与PANet(SPP)[20];(2)real-time on mobile GPU:采用CSPPelee、CSPPeleeNet参考和提出的EFM(SAM);(3) real-time on CPU: 我们采用CSPPeleeNet和NeT参考和PRN [35]。表4列出了上述模型与最先进的方法之间的比较。关于CPU和移动GPU的推理速度的分析,我们将在下一节中详细介绍。
如果与运行在30∼100fps的目标检测器相比,CSPResNeXt50与PANet(SPP)在AP、AP50和AP75中获得了最好的性能。他们的检出率分别为38.4%、60.6%和41.6%。如果与输入图像大小为512×512下的最先进的LRF [38]相比,CSPResNeXt50(SPP)比LRF的ResNet101好0.7% AP、1.5% AP50和1.1% AP75。如果与运行在100∼200fps的目标探测器相比,CSPPeleeNet与EFM(SAM)以与Pelee [37]相同的速度提高12.1%的AP50,并以与CenterNet [45]相同的速度增加4.1%的[37]。
如果与非常快的目标探测器,如ThunderNet[25],YOLOv3-tiny [29]和YOLOv3-tiny-PRN[35]相比,提出的使用PRN的CSPDenseNetb参考是最快的。它可以达到400 fps的帧率,比基于SNet49的ThunderNet快 133 fps。此外,在AP50上高0.5%。如果与ThunderNet146相比,CSPPeleeNet参考与PRN(3l)将帧率增加19帧/秒,同时保持相同的AP50水平。
Computational Bottleneck. 图7显示了PeleeNet-YOLO、PeleeNet-PRN和提议的CSPPeleeNet-EFM的每一层的BLOPS。从图7中可以明显看出,当头部集成了特征金字塔时,PeleeNet-YOLO就出现了计算瓶颈。PeleeNet-PRN的计算瓶颈发生在PeleeNet主干的过渡层上。对于提出的CSPPeleeNet-EFM,它可以平衡整体计算瓶颈,减少PeleeNet主干44%的计算瓶颈,减少PeleeNet-YOLO 80%的计算瓶颈。因此,我们可以说,所提出的CSPNet可以提供更高的硬件利用率。
Memory Traffic. 图8显示了ResNeXt50和提议的CSPResNeXt50的大小。提议的CSPResNeXt(32.6M)的CIO低于原来的ResNeXt50(34.4M)。此外,CSPResNeXt50删除了ResXBlock中的瓶颈层,并保持了相同数量的输入通道和输出通道,这在Ma等人的[24]中显示,当流量固定时,这将具有最低的MAC和最有效的计算。较低的CIO和FLOPs使我们的CSPResNeXt50在计算方面比普通的ResNeXt50高出22%。
Inference Rate. 我们进一步评估了所提出的方法是否能够部署在具有移动GPU或CPU的实时检测器上。我们的实验基于NVIDIA Jetson TX2和Intel Core i9-9900K,使用OpenCV DNN模块评估CPU的推理率。我们不采用模型压缩或量化来进行公平的比较。结果如表5所示。
如果我们比较在CPU上执行的推理速度,CSPDense-NetbRef.-PRN接收到的AP50高于SNet49- TunderNet、YOLOv3-tiny和YOLOv3-微型PRN,并且在帧率方面也分别超过了55帧/秒、48帧/秒和31帧/秒。另一方面,CSPPeleeNet Ref.-PRN(3l)达到了与SNet146-雷网相同的精度水平,但在CPU上显著提高了20帧/秒的帧率。
如果我们比较在移动GPU上执行的推理速度,我们提出的EFM将是一个很好的模型。由于我们提出的EFM可以大大减少在生成特性金字塔时的内存需求,因此在内存带宽受限的移动环境下工作绝对是有益的。例如,CSPPeleeNet Ref.-EFM(SAM)可以比YOLOv3-tini有更高的帧率,其AP50比YOLOv3-tini高11.5%,这是显著的提升。
对于相同的CSPPeleeNet参考文献。虽然EFM(SAM)在GTX 1080ti上比PRN(3l)慢62 fps,但在Jetson TX2上达到41 fps,比PRN(3l)快3 fps,AP50 4.6%。
我们已经提出了CSPNet,使最先进的方法,如ResNet,ResNeXt,和DenseNet被轻量化并应用到移动gpu或cpu。其中一个主要的贡献是,我们已经认识到冗余梯度信息问题,导致低效的优化和昂贵的推理计算。我们提出利用跨阶段特征融合策略和截断梯度流来增强学习特征在不同层内的变异变性。此外,我们还提出了EFM,它结合了Maxout操作来压缩从特征金字塔生成的特征映射,这在很大程度上减少了所需的内存带宽,因此推断足够有效,可以与边缘计算设备兼容。实验表明,在实时GPU和CPU中,EFM在移动GPU和CPU的精度和推理率方面显著优于竞争对手。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。