转载请注明做者:梦里茶git
Single Shot MultiBox Detectorgithub
一句话归纳:SSD就是关于类别的多尺度RPN网络网络
基本思路:ide
anchor宽高:
测试
其中,ar∈{1,2,3,1/2,1/3},能够理解为在缩放因子选择好anchor尺寸后,用ar来控制anchor形状,从而获得多尺度的各类anchor,当ar=1时,增长一种 sk=sqrt(sk-1sk+1),因而每一个feature map cell一般对应6种anchor。对象
正样本
选择与bounding box jaccard overlap(两张图的交集/并集)大于0.5的anchor做为正样本blog
样本比例
Hard negative mining:因为负样本不少,须要去掉一部分负样本,先整图通过网络,根据每一个anchor的最高类置信度进行排序,选择置信度靠前的样本,这样筛选出来的负样本也会更难识别,而且最终正负样本比例大概是1:3排序
仍是一如既往的location loss + classification loss,并为location loss添加了系数α(然而实际上α=1)进行平衡,并在batch维度进行平均图片
其中定位loss与faster rcnn相同get
这个式子里的k不是很明确,其实想表达不算背景0类的意思,且前景类只为match的类算location loss
分类loss就是很经常使用的softmax交叉熵了
核心的内容到这里就讲完了,其实跟YOLO和faster rcnn也很像,是一个用anchor box充当固定的proposal的rpn,而且用多尺度的anchor来适应多种尺度和形状的目标对象。
在训练中还用到了data augmentation(数据加强/扩充),每张图片可能是由下列三种方法之一随机采样而来
而后这些图片会被resize到固定的大小,随机水平翻转,加入一些图像上的噪声,详情能够参考另外一篇论文:
Some improvements on deep convolutional neural network based image classification
从切除实验中,能够看到data augmentaion是很重要的(从65.6到71.6)
这个表中还提到了atrous,实际上是指空洞卷积,是图像分割(deeplab)领域首先提出的一个卷积层改进,主要是能让测试速度更快。具体能够参考 ICLR2015 Deeplab
从这个表中也能够看出多种形状的anchor能够提高准确率
输入尺寸为300x300,batch size为8的SSD300能够作到实时(59FPS)且准确(74.3% mAP)的测试
SSD算是一个改进性的东西,站在Faster RCNN的肩膀上达到了实时且准确的检测