1、SSD的知识思维脑图
2、简介
2.1、SSD出现的背景
针对YOLO V1对于小目标检测的缺陷一个死板的边框定制,导致如果出现过于密集检测物体时,效果就会比较差,而对于多阶段检测的方法,诸如,RCNN,Fast RCNN,Faster RCNN虽然对于小目标有比较好的检测效果,但是由于其自身会产生很多的冗余边界框导致基于分类的检测方法的检测时间比较久,很难满足实时性的要求。
SSD是一个端到端的模型,所有的检测过程和识别过程都是在同一个网络中进行的;同时SSD借鉴了Faster R-CNN的Anchor机制的想法,这样就像相当于在基于回归的的检测过程中结合了区域的思想,可以使得检测效果较定制化边界框的YOLO v1有比较好的提升。
2.2、SSD的模型思想
2.2.1、多尺度特征图预测(Multi-Scale Feature Maps Prediction)
SSD较传统的检测方法使用顶层特征图的方法选择了使用多尺度特征图,因为在比较浅的特征图中可以对于小目标有比较好的表达,随着特征图的深入,网络对于比较大特征也有了比较好表达能力,故SSD选择使用多尺度特征图可以很好的兼顾大目标和小目标。
对于对尺度特征图的实验如下,全部使用是可以达到最好的效果:
2.2.2、根据不同尺度的特征图进行定制不同尺度的默认边界框
如下图和表所示,针对不同的特征图,SSD定制了不同数量的默认边界框的数量(借鉴了YOLO V1的定制边界框的思想)
但是默认框的数量是动手选择的,SSD为每个特征图定义一个尺度值,从左侧开始,conv4_3的最小尺度值为0.2,然后以0.14的线性增加到最右边的层的0.9(即0.20、0.34、0.48、0.62、0.76、0.90),然后将尺度值(Scale)与目标的宽高比结合,计算默认框的宽度和高度。
对于进行预测6次的层,SSD以5个目标高宽比开始{1,2,3,1/2,1/3},具体的计算如下:
定义的宽高比为:
边界框的宽高为:
m表示特征图的数量,s_min=0.2,s_max=0.9。
由上面的表和图可以看出,最终总共产生了8732个边界框,最后使用非最大值抑制的方法进行筛选。
2.2.3、使用3x3的小卷积核进行预测分类结果和边界框的信息
SSD不使用特定的区域建议网络。它采用一个非常简单的方法,即使用小卷积滤波器计算位置和类别得分。
在提取特征图之后,SSD对每个单元应用3×3卷积滤波器以进行预测(这些滤波器像常规CNN滤波器一样计算结果)。每个滤波器输出25个通道:21个类别分数+1个边界框的信息。
2.2.4、多任务损失函数
- 匹配策略
SSD预测分为正匹配或负匹配。如果相应的默认边界框(不是预测的边界框)与GT的IoU大于0.5, 则匹配为正。否则,是负的。
SSD仅使用正匹配来计算边界框不匹配的代价。
只有默认框1和2(但不是3)的IoU大于0.5。因此, 只有第1和第2个框是正匹配。一旦识别出正匹配,就使用相应的预测边界框来计算代价。这种匹配策略很好地划分了预测所负责的GT框的形状。
该匹配策略鼓励每个预测更接近相应默认框的形状。因此,预测在训练中更加多样化和稳定。
损失函数:
总体目标损失函数是**定位误差(loc)和置信度损失或者叫分类误差(conf)**的加权和:
定位损失:是GT框与预测边界框之间的不匹配。是预测框(?)和GT框(?)参数之间的Smooth L1损失
SSD仅对正匹配的预测进行惩罚。希望正匹配的预测能够更接近GT。负匹配可以忽略。
• 置信度损失或者叫分类误差:是多类置信度(c)下的softmax损失。
2.2.5、空洞卷积
由于SSD借鉴了DeepLab-LargeFOV,分别将VGG16的全连接层fc6和fc7转换成3×3卷积层Conv6和1×1卷积层Conv7,同时将池化层pool5由原来的2×2−s2变成3×3−s1。为了配合这种变化,采用了一种Atrous Algorithm,其实就是Conv6采用带孔卷积(Atrous/Dilation Convolution),带孔卷积在不增加参数与模型复杂度的条件下指数级扩大卷积的感受野。
Atrous/Dilation Convolution的思想:紧密相邻的像素几乎相同,全部纳入的话会存在很多的冗余关系,于是选择跳跃H(hole)个像素取一个有效值,这样可以在较少的参数下增大感受野,也节省了内存的使用。
如下图所示,(a)是普通的3×3卷积,其感受野就是3×3,(b)是扩张率为2,此时感受野变成7×7,(c)扩张 率为4时,感受野扩大为15×15,但是感受野的特征更稀疏了。
2.2.6、困难负样本挖掘(Hard negative mining)
由于做出的预测远远超过目标存在的数量,所以负匹配比正匹配要多得多。这造成了一种训 练的类别不平衡:更多地学习背景空间而不是检测目标。
然而,SSD仍然需要负采样,因此它可以了解什么构成不良的预测。因此,我们不是使用所 有的样本,而是通过计算的置信度损失对这些负样本进行排序。SSD选择最高损失的负样本并 确保所选负样本与正样本之间的比率最多为3:1。这导致更快和更稳定的训练。