目标检测SSD

 

1.SSD简介

1.1.直观理解

    SSD模型与Faster R-CNN中的RPN以及YOLO v2都非常像,因为都是直接在卷积层上预测边框,都使用了anchor box,没有连接层。SSD模型感觉更像是YOLO v2的改进版,YOLO v2是在最后一层特征图上预测,而SSD是在多个不同层次的特征图上预测。低层特征图分辨率高,包含更多的细节,能检测小物体。高层特征图分辨率低,但语义强,能检测大物体。因此SSD比YOLO v2更能检测小物体。
    个人理解,YOLO v2 + FPN = SSD。但其实并非这样,FPN是如下图中的(d),而SSD采用的是下图中的(c),它比FPN少了特征融合的箭头。而且,YOLO v2中的一些方法,SSD也并未采用,比如对GT box聚类得到初始anchor box。但不过不考虑细节,仅从宏观上理解SSD,大概可以理解为:YOLO v2 + (c) = SSD。
 

1.2.优点

(1)比YOLO要快,并且精度和Faster R-CNN不相上下
(2)在特征图上用小卷积核来预测一系列初始bounding box类别得分和位置偏移。(其实就是说在卷积层上就能够预测,卷积层上只有卷积核带有参数,而卷积核的参数与全连接层相比,是少很多的。所以用词“小卷积核”)
(3)为了提高预测精度,SSD在不同层次的特征图上设置不同的scale,然后再用不同aspect ratio的bounding box来检测物体。(一个层次的特征图只有一个scale,但有多个aspect ratio。每个层次设定的aspect ratio个数不一定相同,分辨率高的aspect ratio多,反之则少。)
(4)能够实现端到端。
 
 

2.SSD网络结构

2.1.结构图

    SSD的网络结构如下,在经过VGG-16的特征提取之后,每经过一个卷积层,就将所得的特征图送去目标检测。 数一数,总共有6张特征图被用于目标检测。
 

2.2.anchor box的scale和aspect ratio

   特征图的size逐渐地变小,并且低层特征图分辨率高,包含更多的细节,能检测小物体。高层特征图分辨率低,但语义强,能检测大物体。根据FPN的思想,可以只为每个层次的特征图只设定一种scale,低层次的特征图scale小,高层次的scale大,这样才能够使得低层次特征图检测小物体,高层次特征图检测大物体,如下图的猫和狗。因为多个层次的scale就能够组合成不同的scale了(RPN为特征图设置多个scale,是因为它只有一个特征图用于目标检测)。一个层次的特征图有aspect ratio,但每个层次设定的aspect ratio个数不一定相同,分辨率高的aspect ratio多,反之则少(观察到通道数逐渐变小)。
 

2.3.通道数

    通道数的多少侧面反映出了anchor box的多少。一个anchor box首先需要预测4个相对于default的偏置值,然后需要预测c个数表示该box属于种类ci的置信度(可得出是使用softmax)。因此一个anchor box需要4+c个数,假如有k个anchor box,那么就需要k*(c+4)个数字,也就对应k*(c+4)个通道。
 
 

3.训练

3.1.数据集的挑选

    正负样本框的设定:阈值设为0.5,与GT box的IoU大于0.5的为正样本框,否则为负样本框。
    正负样本框的比例:因为负样本框总是比正样本框多很多,不可能把全部的负样本框都用于训练。规定负:正至多为3:1。而且负样本框的挑选要选那些与GT box的IoU最小的。
 

3.2.损失函数

    如公式(1),损失函数由location部分和confidence部分组成。其中N是正样本的个数,如果正样本个数为0,那么loss就为0。alpha是用于调节location部分和confidence部分的权重。
    location部分的损失如公式(2),可以看得出来这部分跟Faster R-CNN是一样的。
    confidence部分的损失如公式(3),看得出来是采用softmax。
 
 

posted on 2020-07-11 15:26  ZhicongHou  阅读(159)  评论(0编辑  收藏  举报

导航