本文以Tiny-DSOD为主线,介绍其来龙去脉,和相关的几篇文章。
论文:Tiny-DSOD: Lightweight Object Detection for Resource-Restricted Usages
论文链接:https://arxiv.org/abs/1807.11013
caffe代码:https://github.com/lyxok1/Tiny-DSOD
1. Related work
这部分会在后面分别转或者写一些文章
1.1 目标检测milestone方法
1.2 Tiny-DSOD的来龙去脉
1.3. SSD+DenseNet=DSOD
1.4. DSOD+DSS module=DSOD v2
1.5. Depthwise Separable Convolution
1.6. FPN
1.7. Lightweight Object Detection Networks
2. Motivation
当前的大部分目标检测工作都极其依赖GPU和存储资源,不适合那些有资源限制的应用,所以本文力求做到准确率和资源的平衡,即在尽量不降低准确率的情况下,降低资源的消耗。
3.Contribution
本文的贡献:
结合DenseNet和深度可分离卷积,提出了Depthwise dense block (DDB) ;
结合FPN和深度可分离卷积,提出了D-FPN;
结合提出的Depthwise dense block (DDB)和D-FPN,提出Tiny-DSOD。
4.Method
one-stage的目标检测都是backbone部分提取feature map,Front end部分进行回归,所以分这两部分进行介绍Tiny-DSOD。
4.1 Depthwise Dense Blocks Based Backbone
把深度可分离卷积(depth-wise separable convolution)引入到普通的Dense block,提出了两种DDB units,DDB-a和DDB-b
作者通过实验证明,DDB-b的性能远好于DDB-a,所以我们以b为例进行介绍。
(1)把输入channel压缩到growth rate g(对应DDB-b图的蓝色框部分,1x1的Conv)
(2)进行深度可分离卷积(对应DDB-b图的绿色部分,3x3的DW Conv)
(3)深度可分离卷积的输出直接concatenate到输入,无需额外的1×1projection。
Tiny-DSOD完整的Backbone如下图
4.2 Depthwise FPN based Front-end
放张SSD的Front end图,SSD和DSOD的Front end有局限性,就是浅层的预测曾缺乏目标的语意信息。
补充一下,一般认为,深度学习模型浅层学习了目标的结构和分辨率的信息,高层学习了语意信息,而SSD和DSOD都是提取了六个feature map 进行预测,那么前面的,比如上图的38x38和19x19比较底层,此时网络还没学到足够的语意信息。
所以作者设计一个名为depthwise FPN(D-FPN)的轻量级FPN,用于将信息流从较深和较小的feature maps重定向到较浅的。
由下采样(a downsampling path)和反向的上采样(a reverse upsampling path)组成
这种反向的上采样已经被很多文章证明其有效性,但是大部分都是用反卷积来实现,这大大增加了模型的复杂度,也使得模型难以收敛。
作者使用简单的双线性插值层(a simple bilinear interpolation layer)和a depth-wise convolution对the top feature maps进行上采样。
5. Experiment
(1) DDB-b > DDB-a
(2) D-FPN的有效性
(3) Overall growth rate增加, Accuracy上升
(4) Trade-off between resources (parameter-size & FLOPs) and accuracy (mAP) -----Row(5)&(6)