SSD论文学习

深度学习 同时被 3 个专栏收录
125 篇文章 0 订阅
70 篇文章 0 订阅
68 篇文章 0 订阅

论文地址:https://arxiv.org/abs/1512.02325

SSD是在YOLO和faster R-CNN基础上进行构建的,它继承了YOLO的速度快的特点,和Faster R-CNN准确的特点。

Abstract

作者呈现了一种仅需要单个深度神经网络的目标检测方法 — SSD。SSD将物体边框的输出空间离散化为一组在每个特征图位置不同大小和形状的默认框。预测时,网络对位于每个默认框内的物体类别打分,并修正默认框位置来更好地匹配物体形状。此外,SSD网络在不同分辨率的特征图预测,这样就可以处理不同大小的物体。SSD比那些需要 object proposals(物体候选框) 的方法简单,因为它完全地去除了 proposal 生成和随后的特征再筛选的过程,把所有的计算封装在一个网络里面。这使得SSD训练起来很容易,可以直接加入检测系统里面。在PASCAL VOC, COCO, 和 ILSVRC 数据集上的实验也证明,与那些需要 object proposal 的方法比起来,SSD 在保证准确性的同时,速度更快。SSD 只需一个完整的框架来训练和测试。在Nvidia Titan X上对于一个大小是 300 × 300 300\times 300 300×300的输入,SSD在VOC2007测试上的mAP是74.3%,速度是59FPS. 对于 512 × 512 512\times 512 512×512的输入,SSD的mAP是76.9%,比Faster R-CNN要好。跟其他单阶段方法比,即便是较小的输入图像,SSD 的准确性也要更高。

1. Introduction

目前,目标检测系统基本都采用以下的流程:假设物体边框,对每个边框内进行特征再采样,最后使用分类器进行分类。这个流程比较流行,基于Faster R-CNN的方法通过选择性搜索(selective search) 在 PASCAL VOC, COCO 和 ILSVRC 上检测效果都很好。但是这些方法对于嵌入式设备来说计算量过大,甚至要有高端硬件的支持,对于实时系统来说太慢。最快的检测器 — Faster R-CNN的检测速度也只能达到7 FPS。人们因此尝试了很多其他方法来构建更快的检测器,但是增加速度大多以损失检测精度为代价。

这篇论文首先提出了基于目标检测器的网络(object detector),它不需要为边框假设进行特征再采样,但是精度却不降反升。此方法实现了高速度和高精度,在VOC2007 上的测试速度是59FPS,mAP是74.3%;而Faster R-CNN的mAP是73.2%,速度是7FPS;YOLO的mAP是63.4%,速度的是45FPS。速度的提升得益于去除了边框提议(proposals) 和随后的特征再采样。使用了一个小卷积滤波器(small convolutional filter) 来预测目标分类和边框位置的偏移,对于不同的纵横比(aspect ratio) 检测使用不同的预测器(滤波器)去处理,然后将这些滤波器应用在后面网络阶段的特征图(feature maps) 上,这是为了把检测器用来检测不同比例的图片。 这样,我们在相对低分辨率的图像上也能获得高精度的输出,还提升了检测速度。

此论文贡献主要如下:

  • 提出了SSD — 多类别 single shot 检测器, 要比其它的 single shot 检测器(YOLO)快,而且更准确;
  • SSD的核心部分是,在特征图上应用小卷积滤波器,预测分类得分和一个固定集合的默认边界框的偏移;
  • 为了实现高检测精度,在不同比例的特征图上产生不同的预测,通过纵横比来分开预测;
  • 以上的设计可以端到端训练,精度还高,甚至在低分辨率的图像上效果也不错;
  • 关于速度和精度的试验,主要在PASCAL VOC, COCO 和 ILSVRC数据集上进行,与其它方法进行比较。

2. The Single Shot Detector(SSD)

2.1 Model

SSD基于前馈卷积网络,针对那些方框里的目标类别实例,产生一个固定大小的边界框集合和分数,紧接着一个非最大抑制 (non-maximum suppression) 步骤来产生最后的检测。网络前部分是个标准结构(用于高质量图片分类),称为基网络(base network)。作者然后对网络增加了辅助结构来实现以下特性:

  • 多比例特征图检测 (Multi-scale feature maps for detection) 在基网络后增加卷积特征层,这些层按大小减少的次序连接,能够进行多尺度预测。

  • 卷积检测预测器(Convolutional predictors for detection) 通过一个卷积滤波器集合,每个新增的特征层可以产生一个固定集合的检测预测。特征层大小为 m × n m\times n m×n p p p个通道,预测参数的基本单元是一个 3 × 3 × p 3\times 3\times p 3×3×p 的小核(kernel),它要么产生一个类别的得分,要么产生一个相对于默认方框坐标的形状偏移(shape offset)。核一共要应用在有 m × n m\times n m×n个位置上,在每个位置上它都有一个输出值。边界框的偏移输出值是相对于默认的位置的。

  • 默认方框和纵横比(Default boxes and aspect ratios) 将每个特征图单元(cell) 与默认边界框的集合关联起来,这是对于网络顶层的多特征图来说的。默认方框用卷积的方式覆盖特征图,这样,每个方框对应的单元(cell) 是固定的。在每个特征映射单元上,我们预测相对于默认方框形状的偏移,以及每一类别的分数(表明每一个方框中一个类的出现)。在给定的位置有 k k k个框,对于其中的每一个,计算 c c c类别的分数,和相对于原来默认方框形状的 4 4 4个偏移。这就一共有 ( c + 4 ) k (c+4)k (c+4)k个滤波器应用到特征图的每个位置上;对于 m × n m\times n m×n的特征图,产生 ( c + 4 ) k m n (c+4)kmn (c+4)kmn个输出。默认方框跟Faster R-CNN中的 anchor 方框类似,但是作者将它们应用到不同分辨率的特征图上时,由于在一些特征图上有不同的默认方框形状,这使得我们能高效地计算出离散化可能输出方框形状的空间。

SSD 在训练中只需一张输入图像和每个目标的 ground truth 边界框。在卷积操作中,我们评估一个默认方框的集合,这些方框在每个位置有不同的纵横比,在一些特征图中有不同的比例(如(b)中的 8 × 8 8\times 8 8×8 4 × 4 4\times 4 4×4)。对于每个默认方框,预测它形状的偏移和所有物体分类的置信度( c 1 , c 2 , ⋯   , c p c_1, c_2, \cdots, c_p c1,c2,,cp)。训练时,首先将这些默认方框和 ground truth 边界框对应上。就像图中,作者匹配了2各默认方框,一个是猫,一个是狗,它们被认定为positive, 其余部分被认定为 negative. 模型损失函数是 localization loss(smooth L1) 和 confidence loss(Softmax) 的加权之和。

2.2 训练

训练SSD和训练其他使用区域提议 (region proposals) 的检测器主要区别是,ground truth 信息在固定检测器输出的情况下需要指定到特定的输出。这样,损失函数和反向传播就可以端到端的应用。训练需要选择默认方框的集合,检测比例,以及hard negative mining(对于目标检测问题就是图像中不存在目标的样本集合) 和数据增强策略等。

Matching strategy 在训练中,需要决定哪个默认框匹配一个 ground truth,由此来训练网络。对于每个从默认方框(不同位置,不同纵横比,不同比例上)中选择的 ground truth 边界框,开始时,根据最高的 jaccard overlap 来匹配 ground truth 边界框和默认方框(与MultiBox一样)。实际操作中,与 MultiBox 不同,当它们的 jaccard overlap高于阈值0.5时,作者就将默认方框认为 ground truth。这简化了学习问题,使得网络可以对多个重叠的默认方框预测得到高分,而不是仅挑选一个重合度最高的方框。

Training objective SSD的训练目标函数来自于 MultiBox,但是作者将之扩展成可处理多目标分类的问题。 x i j p = { 1 , 0 } x^p_{ij}=\{1,0\} xijp={1,0}表示,匹配第 i i i个默认方框和 p p p类别第 j j j个ground truth 边界框。这种匹配策略会出现 ∑ i x i j p ≥ 1 \sum_i x^p_{ij} \geq 1 ixijp1。整体的目标损失函数是 localization loss(loc) 和 confidence loss(conf)的加权之和:
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 N N是匹配默认框的个数,如果 N = 0 N=0 N=0,loss设为0。Localization loss 是预测边界框( l l l)和真值边界框( g g g)参数的 Smooth L1 loss。与Faster R-CNN类似,对默认边界框( d d d)中心( c x , c y cx, cy cx,cy)的偏移量进行回归, w w w是宽, h h h是高。
L l o c ( x , l , g ) = ∑ i ∈ P o s N ∑ m ∈ { c x , c y , w , h } x i j k s m o o t h L 1 ( l i m − g ^ j m ) L_{loc}(x,l,g)=\sum_{i\in Pos}^N \sum_{m\in \{cx,cy,w,h\}} x_{ij}^k smooth_{L1}(l_i^m - \hat g_j^m) Lloc(x,l,g)=iPosNm{cx,cy,w,h}xijksmoothL1(limg^jm)

g ^ j c x = ( g j c x − d i c x ) / d i w \hat g_j^{cx} = (g_j^{cx}-d_i^{cx})/d_i^w g^jcx=(gjcxdicx)/diw

g ^ j c y = ( g j c y − d i c y ) / d i h \hat g_j^{cy} = (g_j^{cy} - d_i^{cy})/d_i^h g^jcy=(gjcydicy)/dih

g ^ j w = l o g ( g j w d i w ) \hat g_j^w = log(\frac{g_j^w}{d_i^w}) g^jw=log(diwgjw)

g ^ j h = l o g ( g j h d i h ) \hat g_j^h = log(\frac{g_j^h}{d_i^h}) g^jh=log(dihgjh)

Confidence loss 是多个类别置信度的 softmax loss:

L c o n f ( x , c ) = − ∑ i ∈ P o s N x i j p l o g ( c ^ i p ) − ∑ i ∈ N e g l o g ( c ^ i 0 ) , L_{conf}(x,c) = -\sum_{i\in Pos}^N x^p_{ij}log(\hat c_i^p) - \sum_{i\in Neg} log(\hat c^0_i), Lconf(x,c)=iPosNxijplog(c^ip)iNeglog(c^i0), where c ^ i p = e x p ( c i p ) ∑ p e x p ( c i p ) . \hat c_i^p = \frac{exp(c_i^p)}{\sum_p exp(c_i^p)}. c^ip=pexp(cip)exp(cip).

α \alpha α在 cross validation 中设为1.

Choosing scales and aspect ratio for default boxes 为了处理不同的目标比例,有些方法是把图片处理成不同的大小,然后结合不同大小图片的结果。但是,在一个网络中利用多个不同的层产生的特征图来预测,也能产生类似的效果,所有比例的目标还可以共享参数。前面的研究已经证明使用底层的特征图可以提升语义分割质量,因为底层能捕捉到输入对象中细节信息。受这些方法启发,作者使用了特征图中的高层和底层特征,来进行目标检测。

网络中不同层级的特征图会有不同的receptive field(感受野)大小。在SSD中,默认框不一定要和每层中的实际感受野对应。作者设计默认框的铺设,这样特定的特征图能对特定物体的尺度做出响应。假设我们要用 m m m个特征图来预测,每个特征图的默认框尺度计算如下:
s k = s m i n + s m a x − s m i n m − 1 ( k − 1 ) , k ∈ [ 1 , m ] s_k = s_{min} + \frac{s_{max}-s_{min}}{m-1}(k-1),k\in [1,m] sk=smin+m1smaxsmin(k1),k[1,m]
s m i n s_{min} smin是0.2, s m a x s_{max} smax是0.9,意味着最低的层的尺度是0.2,最高的层尺度是0.9,所有的中间层正常间隔分布。对于默认框,作者使用不同的高宽比,表示为 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}。可以计算每个默认框的宽度 w k a = s k a r w_k^a=s_k\sqrt a_r wka=ska r和高度 h k a = s k / a r h_k^a=s_k/\sqrt a_r hka=sk/a r。对于高宽比是1的情况,增加一个尺度是 s k ′ = s k s k + 1 s_k'=\sqrt {s_k s_{k+1}} sk=sksk+1 的默认框,这样就在每个特征图位置有6个默认框。将默认框的中心设为 ( i + 0.5 ∣ f k ∣ , j + 0.5 ∣ f k ∣ ) , ∣ f k ∣ (\frac{i+0.5}{|f_k|}, \frac{j+0.5}{|f_k|}), |f_k| (fki+0.5,fkj+0.5),fk是第 k k k个正方形特征图的大小。

结合诸多特征图不同位置下所有不同尺度和高宽比的默认框,就有了一个预测结果的集合,覆盖不同大小和形状的输入对象。例如图一中,那条狗与 4 × 4 4\times 4 4×4特征图中的默认框匹配,但是不和任何 8 × 8 8\times 8 8×8特征图中的默认框匹配,因为这些默认框有着不同的尺度,与狗的默认框不匹配,因此在训练中被认为是negative。

Hard Negative Mining 匹配步骤后,默认框中的大多数都是negative, 尤其是候选框个数众多的时候。这就导致positive 和 negative 训练样本不平衡。这些negative 样本不全用,而是对于每一个默认框,通过最高置信度损失来对它们进行排序,选择最高的几个,这样negative 和 positive的比例最多是3:1。这样训练更稳定也更快。

Data augmentation
为了让模型对不同的输入大小和形状更鲁棒,每个训练图片都通过以下步骤随机选择:

  • 使用整张原始输入图片;
  • 选择图片中的一块,与物体最低的 jaccard overlap 值为0.1, 0.3, 0.5, 0.7, 0.9;
  • 随机采样某一块。

采样区块的大小在原图片 [ 0.1 , 1 ] [0.1, 1] [0.1,1]之间,高宽比介于0.5和2之间。保留真值边界框中的重叠部分,如果它的中心在采样区块内。在采样步骤后,每个采样区块缩放到固定大小,以0.5的概率来水平翻转。

3. Experiments

Pls read paper for more information.

  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏

calvinpaean

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值