SSD

titile SSD: Single Shot MultiBox Detector
url https://arxiv.org/pdf/1512.02325.pdf
动机 当前目标检测流程:假设bounding boxes->重采样框像素或特征->分类器。如Faster R-CNN
准确度高但计算量大,实时难,每帧秒级实现,Faster R-CNN->7fps
当前加速的检测算法都牺牲精度
内容 SSD,一种针对多个类别的single-shot detector,比previous single shot detectors(YOLO)更快,更准确;与region proposals and pooling方法精度相似(Faster R-CNN)(59 FPS with mAP 74.3% on VOC2007 test, vs. Faster R-CNN 7 FPS with mAP 73.2% or YOLO 45 FPS with mAP 63.4%)
核心:小的convolutional filters,预测固定bounding boxes的category scores and box offsets。
为实现高精度,根据不同尺度的feature maps得到不同尺度的predictions,根据不同aspect ratio得到不同长宽比predictions。
基于以上方法,低分辨率输入图像上也能实现端到端训练和高精度,提高速度与精度的权衡。

模型结构: 
Multi-scale feature maps:不同卷积层共同连接到主网络末端,卷积层尺度逐渐减小,感受野增大(多尺度),每一层用于预测detections的convolutional model不同。
Convolutional predictors:使用convolutional filters得到一组固定的detection predictions。形状为m*n*p的特征图,采用3*3*p的小卷积核得到检测值。
Default boxes and aspect ratios:一个m*n的feature map,每个cell有k个先验框,则(c+4)kmn个预测值(m*n*((c+4)k))。
训练:
Matching strategy:(1)ground truth box匹配jaccard overlap最高的default box(同MultiBox),保证每个ground truth box有一个对应的default box;
(2)避免负样本过多,未匹配default boxes与某一个jaccard overlap>0.5的ground truth box匹配(选IoU最大的),简化学习过程,某个ground truth可能与多个先验框匹配,一个先验框只能匹配一个ground truth。
(1)优先级大于(2)
Training objective:
每个输出的feature map经过两个并列的3*3卷积核卷积,一个定位,一个分类。
不是一个预测feature map单独计算一次softmax socre+box regression(ground truth匹配存在问题)。而是通过Permute(交换caffe blob中数据维度bottom blob = [batch_num, channel, height, width] ==> top blob = [batch_num, height, width, channel],每C个数据表示在当前feature map上一个点的信息,It is to make it easier to combine predictions from multiple layers),Flatten(n*(h*w*c))和Concat这3种层将所有的预测结果连接到一起。

num_classes包括背景,share_location = True即坐标归不区分类别,4 × anchor,不乘num_classes,无confidence。

最后预测时分别得到loc_layers、conf_layers、priorbox_layers层。

priorbox_layers层variance参数作用,prior_variance = [0.1, 0.1, 0.2, 0.2],作者回答如下:
除以variance是对预测box和真实box的误差进行放大,从而增加loss,增大梯度,加快收敛。
本文采用中心坐标加上长宽,计算loss时可能需要对中心坐标loss和长宽loss做权衡,prior_variance = [0.1, 0.1, 0.2, 0.2]。如果采用box四大顶点坐标方式,variance都是0.1,相互之间没有权重差异。
Choosing scales and aspect ratios for default boxes:
(Conv4_3层靠前,norm较大,在其后面增加了一个L2 Normalization层,以保证和后面的层差异不大,增加鲁棒性,训练稳定,feature的模长放缩到刚好等于1的长度,会让学到的feature变得很小,网络难以训练。所以将feature的值放大一定倍数,程序取20倍(scale_filler)。
accross_spatial(程序取false):normalization范围。true(默认:对每个num(channel*height*width)整体进行normalization,平方加和的个数是channel*height*width;false:normalization不是accross_spatial,加和个数是channel,每个像素点(height*width个数)分别进行normalization,减小了normalization的范围。
channel_shared(程序取false):归一化后,将top_data乘以一个scale(这个scale是normalization_layer的唯一参数),true(默认):top_data的所有channel乘以同一个数,false:top_data的channel乘的数不一样。
和Batch Normalization层不太相同,其仅对每个像素点在channle维度做归一化,而Batch Normalization层是在[batch_size, width, height]三个维度上做归一化)
不同尺度对象通过不同feature map(共享参数),不需要变换输入图大小。
Hard negative mining:macthing之后,负样本较多(特别是default boxes很大),对负样本default box按confidence loss高到低排序,选高的,保证正负比1:3。
Data augmentation:(1)原始图像,(2)采样一块,与目标最小jaccard overlap是0.1, 0.3,0.5, 0.7, or 0.9,(3)随机采样一块。(1)(2)(3)随机选一个。每个patch大小是原始尺寸的[0.1, 1],aspect ratio在0.5到2之间,ground truth box中心在patch中保留。patch最后会resize到固定大小,0.5概率翻转。

测试:每个预测框,首先根据类别置信度确定其类别(置信度最大者)与置信度值,并过滤背景预测框。
然后根据置信度阈值(如0.5,论文0.01)过滤阈值较低预测框。
留下的预测框解码,根据先验框得到其真实的位置参数(解码后一般还需要做clip,防止预测框位置超出图片)。
解码后,根据置信度进行降序排列,NMS(论文0.45)算法,过滤重叠较大的预测框。保留top-k(如400,论文200)个预测框。
剩余的预测框就是检测结果。
实验 Base network:VGG16,fc6、fc7改为卷积层,change pool5 from 2 × 2 − stride2 to 3 × 3 − stride1, and use the à trous algorithm to fill the "holes"。删除dropout和fc8,初始学习率0.001,0.9 momentum,0.0005 weight decay, batch大小32,衰减策略不同数据集不同。
PASCAL VOC2007:(小目标不好Figure4)
Model analysis:
Data augmentation is crucial
More default box shapes is better
Atrous is faster

Multiple output layers at different resolutions is better:
PASCAL VOC2012:
COCO:
Data Augmentation for Small Object Accuracy:
Inference time:
思考 同时借鉴Yolo和Faster R-CNN,多尺度feature map和不同尺度大小先验框解决Yolo难以检测小目标,而且定位不准问题。
但是小物体效果仍不好
参考 https://zhuanlan.zhihu.com/p/33544892
补充 atrous algorithm:
不增加参数与模型复杂度的条件下指数级扩大卷积的视野
pool5将2x2-s2变成3x3-s1,pool5后feature map保持较大尺度,但之后感受野改变(变小),atrous algorithm可以增大感受野。
feature map变大不能用原网络参数fintune的情况,也可采用atrous algorithm(带洞的卷积核)。

程序中pool5->fc6的卷积kernel是3,pad是6,dilation是6。膨胀的卷积核尺寸 = 膨胀系数 * (原始卷积核尺寸 - 1) + 1,所以真实的卷积核大小是13。pad=6保证输出featuremap尺度不变,仍为19×19。

为什么dilation是6,保证与原来fc6的感受野相同,作者回答如下:
The original kernel size of (convolutional) fc6 is 7 x 7. Since I subsample and reduce it to 3 x 3, dilation should be 3. Besides, I also changed pool5 from stride of 2 to stride of 1, that is how it get to 6. (The default dilation is 1, not 0)
假设pool5输入是14×14,经过pool5为7×7,再经过7 x 7卷积核得到1 x 1,这个1 x 1的feature map对应conv5 14×14。
将pool5 stride=1,则pool5输出为13 × 13,13 × 13的卷积核(dilation=6,kernel=3),仍得到1 x 1的feature map对应conv5 14×14。感受野相同。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容