VOVNet:高效目标检测backbone网络

摘要

在目标检测中,DenseNet表现良好,通过聚合不同感受野特征层的方式,保留了中间特征层的信息。它通过feature reuse 使得模型的大小和flops大大降低,但是,实验证明,DenseNet backbone更加耗时也增加了能耗:dense connection架构使得输入channel线性递增,导致了更多的内存访问消耗,进而导致更多的计算消耗和能耗。因此文章介绍了一种由OSA(one-shot-aggregation)模块组成的叫做VoVNet的高效体系结构。该网络在继承DenseNet的多感受野表示多种特征的优点的情况下,同时解决了密集连接效率低的问题。该网络性能优于DenseNet,而且速度也比DenseNet快2倍。
此外,VoVNet网络速度和效率也都优于ResNet,而且对于小目标检测的性能有了显著提高。
论文地址:https://arxiv.org/pdf/1904.09730.pdf

设计网络时考虑的因素

要设计高效的网络,目前大多数研究主要集中在通过使用深度卷积和1×1卷积瓶颈结构(一头大一头小,针对输入输出说的)来减少FLOPs和模型大小。
然而,减少FLOPs和模型大小并不总是保证减少GPU推理时间和实际能耗,FLOPs和模型大小只是衡量实用性的间接指标,基于这些指标的网络设计需要重新考虑。为了构建高效的网络体系结构,除了FLOPs和模型参数外,还需要考虑其他影响能量和时间消耗的因素。

MAC

这个因素之前的笔记也提到过。内存占用被归因于过滤器参数和中间特征映射。如果中间特征映射很大,即使使用相同的模型参数,内存访问的成本也会增加。因此,MAC覆盖了卷积参数和中间特征映射大小的内存占用,是网络设计的一个重要因素。具体来说计算每个卷积层的MAC如下:
M A C = h w ( c i + c o ) + k 2 c i c o MAC=hw(c_i+c_o)+k^2c_ic_o MAC=hw(ci+co)+k2cico

GPU计算效率

一般情况下,在一个设备中,每一个浮点运算都以相同的速度处理。但是,当网络部署在GPU上时,这是不合理的。这是因为GPU的并行处理机制,GPU能够及时地处理多个浮动进程。因此有效地充分的利用GPU的计算能力尤为重要。
随着计算数据张量的增大,GPU并行计算能力得到了更好的利用。而将一个大的卷积运算拆分成几个零碎的小运算则使得GPU计算效率低下,因为这样并行处理的计算量更少。在网络设计的背景下,这意味着如果行为函数相同,最好用较少的层组成网络。此外,采用额外的层会导致内核启动和同步,从而导致额外的时间开销。
因此,尽管深度卷积和1×1卷积瓶颈等技术可以减少运算次数,但由于采用了附加的1×1卷积,对GPU计算效率不利。一般来说,GPU的计算效率随模型结构的不同而不同。因此,为了验证网络结构的计算效率,作者引入了每秒浮点数(FLOP/s),它是通过将实际的GPU推断时间与总的浮点数相除来计算的。高FLOP/s意味着体系结构可以有效地利用GPU。

方法

OSA模块

Alt

图1 1聚合方法。(a) DenseNet的密集聚集在每个后续层聚集了所有以前的功能,这增加了线性输入通道的大小但只有几个新的输出。(b) 我们提出的一次聚合在最后一个特征映射中只连接一次所有特征,这使得输入大小保持不变,并且可以扩大新的输出通道。f表示卷积层,⊗表示串联。

文章提出一次性聚合(one-shot aggregation 即OSA)模块,该模块将其特征同时聚合到最后一层。如图1所示。每个卷积层包含双向连接,一个连接到下一层以产生具有更大感受野的特征,而另一个仅聚合到最终输出特征映射中一次。
与DenseNet的不同之处在于,每一层的输出并没有按路线(route)到所有后续的中间层,这使得中间层的输入大小是恒定的。这样就提高了GPU的计算效率。
另外一个不同之处在于没有了密集连接,因此MAC比DenseNet小得多。
此外,由于OSA模块聚集了浅层特征,它包含的层更少。因此,OSA模块被设计成只有几层,可以在GPU中高效计算。

VOVNet网络结构

Alt

图2

VoVNet由OSA模块构成,主要有三种不同的配置,如图2所示。VoVNet首先是一个由3个3x3卷积层构成的stem block,然后4个阶段的OSA模块,每个stage的最后会采用一个stride为2的3x3 max pooling层进行降采样,模型最终的output stride是32。与其他网络类似,每次降采样后都会提升特征的channel数。VoVNet-27-slim是一个轻量级模型,而VoVNet-39/57在stage4和stage5包含更多的OSA模块,所以模型更大。
由于高层语义信息对目标检测任务的重要性更大,文章通过在不同阶段增加输出通道来增加高层特征相对于低层特征的比例。与DenseNet中只有少量新输出的限制相反,文章的策略允许VoVNet用更少的总层数来表达更好的特征表示。

实验

VoVNet vs. DenseNet

对比不同backbone下的目标检测模型性能,如图3。
Alt

图3 与轻型物体探测器的比较。所有模型均在VOC 2007和VOC 2012 trainval集上进行训练,并在VOC 2007测试集上进行测试

相比其他模型,VoVNet做到了准确率和效率的均衡,提升了目标检测的整体性能。
另外,PeleeNet是通过把dense block拆分为更小的dense block实现flops减少的。由此,可以推断把dense block分解为小片段的计算并不利于GPU运算。

Ablation study on 1×1 conv bottleneck

Alt

图4

可以看出,1x1 bottleneck增加了GPU Inference时间,降低了mAP,尽管它减少了参数数量和计算量。
因为1x1 bottleneck增加网路层数,要求更多的激活层,因为增加了内存占用。

GPU-Computation Efficiency

Alt

图5 (a) VoVNet兼顾准确率和Inference 速度 (b) VoVNet兼顾准确率和GPU使用率 (c ) VoVNet兼顾准确率和能耗 (d) VoVNet监督能耗和GPU使用率

基于RefineDet架构比较VoVNet、ResNet和DenseNet

Alt

图6

从COCO数据集测试结果看,相比于ResNet,VoVnet在Inference速度,内存占用,能耗,GPU使用率和准确率上都占据优势。尽管很多时候,VoVNet需要更多的计算量以及参数量。

Mask R-CNN from scratch

通过替换Mask R-CNN的backbone,也发现VoVNet在Inference速度和准确率上优于ResNet。
Alt

图7

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值