背景介绍:
基于“Proposal + Classification” 的 Object Detection 的方法,R-CNN 系列(R-CNN、SPPnet、Fast R-CNN 以及 Faster R-CNN),取得了非常好的结果,但是在速度方面离实时效果还比较远在提高 mAP 的同时兼顾速度,逐渐成为 Object Detection 未来的趋势。 YOLO 虽然能够达到实时的效果,但是其 mAP 与前面提到的 state of art 的结果有很大的差距。 YOLO 有一些缺陷:每个网格只预测一个物体,容易造成漏检;对于物体的尺度相对比较敏感,对于尺度变化较大的物体泛化能力较差。针对 YOLO 中的这些不足,该论文提出的方法 SSD 在这两方面都有所改进,同时兼顾了 mAP 和实时性的要求。在满足实时性的条件下,接近 state of art 的结果。对于输入图像大小为 300*300 在 VOC2007 test 上能够达到 58 帧每秒( Titan X 的 GPU ),72.1% 的 mAP。输入图像大小为 500 *500 , mAP 能够达到 75.1%。作者的思路就是Faster R-CNN+YOLO,利用YOLO的思路和Faster R-CNN的anchor box的思想。
关键点:
关键点1:网络结构
该论文采用 VGG16 的基础网络结构,使用前面的前 5 层,然后利用atrous算法将 fc6 和 fc7 层转化成两个卷积层。再格外增加了 3 个卷积层,和一个 average pool层。不同层次的 feature map 分别用于 default box 的偏移以及不同类别得分的预测(惯用思路:使用通用的结构(如前 5个conv 等)作为基础网络,然后在这个基础上增加其他的层),最后通过 nms得到最终的检测结果。
这些增加的卷积层的feature map 的大小变化比较大,允许能够检出不同尺度下的物体:在低层的featuremap,感受野比较小,高层的感受野比较大,在不同的feature map进行卷积,可以达到多尺度的目的。观察YOLO,后面存在两个全连接层,全连接层以后,每一个输出都会观察到整幅图像,并不是很合理。但是SSD去掉了全连接层,每一个输出只会感受到目标周围的信息,包括上下文。这样来做就增加了合理性。并且不同的feature map,预测不同宽高比的图像,这样比YOLO增加了预测更多的比例的box。(下图横向的流程)
关键点2:多尺度feature 得
关键点2:多尺度feature map 得到default boxes及其 4个位置偏移和21个类别置信度
对于不同尺度featuremap(上图中38x38x512,19x19x512, 10x10x512, 5x5x512, 3x3x512, 1x1x256)的上的所有特征点: 以5x5x256为例它的#defalut_boxes = 6
1.按照不同的 scale 和 ratio 生成,k 个 default boxes,这种结构有点类似于 Faster R-CNN 中的Anchor。(此处k=6所以:5*5*6= 150 boxes)
训练策略
监督学习的训练关键是人工标注的label。对于包含defaultbox(在Faster R-CNN中叫做anchor)的网络模型(如: YOLO,Faster R-CNN, MultiBox)关键点就是如何把 标注信息(groundtrue box,ground true category)映射到(default box上)
1.正负样本:给定输入图像以及每个物体的 ground truth,首先找到每个ground true box对应的defaultbox中IOU最大的作为(与该ground true box相关的匹配)正样本。然后,在剩下的default box中找到那些与任意一个ground truth box 的IOU 大于 0.5的default box作为(与该ground true box相关的匹配)正样本。一个 ground truth 可能对应多个正样本default box 而不再像MultiBox那样只取一个IOU最大的defaultbox。其他的作为负样本(每个defaultbox要么是正样本box要么是负样本box)。下图的例子是:给定输入图像及ground truth,分别在两种不同尺度(featuremap 的大小为 8*8,4*4)下的匹配情况。有两个default box 与猫匹配(8*8),一个 default box 与狗匹配(4*4)