深度学习人工智能笔记

SSD笔记

2018-10-18  本文已影响55人  yanghedada

SSD 网络结构

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

SSD的default box开场

SSD的default box设置

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

  1. box的数量设置
  2. box的宽比设置
  3. 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. 每个预测框,首先根据类别置信度确定其类别(置信度最大者)与置信度值,并过滤掉属于背景的预测框。然后根据置信度阈值(如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详解

上一篇 下一篇

猜你喜欢

热点阅读