目标检测—SSD

本文记录的目的是方便自己学习和复习,有误之处请谅解,欢迎指出。

       近年来目标检测算法主要包括两种类型:One Stage和Two Stage。 之前已经介绍了R-CNN、Fast-RCNN以及Faster-RCNN三种目标检测网络的算法流程和理论,这三种网络都属于Two Stage,Two Stage字面意思就是需要两步完成检测,这种目标检测网络有个比较明显的缺陷是检测速度较慢。为了加快检测速度,出现了另外一种One Stage的目标检测网络,常见地例如SSD、Yolo算法。

        首先看下目前比较流行目标检测网络的性能和速度对比,如下图。从图中可以看到R-CNN、Fast-RCNN、Faster-RCNN的检测速度比较慢,准确率一般,相比之下,SSD与YOLO的速度就快很多,同时SSD的检测准确率要明显高于YOLO。下面具体介绍SSD算法

不同目标检测网络对比

        一、SSD基本框架和流程

图一
图二

                首先SSD网络结构基于VGG16进行调整,修改全连层FC6与FC7为卷积层Conv6与Conv7,后面再用卷积层获得不同尺度的特征图。算法步骤:

                    1、预训练VGG16网络参数,并修改网络结构

                    2、输入图像,抽取6中不同尺度的特征图,并且对这6种尺度特征图中每个元素点生成各种各样的Default box(生成规则后面介绍)

                    3、通过NMS(非极大值抑制)进行筛选,减少Default box数量,得到正负样本,训练模型loss

        二、多尺度检测

                SSD多尺度思路其实很简单,就是使用不同深度的特征图进行预测,SSD使用了六种尺度特征图——conv4_3,conv_7,conv8_2,conv7_2,conv8_2,conv9_2,conv10_2,conv11_2。如下图,8\times 84\times 4的特征图能够检测不同大小物体,左侧属于浅层特征,特征图中的元素能够映射到原图中范围较小,适用于检测小物体;右侧属于深层特征,每个像素点映射到原图中的范围较大,所以能够检测较大物体

        三、Default box生成与预测

                 SSD借鉴了Faster R-CNN的anchor思想,对特征图中每个元素设置不同尺度和长宽比的Default box,然后对这些Default box进行分类和位置回归,初步筛选出一些符合条件的Default box。如下图

                1、Default box数量:特征图中每个元素生成一定数量的Default box,不同尺度特征图设置的数量也不一样,例如SSD中,六种尺度特征图conv4_3,conv_7,conv8_2,conv7_2,conv8_2,conv9_2,conv10_2,conv11_2,对应的大小为(38,38),(19,19),(10,10),(5,5),(3,3),(1,1),设置的先验框数量分别为4,6,6,6,4,4,因此可以获得的总Default box数量为38\times 38\times 4+19\times 19\times 6+10\times 10\times 6+5\times 5\times 6+3\times 3\times 4+1\times 1\times 4=8732个。

                2、Default box大小:先验框的大小主要与特征图大小有关,越深的特征图先验框越大,否则反之。先验框面积比例遵循如下公式

其中m表示特征图尺度个数,SSD为5,按正常数量来讲应该为6,但是SSD的conv4_3层是单独设置的;s_{k} 表示先验框相对于原图的比例;s_{min} s_{man} 表示比例的最小值和最大值,SSD的s_{min} s_{man} 分别为0.2,0.9。

1)conv4_3:其先验框的尺度比例单独设置为s_{min} /2=0.1,则相对于原图的大小为300\times 0.1=30

2)其他5层:对于后面的特征图,先验框尺度按照上面公式线性增加,但是先将尺度比例先扩大100倍,\frac{(s_{man}\times 100 ) - (s_{min}\times 100 )}{m-1} =17,则各个尺度的s_{k} 分别为20,37,54,71,88,将这些比例除以100,然后再乘以图片大小,可以得到各个特征图的尺度为60,111,162,213,264

至此,得到了每种特征图先验框的大小,然后就是设置不同长宽比即可。SSD设置了6中比例(1,2,3,\frac{1}{2} ,\frac{1}{3},1^,)

                3、Default box分类与回归:怎么对这些Default box进分类和回归呢?先来看看特征图中每个元素点需要多少个输出,假设分类类别为20,每个元素会生成6个Default box,则分类需要(20+1)\times 6个输出,+1表示背景也算一类,边框回归需要4\times 6个输出。每一个元素都需要这么多输出,SSD使用3\times 3卷积分别对先验框类别和位置进行预测,所以分类需要的卷积核数量为(20+1)*6,位置回归需要4*6个卷积核。

        四、正负训练样本

                    通过第三部分得到非常多的先验框,一般不会使用所有的先验框进行训练,需要进行筛选。首先使用的NMS(非极大值抑制,这是一种常用于目标检测减少先验框的方法)减少重复度高的先验框。现在再来确定训练需要的正负样本,筛选规则如下:

                    1、首先,对于图片中每个Ground truth,找到与其IOU最大的先验框,该先验框与其匹配,标记为正样本,反之,若先验框没有与任意一个ground truth匹配则为负样本。这样可以保证每个Ground truth一定与某个先验框匹配。

                    2、第一步存在一个问题是,会造成过多的负样本,正样本非常少。因此需要增加正样本数量,对于剩余的未匹配先验框,若某个Ground truth的IOU大于某个阈值(一般是0.5),那么该先验框也与这个Ground truth进行匹配。这意味着某个ground truth可能与多个先验框匹配,这是可以的。但是反过来不可以,一个先验框只能匹配一个Ground truth,如果多个ground truth与某个先验框IOU大于阈值,那么先验框只与IOU最大的那个ground truth进行匹配。

                    3、如果某个Ground truth所对应最大IOU先验框小于阈值,并且所匹配的先验框却与另外一个Ground truth的IOU大于阈值,那么该先验框应该匹配谁,答案应该是前者。(首先要确保某个ground truth一定有一个先验框与之匹配)

正负样本

                    如图所示,TP、FP表示正样本和负样本,GT表示Ground truth

                    尽管一个ground truth可以与多个先验框匹配,但是正样本还是太少了,所以负样本相对正样本会很多。为了保证正负样本尽量平衡,SSD采用了hard negative mining,就是对负样本进行抽样,抽样时按照置信度误差(预测背景的置信度越小,误差越大)进行降序排列,选取误差的较大的top-k作为训练的负样本,以保证正负样本比例接近1:3。

        五、损失函数

                    损失函数与Faster RCNN基本差不多包括分类损失和坐标回归损失。分类损失使用多分类交叉熵损失,位置坐标回归损失与Fast RCNN一样使用Smooth_{L1} (可以看之前RCNN和Fast RCNN),回归坐标偏移量。公式如下:

总损失
位置坐标回归损失
多分类交叉熵损失
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343