SSD: Single Shot MultiBox Detector 论文笔记

SSD: Single Shot MultiBox Detector 论文笔记

该论文提出了一种只需使用单个神经网络就可以实现目标检测的模型。该模型使用多个不同层的feature maps来使得该模型能够处理多种不同尺度的目标。该模型省略了proposals generation、subsequent pixel和feature重采样这些过程,并将所有的计算全部封装到一个网络中,因此整个模型的结构看起来要简单很多。同时该模型将原本VGG中的fc6和fc7用astrous算法代替,使得网络的参数量和计算量大大减少。对于300*300的输入图像,该模型的速度可以达到59FPS在VOC2007测试集上(用Titan X GPU),72.1%的mAP。

模型细节

这里写图片描述

这里写图片描述
SSD是一种基于前向反馈的卷积神经网络模型,它能够生成bboxes集合以及在每个bbox中一个目标类别出现的分数,然后再使用nms算法得到最终检测的结果。该模型的前面的网络层使用的是高质量的图像分类网络,通过这些网络层先来实现对图像的特征提取,然后再在网络的后面添加以下辅助结构来实现检测的任务:
多尺度feature maps:在基网络的卷积层conv4_3后面,还有用astrous算法得到的fc6和fc7网络层,然后再新添加了3个卷积层和一个average pooling层。通过conv4_3,fc7,conv8_2,conv9_2,conv10_2,conv11_2层的feature maps,实现多尺度目标检测。
用卷积去完成检测的任务:对于新添加的卷积层得到的feature maps,SSD使用的是卷积层去生成对检测目标的分数和偏移量的。
Default boxes和aspect ratios:每个feature map cell会相应的得到一个default box集,并且每个default box的相对于cell的位置是固定的。对于每个feature map cell,我们可以预测得到每个default box的offset,以及在每个default box中每个类可能出现的score。假设大小为m*n的feature map中的每个cell可以生成k个default boxes,对于每个default box需要计算得到c个类的scores和4个offsets,则对于每个feature map cell此时需要有(c+4)*k个滤波器,可以得到(c+4)*k*m*n个输出。
这里写图片描述

训练

正负样本选择:需要从多个不同的位置,aspect ratio和尺度中选择与gt boxes相匹配的default boxes。具体策略:首先从生成的default boxes中选择与gt boxes的Jaccard overlap最大的box作为正样本,然后从剩余的default boxes中选择与gt boxes的Jaccard overlap高于0.5的boxes作为正样本。这样每个gt box可能对应有多个default boxes。
训练目标函数:SSD的目标函数也是一个和faster rcnn类似的多任务损失函数:
这里写图片描述
α 是一个平衡位置损失和置信度损失的超参数,设置为1。

Default boxes的生成:在CNN中,低层的网络层更能捕获输入目标细节性的特征,而高层的网络层则具有更大的感受野,能获取图像中更大的区域信息。SSD通过利用几个不同网络层的feature maps可以实现目标的多尺度的特点,而这相比于在训练或者测试的时候,直接将图像处理成不同的尺度,再进行检测的方法,要方便很多。每个feature map的default boxes对应的在尺度计算如下:
这里写图片描述
其中smin 是0.2,smax 是0.9,这意味着对于低层次的feature map对应的是0.2的尺度,最高层的feature map对应的是0.9的尺度。default boxes的aspect ratio设置为ar{1,2,3,12,13} 。由此我们可以计算得到每个default box的宽(wak=skak )和高(hak=skak )。对于aspect ratio为1的时候,再添加一个尺度为sk=sksk+1 的default box。这样每个feature map的位置就可以得到6个default box。同时设置每个default box的中心座标为(i+0.5|fk|,j+0.5|fk| ),|fk| 为feature map的大小,i,j[0,|fk|)
Hard Negative Mining:由于用于预测的每个feature map的位置会生成6个default boxes,在经过正负样本策略选择之后,正样本只占有一小部分,而剩余的绝大多数default boxes是负样本,这就造成了在训练SSD 模型的时候,正负样本不平衡的问题。因此在训练过程中,采用了hard negative mining策略(根据置信度损失对所有的default boxes 进行排序,然后进行选择使得正负样本比例保持在3:1)来平衡正负样本比率。
Data Augmentation:为了提高SSD模型的鲁棒性,对每个训练图像,还做了一下随机采样操作:
——直接使用原始图像
——随机采样一个patch,使得patch与目标的最小Jaccard overlap为0.1,0.3,0.5,0.7,0.9。
——随机采样一个patch
随机采样的patch大小在原始图像的大小的[0.1,1]之间,aspect ratio在[1/2,2]之间。当gt box的中心在采样patch中时,保留重叠部分。在采样之后,每个patchresize到固定的大小,再以0.5的概率进行水平翻转。

一些实验结果

这里写图片描述

这里写图片描述

参考文献

[1].Liu W, Anguelov D, Erhan D, et al. SSD: Single Shot MultiBox Detector[C]// European Conference on Computer Vision. Springer, Cham, 2016:21-37.
[2].Ren S, He K, Girshick R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[C]// International Conference on Neural Information Processing Systems. MIT Press, 2015:91-99.
[3].https://zhuanlan.zhihu.com/p/24954433

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章