SSD:Single Shot MultiBox Detector

不经意间看到了SSD这篇文章的一份翻译:lib.csdn.net/article/deeplearning/53059但大体看了一下并不是很好理解,所以又综合了几篇博文来看~

SSD:Single Shot MultiBox Detector_第1张图片
SSD&YOLO

首先,SSD可看作是对YOLO的改进,虽然YOLO相比之前的“proposal+classification”方式进行目标检测的方法在速度上有明显的提升,但在mAP方面则要低很多,因为每个网格只检测一种物体,由此会造成很多漏检,另外,它对物体的尺寸比较敏感,对尺度的泛化能力较弱。故,SSD则实现了同时兼顾时效性及准确性的性能。

****可以利用不同层的feature map来模仿学习不同尺度下的物体检测。

那它具体是怎么实现的呢?

SSD结构:基于传统的特征提取网络(如:AlexNet,VGG等)作为基础网络,再在此基础上增加其他的层,而这些其他的卷积层的feature map在大小上有明显的变化(逐层递减),以此实现不同尺度下的检测。这是这个网络一个创新的点,充分利用不同网络层的信息来模拟不同尺度下的图像特征来辅助预测。

检测原理:在后面大小差别较大的feature map层(即在不同层次)上的每个 点,按照不同的尺度和比例,利用一些小的卷积核生成k个候选框(default boxes),这个类似于faster r-cnn网络中RPN中的anchors。然后综合所有层上的feature map上的检测结果,利用非极大值抑制的方式对所有检测出的boundingbox进行筛选。以此可以提升对同种物体不同尺度的泛化能力。

//在这儿不具体列出其是如何进行训练的,主要是了解其实现检测的原理步骤。但是附上一个看过的链接www.lai18.com/content/24600342.html

SSD是基于YOLO将目标检测作为一种回归的任务来实现的,但针对YOLO中的尺度敏感问题,利用不同层的feature map进行boundingbox的预测以此实现多尺度。

SSD:Single Shot MultiBox Detector_第2张图片
multi-layers

如上图所示,以两个层次上的feature map为例,在b中产生一系列针对猫和狗的固定大小的boundingbox,然后对每个boundingbox都需要预测得出所有类别的得分及offset,则若对于一个(m*n)的feature map,最后共需检测的类别数为C类,对每个点产生k个boundingbox而言,其共需要的filters数为(c+4)*k个,最后的输出结果共有(c+4)*k*m*n个。

注:其中的k个filters有不同的比例,以此产生多aspect ratio box

最后来看看SSD的主要贡献是什么吧~

SSD:Single Shot MultiBox Detector_第3张图片
contribution

add:

你可能感兴趣的:(SSD:Single Shot MultiBox Detector)