SSD网络主体设计的思想是特征分层提取,并依次进行边框回归和分类。因为不同层次的特征图能代表不同层次的语义信息,低层次的特征图能代表低层语义信息(含有更多的细节),能提高语义分割质量,适合小尺度目标的学习。高层次的特征图能代表高层语义信息,能光滑分割结果,适合对大尺度的目标进行深入学习。
特点有三个:1、采用卷积进行检测;2、设置Default boxes;3、采用多尺度特征图用于检测
参考:
anchors box
SSD 论文详解一
SSD论文详解二
Background
1、每个网格只能预测一个物体,容易漏检,召回率低;
2、对于物体的额尺度比较敏感,小物体检测不好,大目标泛化能力弱;
One-stage与two-stage的区别,主要体现在速度与精度。速度上最大差异在于有无生成候选区域;精度上则是正负样本不平衡导致的低精度。(Focal loss解决)
Architecture
SSD 是基于一个前向传播 CNN 网络,产生一系列 固定大小(fixed-size) 的 bounding boxes,以及每一个 box 中包含物体实例的可能性,即 score。之后,进行一个 非极大值抑制(Non-maximum suppression) 得到最终的 predictions。
Multi-scale feature maps for detection
在基础网络结构后,添加了额外的卷积层,这些卷积层的大小是逐层递减的,可以在多尺度下进行 predictions。
Default boxes and aspect ratios
在每一个 feature map cell 中,我们要 predict 得到的 box 与 default box 之间的 offsets,以及每一个 box 中包含物体的 score(每一个类别概率都要计算出)。因此,对于一个位置上的 k 个boxes 中的每一个 box,我们需要计算出 c 个类,每一个类的 score,还有这个 box 相对于 它的默认 box 的 4 个偏移值(offsets)。于是,在 feature map 中的每一个 feature map cell 上,就需要有 (c+4)×k 个 filters。
Choosing scales and aspect ratios for default boxes
一般来说,一个 CNN 网络中不同的 layers 有着不同尺寸的感受野(receptive fields)。这里的感受野,指的是输出的 feature map 上的一个节点,其对应输入图像上尺寸的大小。
本文的设计中,feature map 中特定的位置,来负责图像中特定的区域,以及物体特定的尺寸。加入我们用 m 个 feature maps 来做 predictions,每一个 feature map 中 default box 的尺寸大小计算如下:
其中,Smin 取值 0.2,Smax 取值 0.95,意味着最低层的尺度是 0.2,最高层的尺度是 0.95,再用不同 aspect ratio 的 default boxes,用 ar 来表示:ar={1,2,3,1/2,1/3}。
如下图,狗狗的 ground truth box 与 4×4 feature map 中的红色 box 吻合,所以其余的 boxes 都看作负样本。使用浅层特特征图与深层特征图来对不同大小的物体做出预测。
Match Strategy
在训练过程中,首先要确定训练图片中的ground truth(真实目标)与哪个先验框来进行匹配,与之匹配的先验框所对应的边界框将负责预测它。在YOLO中,ground truth的中心落在哪个单元格,该单元格中与其IOU最大的边界框负责预测它。
1、首先,寻找与每一个ground truth box有最大IoU的default box,这样就能保证每一个ground truth能与至少一个default box对应起来。
2、SSD之后又将剩余还没有配对的default box与任意一个ground truth尝试配对,只要两者之间的IoU大于阈值,就进行匹配(SSD 300 阈值为0.5)。
尽管一个ground truth可以与多个先验框匹配,但是ground truth相对先验框还是太少了,所以负样本相对正样本会很多。为了保证正负样本尽量平衡,SSD 采用了 hard negative mining,就是对负样本进行抽样
Hard negative mining
Instead of using all the negative examples, we sort them using the highest confidence loss for each default box and pick the top ones so that the ratio between the negatives and positives is at most 3:1.
先将每一个物体位置上对应 default boxes是 negative 的 boxes 进行排序,按照 default boxes 的 confidence 的大小。 选择最高的几个,保证最后 negatives、positives 的比例在 3:1。
Loss Function
损失函数定义为位置误差(locatization loss, loc)与置信度误差(confidence loss, conf)的加权和:
localization loss(loc) 是 Fast R-CNN 中 Smooth L1 Loss
confidence loss(conf) 是 Softmax Loss,输入为每一类的置信度 c