SSD&& MS R-CNN模型总结

论文名称:SSD: Single Shot MultiBox Detector
论文地址:传送门

Introduction

相比于多阶段(Multi-Stage)的方法,SSD是一个Single Shot的目标检测算法,它可以直接输出不同比例、不同尺寸的Bounding box,其结合了不同层的特征图,从而可以处理多种尺寸的 物体。

MultiBox

作者在文中指出,对于不同的物体,其具有不同的BoundingBox。通过在不同大小的特征图上取多个prior box,可以检测大小不同的物体。

MultiBox

Model

从下图的网络结构可以看出,SSD其实就是以Base Network(如VGG)为基础,然后抽取其中不同的层,对抽取的大小不同的层进行卷积,输出其prior box的边框坐标$(cx,cy,w,h)$和对应的类别$(c1,c2 \cdots cn)$,接着对这些特征进行分类,通过NMS(None-Maximum Suppression)提取较为准确的Box和类别。

SSD

Default boxes and aspect ratios

对于某一层大小为$(m \times n \times p)$的特征图,假如我们有$k$个预设的boxes,那么我们可以对特征图使用$k \times (c+4)$个$3 \times 3$的filter,这样就可以得到$m \times n \times k \times(c+4)$的特征图,其中$c$表示数据集的类别数(如VOC的21类),4表示对于$k$个box中的每一个都预测其坐标$(cx,cy,w,h)$。

Training

Matching strategy:在训练的时候,我们需要知道每一个Default Box(DBox)对应的Ground Truth box(GTBox)。对于一个GTBox,首先寻找与其重叠最多的DBox;接着寻找与GTBox重叠超过某一阈值(0.5)的DBox。因此,一个GTBox可以对应多个DBox,但每个DBox仅可对应一个GTBox,增加了positive samples。

Training objective:首先设定$x_{ij}^p={1,0}$表示:第$i$个DBox和类别为$p$的第$j$个GTBox。设模型的Loss有定位Loss和置信Loss组成,即:
$$L(x,c,l,g) = \frac{1}{N}(L_{conf}(x,c)+ \alpha L_{loc}(x,l,g))$$
其中$N$表示匹配的DBOx,$l$表示预测的box,$g$表示Ground Truth Box
$$L_{loc}(x,l,g)=\sum_{i \in Pos}^N \sum_{m \in {cx,cy,w,h}} x_{ij}^p smooth_{L1}(l_i^m-\hat{g}_j^m)$$

$$\hat{g}_j^m = (g_j^m-d_i^m)/d_i^w$$

$$ L_{conf}(x,c) = - \sum_{i \in Pos}^N x_{ij}^p log(\hat{c}i^p)- \sum{i \in Neg}log(\hat{c}_i^0) $$

其中$\hat{c}_i^p = \frac{exp(c_i^p)}{\sum_p exp(c_i^p)}$。
也就是说,定位误差即使用L1 Loss来评价实际边框与预测边框之间的误差,而分类误差则使用SoftMax Loss。

Conclusion

总结下来,SSD最核心的便是使用不同层次的特征图提取目标,从而不仅解决了物体尺度的问题,而且还使得网络能够端到端的训练,极大提升了检测精度和速度。

MS R-CNN

论文名称:A Unified Multi-scale Deep Convolutional Neural Network for Fast Object Detection
论文地址:传送门

Introduction

MS-CNN:Multi-scale object detection包含一个proposal sub-network和一个detection sub-network。在proposal network中的检测是在多个输出层进行了,因此感受野可以匹配不同尺度的目标。

在Faster R-CNN中,虽然使用RPN产生多个尺度的proposal,但其是在一些固定大小的特征图上进行的,这使得不同大小的目标与固定的感受野之间产生了矛盾。

Network Architecture

于是作者提出了MS CNN,其实就是Multi-scale的Faster RCNN。作者将Proposal network应用在不同层次的特征图,从而使得不同感受野的特征图产生不同的proposal,如conv4-3更加关注小目标,conv6更加关注具有更多语义信息的大目标。对于不同的尺度,都输出$c+b$个特征图,即c个类别和b(4)个box coordinate。

Detection network也在(与proposal)相同的特征图上进行detect,接着进行deconv,接着ROI pooling,接着进行classification和box regression。

同时作者发现,不同的层对不同大小的目标检测效果不同,即前面的层主要检测小目标,后面的层主要检测大目标。

Summary

这两篇文章都是ECCV2016的,有相似之处,也有不同之处。

相同点:都是采用多层特征,对大小不同的目标有更好的检测效果。都是抽取不同的卷积层特征,进行检测,然后将结果融合。

不同点:

  1. SSD是one-stage detector,MS CNN是two-stage detector。
  2. SSD直接将特征送入检测网络,进行回归得到类别和坐标;而MS CNN是在不同的特征层分别进行proposal和R-CNN。
  3. SSD相当于YOLO的改版,而MS CNN相当于Faster R-CNN的改版。
  4. SSD在PASCAL VOC和COCO上测试,而MS CNN在KITTI上测试(图像质量更复杂些)。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!