『写在前面』
DSOD轻量版,depthwise卷积在DSOD中的应用。
论文出处:BMVC 2018
作者机构:Yuxi Li等,上海交通大学等
目录
摘要
- 为了能在移动端等设备上部署DSOD模型,所做的改进版,轻量高效,达到了同等开销下的state-of-the-arts。
- Tiny-DSOD提出了两种高效结构:基于depthwise dense block的网络主干和基于depthwise-FPN的前端网络。
1 介绍
主要工作有三点:
- 将depthwise卷积和dense block结合,提出depthwise dense block(DDB)模块;
- 将depthwise卷积和FPN结合,提出D-FPN;
- 基于提出的DDB和D-FPN,搭建了Tiny-DSOD模型,取得了优于Tiny-YOLO、SqueezeDet、MobileNet-SSD等的效果。
2 相关工作
当前最优的目标检测算法,大多基于强大的主干网络(ResNet、VGG等)作为特征提取器进行改造,其参数量较大且计算开销巨大。
轻量检测模型:基于Fire模块的SqueezeNet,基于depthwise卷积的MobileNet-SSD,Tiny-YOLO,Pelee等等。
3 方法
3.1 基于DDB的主干网络
基于DSOD中提出的思想,本文构建了DenseNet型骨干网络,其中主要是对原版DenseNet中的dense block做了改进,引入了depthwise卷积,提出了DDB。
首先搬出MobileNet-V2中带有残差连接的block结构,需要注意残差连接支路和特征提取支路最后是Add在一起的:
基于MobileNet-V2,提出第一种DDB,DDB-a模块,其结构与MobileNet-V2大致相同,只是最后将Add操作替换成了拼接操作,如下图所示。DDB-a有两个缺点:(1)复杂度高,,这限制了连续堆叠的个数,如果堆叠的多了增长率就必须设置的很小;(2)连续堆叠时,两个block之间存在连续的1*1卷积,这会产生大量潜在的冗余参数。
DDB-b模块。考虑上述因素,提出第二种DDB,如下图所示。首先通过1*1卷积将通道数压缩到增长率g个,然后通过3*3 depthwise卷积抽取特征,最后直接与block的输入进行拼接。复杂度为 ,比DDB-a小。后续实验还证明DDB-b比DDB-a更有效,所以Tiny-DSOD最终选择DDB-b作为baseline。
最后,完整骨干网络结构如下表所示,Stem部分每个卷积层后面都加了BN层和ReLU激活,Extractor部分一共有4个dense stage。每个dense stage中包含若干个DDB-b块,相邻的dense stage直接通过过渡层连接,过渡层通过1*1卷积融合不同通道间的信息,同时压缩通道数(非w/o的过渡层还可以缩放尺度)。增长率设计方面,随着stage加深,增长率g也逐渐变大,这有助于降低计算开销。后续实验表明,在模型大小相当的情况下,设置均匀的增长率更有助于提高模型精度。
3.2 基于D-FPN的前端网络
在SSD和DSOD中,虽然预测阶段使用了Multi-scale的信息,但是在预测层的前几层,还是只用了最大的scale的信息(只有浅层特征),缺乏语义级别的信息。为了克服这个弱点,作者借鉴了FPN的思想,将高层特征与低层特征融合然后再去预测,并且同样借助depthwise卷积改善效率。
前端网络主要由正向路径和反向路径组成,正向路径进行1/2下采样,反向路径进行2x上采样。
下采样操作,通过一个双分支结构进行,并且3*3卷积采用了depthwise卷积,两路分支通过拼接操作结合。
在传统FPN中,通过deconvolution来进行上采样,复杂度较高。为了避免该问题,作者设计了一个新的上采样操作,首先通过双线性插值恢复大小,然后通过3*3 depthwise卷积抽取特征。其数学形式如下图所示:
一句话概括一下,每个通道输出的特征等于与其对应的输入通道通过双线性插值(求和符号里面的内容)以后再与对应的depthwise卷积核卷积(Wc)得到。
最后,将两条路径对应大小的feature map逐元素相加。实验表明,在略微增加计算成本的情况下,D-FPN的引入可以得到相当大的精度提升。