目标检测之SSD

SSD

  • 论文地址:https://arxiv.org/abs/1512.02325

    Abstract

  • SSD之一种one stage的目标检测方法,可以直接实现端到端的detection。
  • SSD生成大量default box(这是在很多feature map上使用不同的aspect ratio以及scale,即每个位置都会生成很多box),然后预测其所属类别概率,并对box位置进行调整,最终得到预测结果。

introduction

  • fasterRCNN等方法是two stage的方法,首先生成很多proposal box,然后再对其进行分类。SSD由于是一种one stage的方法,因此在保证精度保持state of art的前提下,仍然能够达到实时的效果(去除了候选框生成的过程)。
  • SSD使用卷积层去预测物体类别以及bbox的offset(之前在很多类别预测的任务中,最后都是加上全连接层,再用softmax激活函数做处理),同时对于不同aspect ratio的detection,使用不同的filter。

    The Single Shot Detector

model

  • SSD是基于前向的CNN,生成国定数目的bbox,然后再使用NMS去除一些bbox,得到最终的结果。
  • 对多个不同尺度的feature map做detection,这使得SSD针对多尺度的物体检测的效果也很好。Yolo只在一个feature map上做detection,SSD则是在不同的feature map上做detection。
  • 使用CNN做detection的预测。对于一个$m \times n \times p$的feature map,只需要使用一个$3 \times 3 \times p$的filter,就可以实现feature map上每个点的预测(对于特定类别物体的得分或者相对default box的offset)。
  • 在每个feature map cell中,都会生成一系列的default box,这是通过设置aspect ratio和scale生成的,假设一个feature map cell中会生成k个default box,则对于每个default box,会计算其针对c个类别的得分以及box相对于default box的offset的信息,因此对于一个大小为$m \times n$的feature map,会生成$mnk(c+4)$个输出。这个default box的概念与anchor box的概念类似,但是SSD中,对不同尺度的feature map都使用了default box

training

  • 在训练过程中,主要就是怎样将gt box与default box做匹配。SSD中使用的匹配策略如下:如果gt box与某个default box的IOU大于某个阈值(论文中设置的是0.5),则认为这个default box与gt box可以匹配。因此每个gt box可能会与多个bbox进行匹配。
  • SSD的loss的由定位误差和类别误差进行确定,具体公式如下
    $$L(x, c, l, g) = \frac{1}{N}(Lconf(x, c) + \alpha Lloc(x, l, g))$$
    其中N是匹配的default box的个数,(N=0的话,loss为0),定位误差使用Smooth L1 loss,物体confidence loss使用softmax loss,$\alpha$是超参数。
  • 为了处理不同的尺度的物体检测,使用不同的aspect ratio与scale去生成不同的default box。假设总共处理m个feature map(大小依次递减),则对于每个feature map,其scale计算方式如下:
    $$s_k = s_{min} + \frac{s_{max}-s_{min}}{m-1}(k+1),k=1,2,…,m$$

作者设置$s_{min}=0.2,s_{max}=0.9,a_r={ 1,2,3,\frac{1}{2},\frac{1}{3}}$,每个default box的$w_k^a=s_k \sqrt{a_r}$,$h_k^a=s_k / \sqrt{a_r}$,中心点为$(\frac{i + 0.5}{\left| {f_k} \right|},\frac{j + 0.5}{\left| {f_k} \right|})$,其中$f_k$是第k个feature map的大小。

  • 因为设置了很多个default box,因此在训练的时候,有很多个negative box,只有很少的positive box(与gt box匹配的都是positive,其他的都是negative),因此我们不使用全部的negative box,基于confidence loss进行排序,只选取loss最高的那些negative box,使得最终的negative:positive最多为3:1。
  • 论文中使用了集中数据增强的方式
    • 使用整张输入图像
    • 取图像块,使得patch与物体的IOU分别为0.1,0.3,0.5,0.7或者0.9。
    • 随机采样图像块(在原图中随机裁剪出一个图像块,使得图像块与CNN的输入大小相同即可。)

result

  • 作者通过实验,证明了在SSD中,数据增强是非常重要的,在VOC2007上可以使得mAP提升8.8%,大当然使用更多的aspect ratio也会使得效果更好。
  • 如果只在很少的feature map上进行bbox的预测,则mAP会下降很多,因此何种multi feature map的设计对提升mAP是很有好处的。
  • 此外作者在VOC2012,coco等数据集上做了测试,效果都是state of art的,同时速度可以达到实时。

conclusion

  • SSD512比fasterRCNN快3倍以上,同时在pascal voc以及coco数据集上,mAP都超过了fasterRCNN。SSD300可以达到59FPS,比yolo的速度快,精度方面也有明显的优势。