SSD论文笔记

论文原文

参考:目标检测算法之SSD

摘要

提出了一种使用单个深度神经网络来检测图像中的目标的方法。我们的方法命名为SSD,将边界框的输出空间离散化为不同长宽比的一组默认框和并缩放每个特征映射的位置。在预测时,网络会在每个默认框中为每个目标类别的出现生成分数,并对框进行调整以更好地匹配目标形状。
网络还结合了不同分辨率的多个特征映射的预测,自然地处理各种尺寸的目标。

1. 引言

提出了第一个基于深度网络的目标检测器,它不对边界框假设的像素或特征进行重采样,并且与其它方法有一样精确度。
速度的根本改进来自消除边界框提出和随后的像素或特征重采样阶段。
改进包括使用小型卷积滤波器来预测边界框位置中的目标类别和偏移量,使用不同长宽比检测的单独预测器(滤波器),并将这些滤波器应用于网络后期的多个特征映射中,以执行多尺度检测。
贡献如下:

  • 引入了SSD,这是一种针对多个类别的单次检测器,比先前的先进的单次检测器(YOLO)更快,并且准确得多,事实上,与执行显式区域提出和池化的更慢的技术具有相同的精度(包括Faster R-CNN)。
  • SSD的核心是预测固定的一系列默认边界框的类别分数和边界框偏移,使用更小的卷积滤波器应用到特征映射上。
  • 为了实现高检测精度,我们根据不同尺度的特征映射生成不同尺度的预测,并通过纵横比明确分开预测。
  • 这些设计功能使得即使在低分辨率输入图像上也能实现简单的端到端训练和高精度,从而进一步提高速度与精度之间的权衡。
  • 实验包括在PASCAL VOC,COCO和ILSVRC上评估具有不同输入大小的模型的时间和精度分析,并与最近的一系列最新方法进行比较

The Single Shot Detector (SSD)

SSD framework:
-对于每个对象训练,SSD只需要一个输入图像和ground truth boxes。卷积的方式,我们评价一系列小的(例如:4)。不同aspect ratios的default boxes在几个特征图的每个位置,不同尺度(例如8×8和4×4 (b)和©)。对于每个each default box,我们预测shape offsets和confidence为所有对象类别( ( c 1 , c 2 ⋅ ⋅ ⋅ c p ) (c_1, c_2···c _p) (c1,c2cp))。在训练期间,我们首先把default boxes与ground truth boxes相匹配。

2.1 Model

SSD方法基于前馈卷积网络,该网络产生固定大小的边界框集合,并对这些边界框中存在的目标类别实例进行评分,然后进行非极大值抑制步骤来产生最终的检测结果。早期的网络层基于用于高质量图像分类的标准架构(在任何分类层之前被截断),我们将其称为基础网络。

在这里插入图片描述
采用VGG16做基础模型,首先VGG16是在ILSVRC CLS-LOC数据集预训练。分别将VGG16的全连接层fc6和fc7转换成3×3卷积层conv6和1×1卷积层conv7,同时将池化层pool5由原来的2×2-s2变成3x3-s1,为了配合这种变化,采用了一种Atrous Algorithm,其实就是conv6采用扩展卷积或带孔卷积(Dilation Conv),其在不增加参数与模型复杂度的条件下指数级扩大卷积的视野,其使用扩张率(dilation rate)参数,来表示扩张的大小,如下图7所示,(a)是普通的3×3卷积,其视野就是3×3,(b)是扩张率为2,此时视野变成7×7,©扩张率为4时,视野扩大为15×1515×15,但是视野的特征更稀疏了。Conv6采用3×33×3大小但dilation rate=6的扩展卷积。
在这里插入图片描述
然后移除dropout层和fc8层,并新增一系列卷积层,在检测数据集上做finetuing。

Multi-scale feature maps for detection
在base network后,添加一些卷积层,这些层的大小逐渐减小,可以进行多尺度预测

Convolutional predictors for detection
每一个新添加的层,可以使用一系列的卷积核进行预测。对于一个大小为m*n、p通道的特征层,使用3x3的卷积核进行预测,在某个位置上预测出一个值,该值可以是某一类别的得分,也可以是相对于default bounding boxes的偏移量,并且在图像的每个位置都将产生一个值。

Default boxes and aspect ratios
对于网络顶部的多个特征映射,我们将系列默认边界框与每个特征映射单元相关联。在每个特征映射单元中,我们预测单元中相对于默认边界框形状的偏移量,以及指出每个边界框中存在的每个类别实例的类别分数。在特征图的每个位置预测K个box。对于每个box,预测C个类别得分,以及相对于default bounding box的4个偏移值,这样需要(C+4)k个预测器,在mn的特征图上将产生(C+4)km*n个预测值。这里,default bounding box类似于FasterRCNN中anchors。
SSD在不同的特征层中考虑不同的尺度,RPN在一个特征层考虑不同的尺度。

2.2 训练

训练SSD和训练使用region proposals的典型检测器之间的关键区别:需要将ground truth信息分配给一系列固定的检测器输出中的特定输出。
Matching Strategy
在Yolo中,ground truth的中心落在哪个单元格,该单元格中与其IOU最大的边界框负责预测它。SD中却完全不一样,SSD的先验框与ground truth的匹配原则主要有两点:

  • 对于图片中每个ground truth,找到与其IOU最大的先验框,该先验框与其匹配,这样,可以保证每个ground truth一定与某个先验框匹配。通常称与ground truth匹配的先验框为正样本,反之,若一个先验框没有与任何ground truth进行匹配,那么该先验框只能与背景匹配,就是负样本。一个图片中ground truth是非常少的, 而先验框却很多,如果仅按第一个原则匹配,很多先验框会是负样本,正负样本极其不平衡,所以需要第二个原则。
  • 对于剩余的未匹配default box,若与某个ground truth的IOU大于某个阈值(一般是0.5),那么该default box也与这个ground truth进行匹配。这意味着某个ground truth可能与多个default box匹配。

一个匹配示意图,其中绿色的GT是ground truth,红色为先验框,FP表示负样本,TP表示正样本。
在这里插入图片描述

Training Objective
x i j p = { 1 , 0 } x_{ij}^p = \lbrace 1,0 \rbrace xijp={1,0}是第 i i i个default box匹配到类别 p p p的第 j j j个实际ground truth, ∑ i x i j p ≥ 1 \sum_i x_{ij}^p \geq 1 ixijp1,总体目标损失函数是定位损失(loc)和置信度损失(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是匹配的默认边界框的数量。定位损失是 predicted box( l l l)与ground truth box( g g g)参数之间的Smooth L1损失。类似于Faster R-CNN,我们回归默认边界框( d d d)的中心偏移量( c x , c y c_x, c_y 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 ) 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 ) L_{loc}(x,l,g) = \sum_{i \in Pos}^N \sum_{m \in \lbrace cx, cy, w, h \rbrace} x_{ij}^k \mathtt{smooth}_{L1}(l_{i}^m - \hat{g}_j^m) \\ \hat{g}_j^{cx} = (g_j^{cx} - d_i^{cx}) / d_i^w \quad \quad \hat{g}_j^{cy} = (g_j^{cy} - d_i^{cy}) / d_i^h \\ \hat{g}_j^{w} = \log\Big(\frac{g_j^{w}}{d_i^w}\Big) \quad \quad \hat{g}_j^{h} = \log\Big(\frac{g_j^{h}}{d_i^h}\Big) Lloc(x,l,g)=iPosNm{cx,cy,w,h}xijksmoothL1(limg^jm)g^jcx=(gjcxdicx)/diwg^jcy=(gjcydicy)/dihg^jw=log(diwgjw)g^jh=log(dihgjh)

置信度损失是在多类别置信度( c c c)上的softmax损失,通过交叉验证权重项 α \alpha α设为1。
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 ) w h e r e c ^ i p = exp ⁡ ( c i p ) ∑ p exp ⁡ ( c i p ) L_{conf}(x, c) = - \sum_{i\in Pos}^N x_{ij}^p log(\hat{c}_i^p) - \sum_{i\in Neg} log(\hat{c}_i^0)\quad \mathtt{where}\quad\hat{c}_i^p = \frac{\exp(c_i^p)}{\sum_p \exp(c_i^p)} Lconf(x,c)=iPosNxijplog(c^ip)iNeglog(c^i0)wherec^ip=pexp(cip)exp(cip)

Choosing Scales and Aspect Ratios for Default Boxes
为了处理不同尺度的物体,一些文章,如:Overfeat,处理不同大小的图像,然后将结果综合。实际上,采用同一个网络,不同层上的feature map,也能达到同样的效果。图像分割算法FCN表明,采用低层的特征图可以提高分割效果,因为低层保留的图像细节信息比较多。

其中VGG16中的Conv4_3层将作为用于检测的第一个特征图,conv4_3层特征图大小是38×38,但是该层比较靠前,其norm较大,所以在其后面增加了一个L2 Normalization层(和Batch Normalization层不太一样,其仅仅是对每个像素点在channle维度做归一化,而Batch Normalization层是在[batch_size, width, height]三个维度上做归一化)。从后面新增的卷积层中提取Conv7,Conv8_2,Conv9_2,Conv10_2,Conv11_2作为检测所用的特征图,加上Conv4_3层,共提取了6个特征图,其大小分别是 ( 38 , 38 ) , ( 19 , 19 ) , ( 10 , 10 ) , ( 5 , 5 ) , ( 3 , 3 ) , ( 1 , 1 ) (38, 38), (19, 19), (10, 10), (5, 5), (3, 3), (1, 1) (38,38),(19,19),(10,10),(5,5),(3,3),(1,1),但是不同特征图设置的Default Boxes数目不同(同一个特征图上每个单元设置的Default Boxes是相同的)

对于先验框的尺度,其遵守一个线性递增规则:随着特征图大小降低,default boxes尺度线性增加。假设我们要使用m个特征图进行预测,每个特征图的default Boxes尺度计算如下:
s k = s min + s max − s min m − 1 ( k − 1 ) , k ∈ [ 1 , m ] s_k = s_\text{min} + \frac{s_\text{max} - s_\text{min}}{m - 1} (k - 1),\quad k\in [1, m] sk=smin+m1smaxsmin(k1),k[1,m]其中 s min s_\text{min} smin为0.2, s max s_\text{max} smax为0.9
为default boxes添加不同的长宽比,并将它们表示为 a r ∈ 1 , 2 , 3 , 1 2 , 1 3 a_r \in {1, 2, 3, \frac{1}{2}, \frac{1}{3}} ar1,2,3,21,31。可以计算每个default boxes的宽度( 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 )。对于 aspect ratio = 1,额外增加一个default box,该box的尺度为 s ’ k = s k s k + 1 s’_k = \sqrt{s_k s_{k+1}} sk=sksk+1 ,在每个特征图位置得到6个default boxes。我们将每个default boxes的中心设置为 ( i + 0.5 ∣ f k ∣ , j + 0.5 ∣ f k ∣ ) (\frac{i+0.5}{|f_k|}, \frac{j+0.5}{|f_k|}) (fki+0.5,fkj+0.5),其中 ∣ f k ∣ |f_k| fk是第 k k k个特征图的大小, i , j ∈ [ 0 , ∣ f k ∣ ) i, j\in [0, |f_k|) i,j[0,fk)

Hard Negative Mining
ground truth匹配的先验框为正样本,反之,若一个先验框没有与任何ground truth进行匹配,那么该先验框只能与背景匹配,就是负样本。尽管一个ground truth可以与多个先验框匹配,但是ground truth相对先验框还是太少了,经过matching后,很多default box是负样本,这将导致正样本、负样本不均衡,训练难以收敛。因此,该论文将负样本根据置信度进行排序,选取误差的较大的top-k作为训练的负样本,保证负样本、正样本的比例为3:1。

Data Augmentation
为了使模型对各种输入目标大小和形状更鲁棒,每张训练图像都是通过以下选项之一进行随机采样的:

  • 使用整个原始输入图像。
  • 采样一个图像块,使得与目标之间的最小Jaccard重叠为0.1,0.3,0.5,0.7或0.9。
  • 随机采样一个图像块。

每个采样图像块的大小是原始图像大小的[0.1,1],长宽比在 1 2 \frac {1} {2} 21和2之间。如果实际边界框的中心在采用的图像块中,我们保留实际边界框与采样图像块的重叠部分。在上述采样之后,将每个采样图像块调整到固定尺寸并以0.5的概率进行水平翻转。

相关推荐
程序员的必经之路! 【限时优惠】 现在下单,还享四重好礼: 1、教学课件免费下载 2、课程案例代码免费下载 3、专属VIP学员群免费答疑 4、下单还送800元编程大礼包 【超实用课程内容】  根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能!   套餐中一共包含2门MySQL数据库必学的核心课程(共98课时)   课程1:《MySQL数据库从入门到实战应用》   课程2:《高性能MySQL实战课》   【哪些人适合学习这门课程?】  1)平时只接触了语言基础,并未学习任何数据库知识的人;  2)对MySQL掌握程度薄弱的人,课程可以让你更好发挥MySQL最佳性能; 3)想修炼更好的MySQL内功,工作中遇到高并发场景可以游刃有余; 4)被面试官打破沙锅问到底的问题问到怀疑人生的应聘者。 【课程主要讲哪些内容?】 课程一:《MySQL数据库从入门到实战应用》 主要从基础篇,SQL语言篇、MySQL进阶篇三个角度展开讲解,帮助大家更加高效的管理MySQL数据库。 课程二:《高性能MySQL实战课》主要从高可用篇、MySQL8.0新特性篇,性能优化篇,面试篇四个角度展开讲解,帮助大家发挥MySQL的最佳性能的优化方法,掌握如何处理海量业务数据和高并发请求 【你能收获到什么?】  1.基础再提高,针对MySQL核心知识点学透,用对; 2.能力再提高,日常工作中的代码换新貌,不怕问题; 3.面试再加分,巴不得面试官打破沙锅问到底,竞争力MAX。 【课程如何观看?】  1、登录CSDN学院 APP 在我的课程中进行学习; 2、移动端:CSDN 学院APP(注意不是CSDN APP哦)  本课程为录播课,课程永久有效观看时长 【资料开放】 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化。  下载方式:电脑登录课程观看页面,点击右侧课件,可进行课程资料的打包下载。
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页