【论文学习笔记005】SSD

1.论文信息

题目SSD: Single Shot MultiBox Detector
作者Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed4, Cheng-Yang Fu1, Alexander C. Berg
年份2016
期刊ECCV
论文地址https://arxiv.org/pdf/1512.02325.pdf
项目地址https://github.com/weiliu89/caffe/tree/ssd

2. 论文创新点

  • 在多个特征图上直接预测default box(Faster RCNN中的anchor)的类别得分、偏移量
  • 采用了多尺度多高宽比的特征图进行预测

3.欲解决的问题

  • 实现Faster RCNN的精度与YOLO速度的结合

4.解决方案

4.1 模型结构

在这里插入图片描述

  • 网络结构如上图所示。
  • 采用VGG-16作为基础模型,在此基础上增加了卷积层得到更多的特征图进行预测。输入图片大小为300x300(文中还有512x512),将VGG16的全连接层fc6和fc7转换成3×3卷积层 conv6和1×1卷积层conv7,同时将池化层pool5由原来的stride=2的2×2变成stride=1的3×3
4.1.1 采用多尺度特征图用于检测

在这里插入图片描述

  • 在基础模型后增加了一些卷积层,这些卷积层的大小逐渐减小,用来进行多尺度的检测。
  • 比较大的特征图用来检测小目标,比较小的特征图用来检测大目标
  • 如上图所示,8x8的特征图可以划分更多的单元,但是其每个单元的先验框尺度比较小,而4x4的特征图每个单元的先验框尺度比较大。
4.1.2 采用卷积进行检测
  • 每个新添加的层采用一系列的卷积核进行预测
  • 对于一个mxnxp的特征图,采用3x3xp的卷积核进行预测,产生类别得分或者相对于先验框的偏移量
4.1.3 设置先验框

在这里插入图片描述

  • 每个单元设置不同尺度不同长宽比的先验框,预测框是以这些先验框为基准的。
  • 每个单元预测k个box,每个box预测C个类别得分以及相对于先验框的4个偏移量;因此需要(C+4)k个预测器,在mxn的特征图上产生(C+4)kmn个预测值。
4.2 模型训练
4.2.1 先验框匹配

在这里插入图片描述

  • 首先,将每个Ground Truth与具有最大jaccard overlap(即IOU)的Default Box进行匹配,这样保证每个Ground Truth都有先验框匹配;与Ground Truth匹配的先验框为正样本,反之为负样本
  • 其次,为了防止正负样本不平衡,剩余先验框与Ground Truth的jaccard overlap大于0.5的也可进行匹配,这样一个Ground Truth可以与多个先验框匹配
4.2.2 损失函数
  • 总损失函数定义为位置误差与置信度误差的加权和:
    L ( x , c , l , g ) = 1 N ( L con ⁡ f ( x , c ) + α L loc ⁡ ( x , l , g ) ) L(x, c, l, g)=\frac{1}{N}\left(L_{\operatorname{con} f}(x, c)+\alpha L_{\operatorname{loc}}(x, l, g)\right) L(x,c,l,g)=N1(Lconf(x,c)+αLloc(x,l,g))
    其中,N是先验框正样本的个数; x i j p ∈ { 1 , 0 } x_{i j}^{p} \in\{1,0\} xijp{1,0}是一个指示函数,当 x i j p = 1 x_{i j}^{p}=1 xijp=1时,第i个先验框与第j个Ground Truth匹配,且Ground Truth的类别为p;c为类别置信度预测值;l为预测框位置参数;g为Ground Truth的位置参数。
  • 对于位置误差,采用Smooth L1 loss:
    L l o c ( x , l , g ) = ∑ i ∈ P o s ∑ m ∈ { c x , c y , w , h } x i j k smooth ⁡ L 1 ( l i m − g ^ j m ) g ^ j c x = ( g j c x − d i c x ) / d i w g ^ j c y = ( g j c y − d i c y ) / d i h g ^ j w = log ⁡ ( g j w d i w ) g ^ j h = log ⁡ ( g j h d i h ) \begin{aligned} L_{l o c}(x, l, g)=& \sum_{i \in P o s} \sum_{m \in\{c x, c y, w, h\}} x_{i j}^{k} \operatorname{smooth}_{\mathrm{L} 1}\left(l_{i}^{m}-\hat{g}_{j}^{m}\right) \\ \hat{g}_{j}^{c x}=\left(g_{j}^{c x}-d_{i}^{c x}\right) / d_{i}^{w} & \hat{g}_{j}^{c y}=\left(g_{j}^{c y}-d_{i}^{c y}\right) / d_{i}^{h} \\ \hat{g}_{j}^{w}=\log \left(\frac{g_{j}^{w}}{d_{i}^{w}}\right) & \hat{g}_{j}^{h}=\log \left(\frac{g_{j}^{h}}{d_{i}^{h}}\right) \end{aligned} Lloc(x,l,g)=g^jcx=(gjcxdicx)/diwg^jw=log(diwgjw)iPosm{cx,cy,w,h}xijksmoothL1(limg^jm)g^jcy=(gjcydicy)/dihg^jh=log(dihgjh)
    smooth ⁡ L 1 ( x ) = { 0.5 x 2  if  ∣ x ∣ < 1 ∣ x ∣ − 0.5  otherwise  \operatorname{smooth}_{L_{1}}(x)=\left\{\begin{array}{ll}{0.5 x^{2}} & {\text { if }|x|<1} \\ {|x|-0.5} & {\text { otherwise }}\end{array}\right. smoothL1(x)={0.5x2x0.5 if x<1 otherwise 
    其中, g ^ \hat{g} g^为g的编码值;d为先验框的位置参数
  • 对于置信度误差,采用Softmax loss:
    L c o n f ( x , c ) = − ∑ i ∈ P o s N x i j p log ⁡ ( c ^ i p ) − ∑ i ∈ N e g log ⁡ ( c ^ i 0 )  where  c ^ i p = exp ⁡ ( c i p ) ∑ p exp ⁡ ( c i p ) L_{c o n f}(x, c)=-\sum_{i \in P o s}^{N} x_{i j}^{p} \log \left(\hat{c}_{i}^{p}\right)-\sum_{i \in N e g} \log \left(\hat{c}_{i}^{0}\right) \quad \text { where } \quad \hat{c}_{i}^{p}=\frac{\exp \left(c_{i}^{p}\right)}{\sum_{p} \exp \left(c_{i}^{p}\right)} Lconf(x,c)=iPosNxijplog(c^ip)iNeglog(c^i0) where c^ip=pexp(cip)exp(cip)
    其中,权重系数 α \alpha α通过交叉验证设置为1
4.2.3 选择先验框的尺度与高宽比
  • 先验框不需要和每一层的感受野相对应,特定的特征图负责处理图像中特定尺度的物体
  • 在每个特征图上,先验框的尺度计算公式如下:
    s k = s min ⁡ + s max ⁡ − s min ⁡ m − 1 ( k − 1 ) , k ∈ [ 1 , m ] s_{k}=s_{\min }+\frac{s_{\max }-s_{\min }}{m-1}(k-1), \quad k \in[1, m] sk=smin+m1smaxsmin(k1),k[1,m]
    其中,最小尺度 S min ⁡ \mathcal{S}_{\min } Smin为0.2;最大尺度 S max ⁡ \mathcal{S}_{\max } Smax为0.9;m为特征图的个数(本文为5)
  • 对于高宽比,一般选取 a r ∈ { 1 , 2 , 3 , 1 2 , 1 3 } a_{r} \in\left\{1,2,3, \frac{1}{2}, \frac{1}{3}\right\} ar{1,2,3,21,31}
  • 每个先验框,宽度、高度、中心点计算公式如下:
    w k a = s k a r h k a = s k / a r ( i + 0.5 1 f k , j + 0.5 ∣ f k ∣ ) \begin{aligned} w_{k}^{a} &=s_{k} \sqrt{a_{r}} \\ h_{k}^{a} &=s_{k} / \sqrt{a_{r}} \\\left(\frac{i+0.5}{1 f_{k}},\right.&\left.\frac{j+0.5}{\left|f_{k}\right|}\right) \end{aligned} wkahka(1fki+0.5,=skar =sk/ar fkj+0.5)
    对于高宽比为1,额外增加一个先验框,其尺度为 s k ′ = s k s k + 1 s_{k}^{\prime}=\sqrt{s_{k} s_{k+1}} sk=sksk+1
4.2.4 负样本抽样
  • 经过匹配后,很多先验框是负样本,这将导致正负样本不均衡,训练难以收敛
  • 抽样时按照置信度误差进行降序排列,选取误差的较大的top-k作为训练的负样本,以保证正负样本比例接近1:3
4.2.5 数据增强
  • 采用了两中数据增强方式:放大操作,缩小操作
  • 对于放大操作,随机采样,patch与任意一个目标的IOU为0.1、0.3、0.5、0.7、0.9,每个patch的大小为原图大小的[0.1,1],高宽比在1/2到2之间,能够生成更多的尺度较大的目标
  • 对于缩小操作, 首先创建16倍原图大小的画布,然后将原图放置其中,然后随机采样,能够生成更多尺度较小的目标

5.几点思考

5.1 为什么要设置不同高宽比的先验框
  • 先验框其实就是实际训练样本,如果只设置了高宽比为1的先验框,最多只有1个先验框匹配到,如果设置更多高宽比的先验框,将会有更多的先验框匹配到,也就相当于有更多的训练样本参与训练,模型训练效果越好,检测精度越高。
  • 实验结果表明,增加高宽比为1/2,2,1/3,3的先验框,mAP从71.6%提高到了74.3%。
    在这里插入图片描述

6.论文结果

  • PASCAL VOC2007
    在这里插入图片描述
  • PASCAL VOC2012
    在这里插入图片描述
  • COCO
    在这里插入图片描述

7.待解决的问题

  • SSD对小目标的检测效果一般,小目标在高层没有足够的信息。
  • 先验框没有对齐感受野,通常几个像素的中心位置偏移,对大目标来说IOU变化不会很大,但对小目标IOU变化剧烈,尤其感受野不够大的时候,先验框很可能偏移出感受野区域,影响性能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值