【第二十七周】文献阅读:SSD: 单阶段多边界框目标检测器

目录

摘要

SSD是一种单阶段的目标检测模型,与传统两阶段模型采取 Region Proposals 的方法不同,SSD 使得特征图的每个位置都产生一组尺寸固定的默认边界框,在预测阶段网络直接为每个默认框中的每个类别生成对应的分数,然后再按照分数对边界框进行相应的调整以更好地匹配对象。此外,SSD 支持在不同的尺度下生成特征图再进行检测,和传统两阶段模型如 R-CNN、Fast R-CNN 和 Faster R-CNN 以及单阶段模型 YOLO 相比,SSD 对小目标的检测性能更好。SSD 将输入图像经过基础卷积网络提取特征后,在不同尺度的特征图上生成一系列预定义的默认框,每个默认框预测类别概率和位置调整值以匹配可能的对象。在训练阶段通过匹配默认框与真实对象来计算分类和定位损失并优化网络权重。在推理阶段,应用非极大值抑制(NMS)算法筛选出高置信度且不重叠的最终检测框。SSD 结合了 YOLO 中的回归思想和 Faster R-CNN 中的 Anchor 机制,将全图各个位置的多尺度区域进行回归,既保持了 YOLO 中速度块的特性,又保证了边界框预测像 Faster R-CNN 一样精准。因此,SSD 在识别精度优于当时最先进的 Faster R-CNN,在识别速度上又优于 YOLO,为单阶段目标检测研究提供了新的方向。

Abstract

SSD is a one-stage object detection model that diverges from the traditional two-stage models which employ Region Proposals. Instead, SSD enables each location on the feature map to generate a set of fixed-size default bounding boxes. During the prediction phase, the network directly produces scores for each category within each default box and subsequently adjusts the bounding boxes based on these scores to better match the objects.Moreover, SSD supports generating feature maps at different scales before conducting detection, which results in superior performance on small object detection compared to traditional two-stage models such as R-CNN, Fast R-CNN, and Faster R-CNN, as well as single-stage models like YOLO. SSD processes the input image through a base convolutional network to extract features, then generates a series of predefined default boxes on feature maps of different scales, with each default box predicting class probabilities and location adjustment values to match potential objects. During the training phase, classification and localization losses are calculated by matching the default boxes with ground truth objects to optimize the network weights. In the inference phase, the Non-Maximum Suppression (NMS) algorithm is applied to filter out high-confidence and non-overlapping final detection boxes. By integrating the regression concept from YOLO and the Anchor mechanism from Faster R-CNN, SSD performs regression on multi-scale regions across the entire image. This approach retains the fast speed characteristic found in YOLO while ensuring the precision of bounding box predictions akin to Faster R-CNN.Consequently, SSD achieves higher recognition accuracy than the then state-of-the-art Faster R-CNN and offers faster detection speeds than YOLO, providing a new direction for research in one-stage object detection.


SSD:单阶段多边界框目标检测器

Title: SSD: Single Shot MultiBox Detector

Author: Liu, W (Liu, Wei) ; Anguelov, D (Anguelov, Dragomir) ; Erhan, D (Erhan, Dumitru) ; Szegedy, C (Szegedy, Christian) ; Reed, S (Reed, Scott) ; Fu, CY (Fu, Cheng-Yang) ; Berg, AC (Berg, Alexander C.)

Source: COMPUTER VISION - ECCV 2016, PT I

WOS:https://webofscience.clarivate.cn/wos/alldb/full-record/WOS:000389382700002


研究动机

自从 Selective research 方法提出以来,当时的大部分两阶段目标检测算法目都是遵循这个流程:首先找到边界框,然后对边界框进行分类

这种方法虽然检测结果很准确,但是计算复杂度太大,即使用到最高端的硬件,对于实时应用程序来说还是太慢。并且在当时研究的方法中,显著提升速度都是以降低精度为代价的,因此,作者就像找到一种像 YOLO 一样既快又准的算法。

解决方法

作者提出了一种叫做 SSD 的算法,当图像输入到单一的网络中会在不同尺度 下产生特征图,每张特征图的不同位置都会产生一组默认边界框,每个边界框会包含位置信息(loc)和每个类别的置信度(conf)。浅层的特征图上每个位置的感受野 ,可以用来预测小物体,而深层的特征图上每个位置的感受野,可以用来预测大物体。不同尺度的预测结果结合起来再经过后处理(非极大值抑制)就的可以得到最终的图像结果。

SSD

SSD 的网络结构

SSD 的骨干网络是基于高质量的图像分类架构,比如 VGG-16。SSD 的早期网络结构使用的是在分类层之前 的 VGG-16 ,然后再在其后添加各种辅助网络

为了实现多尺度目标检测,除了在 VGG-16 对于的 Conv5_3 层当作特征图做分类之外,后面的辅助网络要依次做卷积减少特征图大小,然后将每张特征图再拿出来做不同尺度下的检测。

假设一个位置要产生 k 个默认框,总共有 c 类物体需要检测,每个边界框又会产生 4 个位置参数。因此一个位置就需要 ( c + 4 ) k (c+4)k (c+4)k 个卷积核来计算,那么对于一张 m×n 的特征图而言就会产生 ( c + 4 ) k m n (c+4)kmn (c+4)kmn 个输出。

SSD 的损失函数

SSD的损失函数是置信度损失定位损失 的加权和:
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))

其中定位损失采用的是smooth L1损失,具体如下所示:

L l o c ( x , l , g ) = ∑ i ∈ P o s ∑ m ∈ { c x , c y , w , h } x i j k smooth L1 ( l i m − g ^ j m ) L_{loc}(x, l, g) = \sum_{i \in Pos} \sum_{m \in \{cx, cy, w, h\}} x_{ij}^k \text{smooth}_{\text{L1}}(l_i^m - \hat{g}_j^m) Lloc(x,l,g)=i∈Pos∑m∈{cx,cy,w,h}∑xijksmoothL1(lim−g^jm)

Smooth L1损失,也被称为Huber损失,是深度学习中一种常用的回归损失函数。它结合了均方误差(L2损失)和平均绝对误差(L1损失)的优点,旨在提供一个对异常值更鲁棒、同时在最小化误差时能更快收敛的解决方案。

Smooth L1损失的数学公式如下:
loss ( x , y ) = { 0.5 ( x − y ) 2 , if ∣ x − y ∣ < δ δ ( ∣ x − y ∣ − 0.5 ⋅ δ ) , otherwise \text{loss}(x, y) = \begin{cases} 0.5(x - y)^2, & \text{if } |x - y| < \delta \\ \delta (|x - y| - 0.5 \cdot \delta), & \text{otherwise} \end{cases} loss(x,y)={0.5(x−y)2,δ(∣x−y∣−0.5⋅δ),if ∣x−y∣<δotherwise

其中 x 是预测值,y 是真实值,而 δ 是一个超参数,用于定义从二次曲线到线性曲线的转换点。通常情况下 δ 的默认值为1.0。

Smooth L1损失首次是在Fast RCNN算法中作为边界框回归(Bounding Box Regression)的损失函数提出,并且后来被广泛应用于其他目标检测和定位任务中。由于它本身的特性,它能够更好地处理回归问题中的异常值,并且有助于网络达到更高的精度。

其中 x i j k x_{ij}^k xijk 是一个指示变量,如果第 i 个预测框与第 j 个真实框在类别 k 上匹配,则为 1,否则为 0。

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 \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 g^jcx=(gjcx−dicx)/diwg^jcy=(gjcy−dicy)/dih

g ^ j w = log ⁡ ( g j w d i w ) g ^ j h = log ⁡ ( g j h d i h ) \hat{g}_j^w = \log \left( \frac{g_j^w}{d_i^w} \right) \quad \quad \hat{g}_j^h = \log \left( \frac{g_j^h}{d_i^h} \right) g^jw=log(diwgjw)g^jh=log(dihgjh)

置信度损失采用的是多分类置信度上的 softmax 损失:

L c o n f ( x , c ) = − ∑ i ∈ P o s 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_{conf}(x, c) = - \sum_{i \in Pos} x_{ij}^p \log(\hat{c}i^p) - \sum{i \in Neg} \log(\hat{c}_i^0) \quad \text{where} \quad \hat{c}_i^p = \frac{\exp(c_i^p)}{\sum_p \exp(c_i^p)} Lconf(x,c)=−i∈Pos∑xijplog(c^ip)−i∈Neg∑log(c^i0)wherec^ip=∑pexp(cip)exp(cip)

默认边界框比例选择

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+m−1smax−smin(k−1),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的标度,并且其间的所有层是规则间隔的。

实验结果

从上图我们可以看到,训练数据的增加对 SSD 的性能的提升是非常显著的,并且提高输入图像的尺寸也会对 SSD 的性能有相应的提升。

通过上图我们可以发现,是否进行数据增强会影响大概 9% 的 mAP,这说明在 SSD 中数据增强的使用是非常重要的。并且使用不同宽高比的默认框确实会提升性能。而采用空洞卷积对性能的影响比较有限,但是还是可以进一步提高性能。

上图的上半部分,随着检测数量的增加,召回率也在逐渐增加,但是正确检测的比例却下降了。而对于像动物这样的小物体而言。随着假正例的数量增加,背景错误的比例也在上升。

上图是不同大小和不同长宽比的边界框对于图中物体类别识别精度影响的敏感度分析,可以看到如果 SSD 不进行数据增强其对于小物体的检测性能也不是很好。

SSD v.s. YOLO

YOLO 和 SSD 作为单阶段目标检测模型的两种代表技术,免不了要进行对比,尽管如今的 YOLO 使用得更加广泛,但是在某些特定领域,SSD 仍然能够发挥其应有的作用。在周志华的西瓜书里提到一个没有免费午餐定理,换句话来说就是没有完美的技术,只有适合的技术。

检测速度

● YOLO:YOLO的检测速度较快,特别适用于实时检测任务。它通过回归 问题的方式,将所有的预测计算合并到一个网络中,使得推理速度较快。

● SSD:SSD也可以实现较快的速度,尤其是在使用高效的基础网络(如MobileNet)时,但在检测大规模数据集时,YOLO通常会更快。

检测精度

● YOLO:YOLO在处理大物体时表现较好,但在小物体检测方面相对较差。这是由于YOLO的网格划分策略导致的小物体可能被"丢失"在较大的网格中。

● SSD:SSD在多尺度上进行目标检测,因此能够较好地处理不同尺寸的物体,尤其是对于中等大小的物体效果较好。

YOLO的应用场景

由于YOLO的速度优势,它特别适用于实时目标检测场景。以下是一些典型的应用:

● 自动驾驶:YOLO能够实时检测交通标志、行人、其他车辆等,是自动驾驶系统中的重要组成部分。

● 视频监控:在安全监控中,YOLO可以用来检测视频流中的可疑活动,如入侵检测、人群聚集等。

● 机器人导航:YOLO可以帮助机器人识别环境中的障碍物,从而实现自主导航。

SSD的应用场景

SSD的多尺度特性使其在一些需要高精度的应用中表现突出,特别是在需要检测小物体的场景中。常见的应用包括:

● 医疗影像分析:在医学图像中,SSD能够精确检测到微小的病变区域,如肿瘤或小的异常。

● 工业检测:SSD可用于生产线上的质量检测,识别缺陷、瑕疵或不合格的产品。

● 人脸检测:SSD在各种尺度下进行检测,使其在人脸识别任务中能够准确定位不同大小的面部特征。

论文原文




由于篇幅原因,更多实验结果分析的原文就不在此展示了,可以自行到 axkiv 上搜索原文进行查看。

总结

SSD(Single Shot MultiBox Detector)是一种高效的单阶段目标检测算法,它通过在多个尺度的特征图上使用预定义的默认框(default boxes),同时进行对象分类和边界框回归,实现了快速且准确的目标检测。SSD 采用卷积神经网络提取图像特征,并为每个默认框预测类别概率和位置调整量,结合非极大值抑制(NMS)筛选最终检测结果。该算法利用多尺度特征图捕捉不同大小的对象,并通过数据增强策略提升小物体检测性能,适用于实时检测和移动设备等对速度要求较高的应用场景。SSD 的多尺度检测机制使其在处理各种大小物体时具有优势,未来可能会有以下发展:第一是自适应锚框设计 ,未来 SSD 可能会引入自适应锚框生成机制,使其能够更智能地适应不同物体的大小和形状;第二是融合新技术,SSD 可能会结合更先进的技术,如注意力机制、Transformer 等,以提升对复杂场景的处理能力,特别是在小物体和重叠物体的检测精度上。

相关推荐
deardao1 分钟前
【顶刊TPAMI 2025】多头编码(MHE)之Part 6:极限分类无需预处理
人工智能·深度学习·神经网络·分类·数据挖掘·极限标签分类
昨夜雨疏风骤z18 分钟前
如何使用OpenCV进行抓图-多线程
opencv·计算机视觉
WBingJ19 分钟前
机器学习基础-大语言模型
人工智能·机器学习·语言模型
martian66523 分钟前
【人工智能中的数据科学与数据处理】——详解人工智能中的数据科学与数据处理之数据可视化技巧
人工智能·数据科学·数据处理
御风@户外32 分钟前
学习随笔:word2vec在win11 vs2022下编译、测试运行
人工智能·word2vec
孟郎郎36 分钟前
OSError: [WinError 126] 找不到指定的模块 backend_with_compiler.dll
人工智能·python·llm·conda·torch
WongKyunban37 分钟前
机器学习中的欠拟合
人工智能·机器学习
神经美学_茂森38 分钟前
Jurgen提出的Highway Networks:LSTM时间维方法应用到深度维
人工智能·rnn·lstm
高工智能汽车3 小时前
商用车自动驾驶,迎来大规模量产「临界点」?
人工智能·机器学习·自动驾驶
AI视觉网奇4 小时前
pyhton 掩码 筛选显示
人工智能·opencv·计算机视觉