目标检测学习笔记--DSSD算法

1. 论文笔记

1.1 YOLO网络结构

论文链接:http://cn.arxiv.org/pdf/1506.02640
目标检测学习笔记--DSSD算法_第1张图片

1.2 SSD网络结构

论文链接:http://cn.arxiv.org/pdf/1512.02325v5

目标检测学习笔记--DSSD算法_第2张图片

SSD具有如下主要特点

(1)从YOLO中继承了将detection转化为regression的思路,同时一次即可完成网络训练

(2)基于Faster RCNN中的anchor,提出了相似的prior box

(3)加入基于特征金字塔(Pyramidal Feature Hierarchy)的检测方式

​ YOLO在卷积层后接全连接层,即检测时只利用了最高层feature maps(包括Faster RCNN也是如此);而SSD采用了特征金字塔结构进行检测,即检测时利用了conv4-3,conv-7(FC7),conv6-2,conv7-2,conv8_2,conv9_2这些大小不同的feature maps,在多个feature maps上同时进行softmax分类和位置回归。

​ SSD使用低层feature map检测小目标,使用高层feature map检测大目标,这也应该是SSD的突出贡献了。

1.3 DSSD网络结构

论文链接:http://cn.arxiv.org/pdf/1701.06659v1

目标检测学习笔记--DSSD算法_第3张图片

2. 模型理解

​ DSSD在常用的目标检测算法中加入了更好的特征提取网络和上下文信息,相比于利用一层feature map的YOLO、Faster RCNN等,和利用多层feature map的SSD,DSSD充分利用了各层之间的信息结合。

​ YOLO算法把检测的图片划分为14*14的格子,每个格子都会提取出目标检测框,但最初时,每个格子只会提取出一个目标框,当两个目标落入一个格子中,会出现漏检。SSD利用Faster RCNN中Anchor的思路,将图片分成更小的格子(即在浅层上来更好地匹配小目标),再在这些格子中使用Anchor,即在格子中加上6到9个不同的检测框,有效地降低了漏检概率。但是SSD在浅层提取的feature map表征能力不够强,即浅层的feature map中每个格子包含的类的置信度不够高,同样会出现误检和漏检,因此SSD对小目标不够鲁棒。

目标检测学习笔记--DSSD算法_第4张图片

​ 由于SSD算法的浅层feature map的表征能力不够导致对小目标不够鲁棒,因此,DSSD使用了ResNet-101基础网络和Deconvolution反卷积层,使浅层feature map具有更好的表征能力,更好地提高对小目标的检测能力,而且ResNet比VGG的收敛速度快很多。

目标检测学习笔记--DSSD算法_第5张图片

​ DSSD将基础网络VGG换成ResNet,通过加深网络来增强网络的表征能力。但实验结果显示,图片大小不够时(321321),ResNet的SSD和VGG的SSD效果相当,整体稍差些,当输入图像为512512时,ResNet的优势才明显体现。

目标检测学习笔记--DSSD算法_第6张图片

​ SSD的直接从数个卷积层中分别引出预测函数,预测量多达7000多,梯度计算量也很大。MS-CNN方法指出,改进每个任务的子网可以提高准确性。根据这一思想,作者在每一个预测层后增加残差模块,并且对于多种方案进行了对比,如下图所示。结果表明,增加残差预测模块后,高分辨率图片的检测精度比原始SSD提升明显。

目标检测学习笔记--DSSD算法_第7张图片

目标检测学习笔记--DSSD算法_第8张图片

​ 在反卷积模块中,实验结果显示,使用prod点积的操作的效果更好。

​ DSSD的训练方式沿用了SSD的训练方法,通过caffe实现。

总而言之,DSSD就是将ResNet、Prediction Module、Deconvolution Module结合起来构成的基于SSD的目标检测算法。

3. 模型运行进展

​ 在github上找到DSSD模型的caffe版程序代码,虽然有SSD的keras版程序源码,但是DSSD在SSD的基础上所做的改变较大,基准网络从VGG换成了Resnet-101,而且增加了反卷积层,如果在SSD的代码上做出改变难度很大。而且目前对Caffe与Keras的使用不熟悉,很难完成Caffe到Keras的代码转换。

DSSD_Caffe:https://github.com/chengyangfu/caffe/tree/dssd

SSD_Keras:https://github.com/pierluigiferrari/ssd_keras#overview

4、其他知识点

RPN网络:RPN网络的作用是输入一张图像,输出一批矩形候选区域,类似于以往目标检测中的Selective Search一步。网络结构是基于卷积神经网络,但输出包含二类softmax和bbox回归的多任务模型。网络结果如下(以ZF网络为参考模型):

目标检测学习笔记--DSSD算法_第9张图片

Anchor机制:anchor是rpn网络的核心。刚刚说到,需要确定每个滑窗中心对应感受野内存在目标与否。由于目标大小和长宽比例不一,需要多个尺度的窗。Anchor即给出一个基准窗大小,按照倍数和长宽比例得到不同大小的窗。例如论文中基准窗大小为16,给了(8、16、32)三种倍数和(0.5、1、2)三种比例,这样能够得到一共9种尺度的anchor,如图

目标检测学习笔记--DSSD算法_第10张图片

​ 因此,在对6040的map进行滑窗时,以中心像素为基点构造9种anchor映射到原来的1000600图像中,映射比例为16倍。那么总共可以得到60409大约2万个anchor。

你可能感兴趣的:(深度学习,目标检测,DSSD,YOLO)