『写在前面』
目标检测轻量级网络。
论文出处:NeurIPS 2018
作者机构:Robert J. Wang等,University of Western Ontario
目录
摘要
没有像MobileNets和ShuffleNet等一样,采用深度可分离卷积替代传统卷积。本文提出一种轻量化网络结构PeleeNet,其中使用的全部是标准卷积。但模型更小,精度更高。Pelee中文音同“霹雳”,在iphone8和NVIDIA TX2等移动端设备上测试,速度极快。
1 介绍
为了能够在移动设备上运行高效的CNN模型,MobileNet、ShuffleNet、MobileNet v2等相继被提出,但这些模型都过度依赖于depthwise卷积,而深度可分离卷积缺乏高效实现(cuDNN 7开始有了)。
首先,本文基于DenseNet进行改进,提出了一种新的分类模型PeleeNet,在大大缩小模型的同时,达到了更高的精度。PeleeNet的一些特点列举如下:
Two-Way Dense Layer
受GoogLeNet启发,使用双路密集层以获得不同大小的感受野。如下图所示,一路使用1个3*3 conv,另一路使用2个3*3 conv。
Stem Block
受Inception-v4和DSOD的启发,提出一种低成本的stem block,用于在首个dense layer之前提取特征。有效提高特征表示能力的同时没有增加太多的计算量。
Dynamic Number of Channels in Bottleneck Layer
根据输入feature map的shape动态调整瓶颈层的通道数目,而没有像原版DenseNet中那样,直接扩大4倍。
Transition Layer without Compression
作者认为DenseNet中的压缩操作会损害特征表达,所以在PeleeNet中,过渡层不会进行通道数量的压缩。
Composite Function
使用"Conv-BN-ReLU"(后激活),而不是想DenseNet那样进行预激活。后激活的好处是,在做inference时,可以将所有的BN层与卷积层合并,可以大幅提高计算速度。为了弥补后激活对精度降低的影响,PeleeNet在设计时尽可能“浅而宽”。并且在最后一个dense block之后添加了1*1卷积层以获得更高级的特征。
另外一项重要工作是使用PeleeNet改进SSD,提出一种新的轻量级目标检测模型Pelee,为了平衡精度和效率做了如下几个优化:
特征图选择
没有使用原版SSD中38*38的feature map做预测,只使用了19*19、10*10、5*5、3*3、1*1五个feature map.
残差预测模块
设计了一个ResBlock用来产生用于进行预测的feature map.
小卷积核进行预测
使用1*1卷积做最后预测。
2 PeleeNet:一个高效特征提取网络
2.1 网络结构
与ShuffleNet等3-stage轻量级网络不同,PeleeNet沿用了大模型经常采用的4-stage设计。
首先,通过1个stem block快速抽取特征。然后经过4个由dense layers和1个Transition layer组成的stage,除stage4以外,其他3个stage最后都使用了stride=2的Avg-pooling。最后,通过1*1卷积得到预测用的feature map,再通过全局平均池化做最终预测。具体网络结果如下表所示。
2.2 各个trick的作用
使用DenseNet-41作为基准模型。它与原版DenseNet有两处不同:
- 第一个卷积层通道数改为24(原:64),卷积核大小3*3(原:7*7);
- 根据计算量要求调整dense block中的层数。
3 Pelee:实时目标检测系统
概述:
- 高效特征提取网络PeleeNet
- 选了5个小尺寸的feature map做检测
- ResBlock
- 1*1卷积生成预测feature map
没有使用SSD中38*38的feature map做预测。对19*19的feature map使用两种不同大小的默认框,其余4种分别对应1个默认框。这样保持了最后还是输出6种scale的feature map。