DSSD:Deconvolutional Single Shot Detector
- arxiv:https://arxiv.org/abs/1701.06659
- github:https://github.com/chengyangfu/caffe/tree/dssd
- github:https://github.com/MTCloudVision/mxnet-dssd
- demo:http://120.52.72.53/www.cs.unc.edu/c3pr90ntc0td/~cyfu/dssd_lalaland.mp4
1、整体思路
DSSD主要改进为:
① 把SSD的基准网络从VGG换成了Resnet-101,增强了特征提取能力;
② 使用反卷积层(deconvolutional layer)增加了大量上下文信息;
从上边的图片中能够看出整个网络是采用一个类似沙漏(hourglass即encoder-decoder)结构。前面采用ResNet-101进行网络特征的提取,SSD中实在提取网络以后又加入了SSD层,而DSSD是在其基础上加入了DSSD层,低分辨率的特征信息作为上下文信息,通过反卷积与前面两倍分辨率的特征图像进行融合,最后通过一个预测模块进行预测。
2、预测模块
SSD直接从数个卷积层中分别引出预测函数,预测量多达7000多,梯度计算量很大。MS-CNN方法指出,改进每个任务的子网可以提高准确性。根绝这一思想,作者在每一个预测后增加残差模块,并且对于多种方案进行了对比,如下图所示。
(a) 为原SSD对于特征信息进行分类与定位的模型,直接进行预测;
(b) 在预测之前加入residual block模块;
(c) 将residual block模块中直接映射identity mapping 换成1 × 1卷积;
(d) 堆积residual block模块
结果如下图:
可以看到,添加(c)结构后,检测精度提升明显。这里还包含DM,就是下图中卷积与反卷积所得到的两个矩阵如何进行合并。Eltw Product方法分为sum与prod两种,sum是默认操作,就是将A和B相加减。prod表示点积,Max求最大值,可以看出,prod方法得到的检测结果准确率更高一些。
3、反卷积模块
为了整合浅层特征层和反卷积层的信息,作者引入反卷积模块即第一幅结构图中的小圆圈,该模块可以适合整个DSSD架构,作者受到论文《Learning to Refine Object Segments》的启发,认为用于精细网络的反卷积模块的分解结构达到的精度可以和复杂网络一样,并且更有效率。作者对其进行了一定的修改
① 在每个卷积层后添加批归一化层;
② 使用基于学习的反卷积层而不是简单地双线性上采样;
③ 测试了不同的结合方式,元素求和(element-wise sum) 与元素点击(element-wise product)方式;
4、参考
- https://blog.****.net/qq_35451572/article/details/80457552
- https://blog.****.net/yaoqi_isee/article/details/73277398
- https://blog.****.net/jesse_mx/article/details/55212179?utm_medium=referral&utm_source=itdadao