【论文学习记录】SSD: Single Shot MultiBox Detector
这篇文章是目标检测one stage方法的另一代表,论文原文《SSD: Single Shot MultiBox Detector》。
YOLO是one stage方法的开山之作,但是其对目标的尺度比较敏感,对尺度变化比较大的物体泛化能力比较弱。而two stage方法的代表系列R-CNN精度高,但是速度慢。
融合以上两者的优势,SSD采取了one stage的思路,并且在网络中融入了Faster R-CNN的anchors思想,并且做了特征分层提取并依次计算边框回归和分类操作,因此可以适应多尺度目标的训练和检测。
SSD会产生一系列固定大小的bounding boxes,以及每个box中包含目标的confidence。之后进行NMS得到predictions。
SSD网络分为了6个stage,每个stage学习一个feature map,然后进行边框回归和分类。SSD以VGG 16的前5层卷积网络作为第一个stage,然后将VGG 16的fc6和fc7替换为两个卷积层conv6和conv7分别作为第二个和第三个stage。SSD继续增加了conv8,conv9,conv10,conv11作为后面的几个stage。
这里有两个重要的点,一个是default boxes,另一个是feature map cell。
在SSD中,根据每个stage中的feature map的大小,按照固定的scale和ratio生成default boxes,类似于Faster R-CNN的anchor boxes。
feature map cell就是将feature map切分成8 x 8或者4 x 4的格子。
SSD网络的目标损失函数的localization loss和confidence loss的加权求和。
其中,
N是与ground truth box相匹配的default boxes的个数。
α是权重项,用以调节两种loss的占比,设为1。
每个feature map中default box的尺寸计算方法是:
其中,smin=0.2, smax=0.95。
那么每个default boxes的width和height就可以计算:
其中,
对于aspect ratio为1这种特殊情况,作者增加了一个default box,它的scale是
所以在每个feature map cell上有6个default boxes。
每个default box的中心设置为
其中,|fk|是第 k 个 feature map 的大小,同时,i,j∈[0,|fk|)。
在生成的predictions中,negative boxes的数量远远多于positive boxes,这就造成正负样本不均衡,训练时难以收敛。为解决这个问题,作者先将每一个位置上对应的predictions是negative的boxes进行排序,按照default boxes的confidence大小,选择最高的几个,保证正负样本的比例是1:3左右。
本文数据集增广的方式:
1. 采用原始输入图像;
2. 采样一个patch,与物体之间最小的jaccard overlap为:0.1,0.3,0.5,0.7,0.9;
3. 随机采样一个patch。
采样 的patch是原始图像大小的[0.1,1],aspect ratio在[1/2,2]之间。当groundtruth box的中心在采样的patch中时,保留重叠部分,之后将采样的patch resize到固定大小,并且以0.5的概率随机翻转。
本文的conv6和conv7的参数是从原VGG16的fc6和fc7的参数采样得到的,并且将pool5 layer的参数从2×2−s2转变成 3×3−s1。但是这样改变了感受野的大小,为弥补这一改变采用了atrous algorithm。另外还将VGG中所有的dropout layers和fc8layer去掉了。Learning rate 0.001,momentum 0.9,weight decay 0.0005,batch size 32,learning rate decay根据数据集的不同设置不同。
下面是一些实验结果。