SSD笔记

SSD 网络结构

  • SSD使用VGG16作为基础网络,上图的黄色部分为在VGG16基础网络上填加的特征提取层。SSD与yolo不同之处是除了在最终特征图上做目标检测之外(conv7),还增加了5个特特征图,对这6个特征图进行预测。也就是说上图的(conv4_3, conv_7)是VGG16的原有结构,(conv8_2, conv9_2, conv_10_2, pool_11)是SSD网络增加的网络增加的网络,最后进入预测环节的是(conv4_3, conv_7) +(conv8_2, conv9_2, conv_10_2, pool_11)。
  • 对于一张图片,SSD网络使用(conv8_2, conv9_2, conv_10_2, pool_11)+(conv4_3, conv_7)的特征图进行检测,可以增加小目标被检测的概率。
  • 在网络的最后需要对所有的feature map 进行分类和box坐标的预测。这里一共有8732个框如下。

不同层的feature map上面的box数量不一样,怎么计算不同特征图上box的数量,稍后讲解。(下面我会借鉴其他大神的说法prior box =box)

  • 对于特征图,特征图的每个点上面会有预测k个box坐标和k个分类值。对于一张m x n的特征图,同一层特征图上每个点的box数量设为为k个(同一层的box数量一样,不在同一层的特征图上每个点的box数量不一样,例如38x38每个点是4个box,19x19每个点是6个box),一共有c个物体类别。则这里一张特征图的网络的输出是:
    m * n * k * (c+4)。

SSD的default box开场

  • 按照Faster R-CNN的方法,SSD在feature map上的每个点生成k个default box 。这里可以把点看成是格子。

  • 在每个格子上会有形状大小不同的default box。上图中的8x8的feature map每个格子有4个default box。4x4的feature map每个格子也有4个default box。这里8x8的feature map和4x4的feature map是不同层的特征图。可以看到8x8的特征图匹配到猫,而4x4的feature map匹配到狗,我想是因为8x8特征图的视野较小,狗在图中的占比较大,而4x4特征图的视野较大可以较好的匹配较大的物体。这里也与不同特征层的匹配分工有关。下面会介绍不同特征层的box的大小,就会明白SSD网络为什么把每层网络进行分工,大box会检测大物体,小box会检测小物体。

SSD的default box设置

SSD的default box是我见过最复杂最精巧的box设置。看了论文还是没看懂,就翻翻blog,具体总结以下几点:

  1. box的数量设置
  2. box的宽比设置
  3. box的大小设置
  • box的数量设置
    38x38 的特征图每个点有4 个prior box
    19x19 的特征图每个点有6 个prior box
    10x10 的特征图每个点有6 个prior box
    5x5 的特征图每个点有6 个prior box
    3x3 的特征图每个点有4 个prior box
    1x1 的特征图每个点有4 个prior box
    box数量共有:
  • box的宽比设置
    这里截取这位博客的内容,讲解的比较详细。

特征图上的box的特征图大小按如下公式:

sk是box大小的与原图的比例比例,m=6是SSD使用的特征图的数量。

怎么计算特征图的尺寸:

上面的ar是长宽之比。ar={1,2,3,1/2,1/3},对于长宽比为1的特征图增加一个比例,

,则有6个box

在实现时,Conv4_3,Conv10_2和Conv11_2层仅使用4个先验框,它们不使用长宽比为{3,1/3}的box。

对于输出的坐标还需要进行变化坐标中心(x,y),使每个单元的先验框的中心点分布在各个单元的中心。

  • 计算特征图的大小

第一层feature map对应的min_size=S1,max_size=S2;第二层min_size=S2,max_size=S3;其他类推。Smin=0.2,Smax=0.9。

坐标变换

与Faster R-CNN类似,SSD的预测值是经过坐标变换的值l,原图片的值b需要经过变换。这里说明一下,每个default box时网络在进行预测时在每个feature map上固定的一个窗口,box的坐标与最后的预测值是不一样的,网络最后的预测是相对于box更加精确的一个位置,网络的预测值l与box的值d其实有变换关系,F(l,d) = b。更加详细的内容点这里.

SSD的预测l在图片上的值d

feature map的box的值:


SSD网络输出值,在标签进行变换用的到:

变换F(l,d) = b

超参数variance设置:

训练

由于在进行box提取时,SSD网络提出太多的box(8732个),这么多的box需要进行筛选。才能输出进行最后的输出。
关于8732个box怎么保留,训练和测试的筛选方法不一样。

  • 训练时
    1.首先,寻找与每一个ground truth box有最大的IOU的default box,这样就能保证每一个groundtruth box与唯一的一个default box对应起来。
    2.将剩余还没有配对的default box与任意一个groundtruth box尝试配对,只要两者之间的IOU大于阈值,就认为匹配(阈值为0.5)。
    4.采用hard negative mining,就是对负样本进行抽样,抽样时按照置信度误差(预测背景的置信度越小,误差越大)进行降序排列,选取误差的较大的top-k作为训练的负样本,以保证正负样本比例接近1:3。
    3.显然配对到groundtruth box的default box就是positive,没有配对到groundtruth box的default box就是negative。

测试

  1. 每个预测框,首先根据类别置信度确定其类别(置信度最大者)与置信度值,并过滤掉属于背景的预测框。然后根据置信度阈值(如0.5)过滤掉阈值较低的预测框。

  2. 留下的预测框进行解码,根据先验框得到其真实的位置参数(解码后一般还需要做clip,防止预测框位置超出图片)。解码之后,一般需要根据置信度进行降序排列,然后仅保留top-k(如400)个预测框。最后就是进行NMS算法,过滤掉那些重叠度较大的预测框。最后剩余的预测框就是检测结果了。

Loss 计算图:

网络在最后一层汇集了所有的box的预测值,shape=8372 *(4+C),对box进行筛选之后可以进行训练,总的损失由每个默认框的定位损失与分类损失构成。

需要对标签g的坐标进行变换。

若设置variance_encoded_in_target=True,编码时要加上variance:

参考:
SSD基础原理
CNN目标检测(三):SSD详解
目标检测|SSD原理与实现
晓雷的SSD详解

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

推荐阅读更多精彩内容