2016-ECCV-SSD
整理过R-CNN,Fast R-CNN,Faster R-CNN,Mask R-CNN,YOLO,今天组会汇报了目标检测另一主要的框架SSD,原本打算像之前一样,写一些论文要点,后发现几篇优质博客,写的极为透彻,相比之下,发现自己对paper的理解并没有那么透彻,还需努力,特别要加强动手实践能力,只有结合代码才能知道细节。
相关链接
Paper: http://arxiv.org/abs/1512.02325
Code: https://github.com/weiliu89/caffe/tree/ssd
Slides:http://www.cs.unc.edu/~wliu/papers/ssd_eccv2016_slide.pdf
相关博文推荐:
一文读懂Faster R-CNN(结合论文多看几遍,收获颇多)
Single Shot MultiBox Detector(SSD)
背景介绍
SSD是Wei Liu在ECCV2016年提出的一种目标检测算法,提出之时,相比Faster R-CNN有明显的速度优势,相比YOLO又有明显的mAP优势,但是现在已经被一系列Faster R-CNN改进版以及YOLO v2,v3超越了(上个月刚出的YOLO v3,速度快到不行,要拜读一下)。
上面这张图,可以看出SSD在速度和mAP两方面还是trade off的,并且目标检测就两大块,R-CNN系列的Two-Stage以及YOLO和SSD系列的Single Shot。
方法概括
- 从YOLO中继承了将detection转换为regression的思路,实现end-to-end检测
- 基于Faster R-CNN中的anchor box,提出相似的default box
- 加入基于SPPNet的检测方式,在多个大小不同的feature map上同时进行softmax分类和位置回归。(这也是论文最核心的贡献)
方法细节
Architecture
之前YOLO在卷积层后接全连接层,检测时只利用了最高层feature map,而SSD采用金字塔结构进行检测,检测时利用了6个大小不同的feature maps(上图架构和代码有些差别),在多个feature maps上进行分类和回归。
Default box
SSD中default box和Faster R-CNN中的anchor box非常类似,具体介绍见一文读懂Faster R-CNN,不过有一些不同之处:
Faster R-CNN中设置9个不同尺寸大小和长宽比的anchor boxs,SSD中是6个,有部分feature maps是4个,至于为什么,可能是实验得出。
-
SSD中由于涉及多个feature map,因此每个feature map对应的default box的min_size和max_size由以下公式决定(m是feature map数量,m=6):
sk=smin+smax−sminm−1(k−1),k∈[1,m]
在论文中,smin=0.2,smax=0.9
Training
Loss:
SSD loss和Faster R-CNN loss其实是一样的,分为classfication loss和location loss两部,具体介绍见一文读懂Faster R-CNN
Matching strategy:
在训练时,ground truth boxes与default boxes按照如下方式进行配对:
- 找到与每一个ground truth box有最大IoU的default box,保证一一配对
- 剩余没有配对的default box中,选择与任意ground truth box的IoU大于0.5的default box作为正样本
- 配对到的就是positive,没有配对到的就是negative
Hard negative mining:
由于负样本很多,需要去掉一部分负样本,整张图经过网络,根据confidence score排序default box,选择confidence score高的box进行训练,这样筛选出来的负样本也会更难识别,并且最终正负样本比例为1:3
Data augmentation:
数据增强,即没一张训练图像,随机的进行如下几种选择:
- 使用原始的图像
- crop图像上的一部分,与物体之间最小的IoU为:0.1,0.3,0.5,0.7,0.9
- 随机crop
方法的局限性
- 需要人工设置default box的min_size,max_size和aspect_ratio值,调参依靠经验
- 小目标检测一般,作者认为SSD使用低层feature map去检测小目标,存在提取不充分的问题