SSD 、DSSD及YOLOV3 对比

SSD

1 网络结构

SSD 、DSSD及YOLOV3 对比_第1张图片

2 效果
SSD 、DSSD及YOLOV3 对比_第2张图片

DSSD

论文地址:https://arxiv.org/abs/1701.06659

代码:https://github.com/chengyangfu/caffe/tree/dssd

DSSD是2017年的CVPR,二作就是SSD的一作Wei Liu。

这类改进算法并不是只适应一种算法,比如Faster RCNN中的RPN网络和Anchor 的思想,SPPNet中的SPP layer等等,这些改进同样适应其他算法,Fast RCNN使用了SPP layer,改进成为了ROI Pooling。

1 DSSD的贡献:

本文最大的贡献,在常用的目标检测算法中加入上下文信息。通俗点理解就是,基于CNN的目标检测算法基本都是利用一层的信息(feature map),比如YOLO,Faster RCNN等。还有利用多层的feature map 来进行预测的,比如ssd算法。那么各层之间的信息的结合并没有充分的利用。

DSSD算法就是为了解决这个问题的。

2 DSSD算法的由来:

既然是SSD算法的改进算法,我们先看看SSD算法的一些缺点。

SSD算法的缺点众所周知了,就是对小目标不够鲁棒。我们先分析一下为什么会对小目标不够鲁棒的。

先回忆一下YOLO算法,把检测的图片划分成14*14的格子,在每一个格子中都会提取出目标检测框,最初的时候每一个格子只会提取出一个目标框,这时问题就很大,因为可能会有两个目标落入一个格子中,那么就会出现漏检。

顺理成章的是,在一个格子中提取出多个检测框来匹配目标,这时我们可以使用Anchor的思路,一个格子中加上6到9个不同的检测框。这样就可以匹配大部分目标了。这也算解决了漏检问题了。

但是还是会有问题的,比如我们的9个Anchor比较大的话,比较小的目标就又无法匹配到了。那怎么解决呐?

SSD的思路就是我可以在更潜的一些层(feature map)上,来更好的匹配小目标。换句话说就是把图片分成的格子更小了,一张图片分成的格子的数目变多了。那么这样再在这些格子中使用Anchor ,这样漏检的概率就会大大减小了。

所以SSD的mAP比YOLO提高了不少。

但是!在浅层提取的feature map表征能力不够强,也就是浅层的feature map中每个格子也可以判断这个格子中包含的是哪一个类,但是不够那么确定!

可能会出现混淆。就是框是标对了,但是分类有可能出错,或者置信度不够高,不确定框里面的东西是什么?(有可能是分错类,也有可能是背景误认为成目标)。

这样同样会出现误检和漏检。这种情况对于小目标出现的概率更高。所以SSD算法对小目标还是不够鲁棒。

3 网络结构
SSD 、DSSD及YOLOV3 对比_第3张图片

4 小目标检测效果显著

4.1 预测模块

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

SSD 、DSSD及YOLOV3 对比_第4张图片

4.2 反卷积模块

     为了引入更多的高级上下文信息,作者在SSD+Resnet-101之上,采用反卷积层来进行预测,和原始SSD是不同的,最终形成沙漏形的网络。添加额外的反卷积层以连续增加后面特征图的分辨率,为了加强特征,作者在沙漏形网络中采用了跳步连接(skip connection)方法。按理说,模型在编码和解码阶段应该包含对称的层,但由于两个原因,作者使解码(反卷积)的层比较浅:其一,检测只算是基础目标,还有很多后续任务,因此必须考虑速度,做成对称的那速度就快不起来。其二,目前并没有现成的包含解码(反卷积)的预训练模型,意味着模型必须从零开始学习这一部分,做成对称的则计算成本就太高了。

    为了整合浅层特征图和反卷积层的信息,作者引入了如figure 3所示的反卷积模块,该模块可以适合整个DSSD架构(figure1 底部实心圆圈)。作者受到论文Learning to Refine Object Segments的启发,认为用于精细网络的反卷积模块的分解结构达到的精度可以和复杂网络一样,并且更有效率。作者对其进行了一定的修改,如Figure 3所示:其一,在每个卷积层后添加批归一化层;其二,使用基于学习的反卷积层而不是简单地双线性上采样;其三,作者测试了不同的结合方式,元素求和(element-wise sum)与元素点积(element-wise product)方式,实验证明点积计算能得到更好的精度。

SSD 、DSSD及YOLOV3 对比_第5张图片

4.3 小目标检测效果

SSD 、DSSD及YOLOV3 对比_第6张图片

5 速度感人
SSD 、DSSD及YOLOV3 对比_第7张图片

YOLOV3

SSD VS YOLOV3

SSD 、DSSD及YOLOV3 对比_第8张图片

小结:目前开源技术模型里实时检测YOLOV3没话说

你可能感兴趣的:(Python学习笔记,深度学习学习笔记)