SSD(2016)

在这里插入图片描述

introduction

提出一种简单的叫SSD的深度神经网络用于目标检测,该方法有几个特点:

  • 把边界框的输出空间离散为在feature map的每个位置上具有不同大小和尺寸的一组默认的box
  • 网络结合了来自不同分辨率的多个feature map的预测,可以自然的处理不同大小的目标
  • 第一个基于目标检测器的不需要为边界框采样像素或特征的深度网络,同时与那些采样的方法一样精确。

SSD大大提升了高精度检测的速度,59FPS with mAP 74.3% on VOC 2007 test,VS.Faster R-CNN 7FPS with mAP 73.2% or YOLO 45 FPS with mAP 63.4%.这种提升是因为消除了bounding box proposals 以及后续的像素或特征重采样阶段。通过一系列提升,可以大大增加精度。主要包括以下几个方面:

  1. 使用小的卷积滤波器去预测bounding box 位置目标类别和offsets。
  2. 将单独的预测器(滤波器)用于不同纵横比的检测,而且将这些滤波器用于网络最后一个阶段的多个feature maps上以用于在多个scales上进行检测。

通过这些修改特别是使用多个层在不同尺度上进行预测,可以在低分辨率的输入上取得较高精度的检测结果,进一步增加检测速度。

作者将主要贡献总结为以下几个方面:

  • 相比于目前单阶段的yolo 速度更快,比起较慢的Faster R-CNN等需要RPN 和pooling的技术更准确、更快。
  • SSD的核心是使用小的卷积滤波器到feature maps上,为默认的bounding box的集合预测类别分数和box offsets。
  • 为了取得高精度,不同scales的feature map产生不同scales的预测结果,并且根据纵横比显式的分离预测结果。
  • 这些设计特征引导了一个端到端的训练过程,即使在低分辨率图像输入上也嗯呢取得精度和速度的平衡。
SSD

在这里插入图片描述

图1 框架
default box

Faster R-CNN中采用了RPN在顶层特征图上对建议框进行预测,为了使建议框能代表不同大小的目标,采用了3种不同比例和尺寸共9种anchor。SSD作为单阶检测方法,不对建议框进行预测,直接对目标得边界框进行预测,预测时,引入了default box的概念(相当于Faster R-CNN中的anchor),SSD在不同尺寸特征图上检测不同不同尺寸的目标,因此不同尺寸的default box会由不同尺寸的特征图表示,越靠近顶层的default box尺寸越大,用来检测较大目标,越靠近底层的default box 尺寸越小用来检测小目标,如图中所示,8x8中的蓝色框用来预测猫,4x4中的红色框用来预测狗。

上图所示为不同scales的feature map,分别为 8 ∗ 8 / 4 ∗ 4 8*8/4*4 88/44,每个feature map上的每个cell生成4个bounding box,评估在每个位置具有不同比例的default box的集合,对于每个bounding box预测其形状偏移和所有类别的置信度分数。在训练期间,首先将这些默认box与真实框进行匹配,例如两个默认框匹配狗,一个匹配猫,就将其视为正样本,其余的视为负样本。模型损失是位置损失和置信度损失的加权和。

Model

SSD是基于前馈神经网络+NMS的结构,前馈网络用于生成bounding box的固定尺寸的集合以及在这些box中的目标实例存在性得分,随后跟着一个非极大值抑制NMS用于生成最后的检测输出。早期的网络使用一个高质量的图像分类网络分类层之前的部分,作者称为base network,就是backbone,这里作者增添了辅助结构用来生成具有以下重要特征的检测:
在这里插入图片描述

图2 结构
  • 多尺度特征映射用于检测.在基础网络的末尾添加几个卷积层,这些层的尺寸逐渐减小,用来预测多尺度检测,用来预测检测的得模型在每一个特征层都不同。如上图所示,在额外的特征层中,卷积的尺寸越来越小。

  • 用于检测的卷积预测器。每一个添加的特征层(或基础网络现有的特征层)可以使用一系列卷积滤波器生成检测预测的固定集合。如图2所示这些层位于SSD网络的顶层。对于一个拥有p个channel,m*n大小的特征layer,用于预测潜在检测参数的基本元素是一个** 3 ∗ 3 ∗ p 3*3*p 33p**的小卷积核,用来为每一个类别生成一个score,以及相对于默认box坐标的形状偏移。 m ∗ n m*n mn的每个位置这个小核都被使用,生成输出值。

  • 默认box & 纵横比。对于网络顶层的多个feature map,将一组默认box与每一个feature map的cell对应起来,默认box以卷积的方式平铺满了整个feature map,所以每个对应于cell的box的位置是固定的,对于一个拥有k个默认box的的cell,要计算C个score(C个类别)和对应于原始默认box的形状偏移–4个坐标,所以在feature map的每个位置应用 ( C + 4 ) ∗ K (C+4)*K C+4K个滤波器,对于 m ∗ n m*n mn大小的feature map,一共产生 ( C + 4 ) ∗ K ∗ m ∗ n (C+4)*K*m*n (C+4)Kmn输出。

训练

训练SSD与训练使用region proposal的网络重要区别在于,需要将ground truth information 分配给检测输出集合的特定输出。一旦确定了分配,就端到端的应用损失函数和反向传播,训练包括选择默认box的集合和检测尺寸,以及硬负样本挖掘和数据增强策略。

匹配策略

在训练过程中,需要确定哪些默认box对应于真实检测,并相应地训练网络。对于每个ground truth box,从不同位置、纵横比和不同尺寸的default box中挑选。将每个ground truth box 与具有最佳IoU的default box进行匹配。然后将default boxes与具有iou大于0.5的ground truth box进行匹配。这样做简化了学习问题,允许网络预测多个重叠的默认box的最高分,而不是要求它只选择Iou最大的一个。

训练目标

SSD训练源于Multibox Objective方法,但是扩展到可以处理多目标类别。设 x i , j p = { 1 , 0 } x_{i,j}^{p}=\{1,0\} xi,jp={1,0}是将第 i i i个default box与类别 p p p的第 j j j个ground truth box进行匹配的指示器。根据以上的匹配策略,我们有 ∑ i x i , j p ⩾ 1 \sum_{i}x_{i,j}^{p}\geqslant1 ixi,jp1, 总的目标损失为定位损失和置信度损失的加权和:
L ( x , c , l , g ) = 1 N ( L c o n f ( x , c ) + α L l o c ( x , l , g ) ) L(x,c,l,g)=\frac{1}{N}(L_{conf}(x,c)+\alpha L_{loc}(x,l,g)) L(x,c,l,g)=N1(Lconf(x,c)+αLloc(x,l,g))

这里N代表匹配default boxes的数目,如果N=0,则设置损失为0.

定位损失(localization loss)是预测box( l l l)与ground truth box( g g g)参数之间的smooth L1 损失。类似于Faster R-CNN ,回归计算default box的中心坐标( c x , c y cx,cy cx,cy)以及宽度( w w w)和高度( h h h)。

在这里插入图片描述
置信度损失(confidence loss)是多个类别置信的sofrmax损失( C C C),通过交叉验证他将权重 α \alpha α设为1.
在这里插入图片描述

为default box选择scales与aspect

使用了底层和高层的特征map用于检测,图1 显示了框架中使用的两个特征映射的例子(8x8与4x4来源于不同layer输出),实际上可以使用更多。同一个网络中来源于不同level的的feature map具有不同的感受野大小。而在SSD中,默认box不需要与每一层的实际感受野相对应。作者设计了default box的平铺,以便特定feature map学习对目标的实际scales做出反应。假设想要使用m个feature maps来作预测,则每个feature map的default box的得scale计算如下:
在这里插入图片描述
这里 S m i n = 0.2 , s m a x = 0.9 S_{min}=0.2,s_{max}=0.9 Smin=0.2,smax=0.9,意味着最底层的规模为0.2,最高层的规模为0.9.,所有中间层按规则间隔开。对default box实行不同纵横比,将其表示为 a r ∈ { 1 , 2 , 3 , 1 2 , 1 3 } a_r \in\{1,2,3,\frac{1}{2} ,\frac{1}{3}\} ar{1,2,3,21,31}.计算每一个default box的宽度为( w k a = s k a r w_{k}^{a}=s_{k}\sqrt{a_r} wka=skar ),高度( h k a = s k / a r h_{k}^{a}=s_{k}/\sqrt{a_r} hka=sk/ar ).

对于长宽比为1 的,增加一个scale是 s k ′ = s k s k + 1 s_{k}^{\prime}=\sqrt{s_k s_{k+1}} sk=sksk+1 ,结果在每个feature map位置有6个default box。作者设置每一个default box 的中心为( i + 0.5 ∣ f k ∣ , j + 0.5 ∣ f k ∣ \frac{i+0.5}{\left | f_k \right|},\frac{j+0.5}{\left |f_k \right |} fki+0.5,fkj+0.5),这里 ∣ f k ∣ \left | f_k \right | fk是第k个正方形特征映射的尺寸,
i , j ∈ [ 0 , ∣ f k ∣ ] i,j\in[0,\left |f_k \right|] i,j[0,fk]

通过组合来自许多feature map的所有位置的不同尺寸和比例的default boxes,可以获得涵盖了各种的输入对象大小和形状的多样化的预测集。例如,在图1 中,狗与4X4的feature map中default box匹配,但不与8x8 feature map 中的任何框匹配

难负样本挖掘

匹配之后,大多数default box都是负样本,这导致了正负样本之间比例不均衡,将所有负样本按照每个default box的最高置信度进行排序,选择最上面的样本,使得正负样本比例最高为1:3,这会得到更快的优化和更稳定的训练。

实验

在这里插入图片描述

VOC2007 数据集结果

在PACAL VOC2007 test上对SSD 、Fast R-CNN 、Faster R-CNN进行比较,两个SSD模型除了输入大小不一样外(300X300、500X500),其它设置都一样,显然SSD超越了Faster R-CNN,并且数据集越大、输入尺寸越大,结果越好。

在这里插入图片描述

VOC2012 数据集结果

在VOC2012上进行同样的实验,结论与VOC2007是一样的。
在这里插入图片描述

COCO 数据集结果
在这里插入图片描述

多个数据集上测试
消融实验

在这里插入图片描述
设计了各种实验选项验证每一部分的作用,消融实验更多的是一种猜测,很多文章并没有详细的理论依据和具体说明,仅仅是根据实验结果反推证明实验方法有用的一种手段,所以如果在论文写作中可以在这个部分给出更多的理论分析应该是文章的一个亮点。

根据作者在论文中描述需要有以下几个结论:

  1. 数据增强很重要,作者的方法基于YOLO,扩展了抽样策略,从Table 2 可以看出来第一列和最后一列增加了8.8%mAP,但该策略对R-CNN系列不一定有用,因为他们使用了特征池化技术,比较鲁棒。
  2. 多种比例和尺寸的default box shape 似乎有助于简化任务
  3. VGG16上采样的atrous 版本有用,不使用这个方法,速度要下降20%
  4. 使用多个不同分辨率的输出层效果更好
    在这里插入图片描述
    SSD的一大贡献就是在不同的输出层上采用不同scales的default box,也就是使用金字塔预测,不同卷积层包含的特征层尺寸不一样,综合多个卷积层的检测结果来实现不同尺寸目标的检测,在多层特征图上进行预测,并在不同尺寸的特征图上进行不同尺寸目标的预测。

为了公平比较,一层一层逐渐移除,作者调整default box平铺feature map保持box数目与原始类似(8732).这是通过在保留下来的层上堆叠更多scales的boxes实现的,有需要的话就调整box的scales。在每一种设置中,作者并没有过度优化这种平铺,Table 3 上展示了实验结果。可以发现,随着layer的减少,精度逐渐降低。

作者观察发现了这样一种趋势,如果使用非常粗粒度的特征映射,那么会极大的损害模型性能(例如conv 11_2或者conv 10_2),原因可能是在剪枝之后(去掉layer之后)我们并没有足够大的box来覆盖大的对象。当主要使用细粒度的特征映射后,模型性能开始提升,如果仅仅使用conv 7,那结果是最坏的。这种现象再次强调了这样一个信息:在不同layers上扩展不同scales的boxes是重要的

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值