22_单阶段目标检测-SSD算法理论

发布于:2024-07-11 ⋅ 阅读:(28) ⋅ 点赞:(0)

1.1 简介

SSD(Single Shot MultiBox Detector)是一种在深度学习领域广泛使用的对象检测算法,由Wei Liu等人在2015年提出。它是“单阶段”(one-stage)检测器的一个典型代表,与之相对的是像R-CNN系列这样的“两阶段”(two-stage)检测器。SSD的设计旨在同时解决对象分类和定位问题,而且由于其高效性和准确性,在实际应用中非常受欢迎。以下是SSD算法的几个核心方面:

1. 算法概述

SSD的核心思想是在一个单一的神经网络中同时进行特征提取、对象分类和边界框回归,从而实现快速而准确的对象检测。这与需要先生成候选区域(region proposals)再进行分类和精修的两阶段方法不同,SSD通过在网络的不同层上应用多个不同尺度和长宽比的默认框(default boxes或anchor boxes)来直接预测每个位置上的可能对象。

2. 网络结构

SSD通常基于一个预训练的卷积神经网络(如VGG)构建,并在其顶部添加额外的卷积层来预测不同尺度和纵横比的物体。这些额外的层允许网络在不同的特征图(feature maps)上检测不同大小的对象,较小的特征图适合检测大物体,而较大的特征图则有助于捕捉小物体。每个特征图的位置都预先定义了一组默认框,每个框对应一个固定的大小和比例,网络对这些框进行分类(判断是否有物体且属于哪个类别)以及回归(调整框的位置使其更精确地匹配物体)。

3. 损失函数(Loss Calculation)

SSD使用一个联合损失函数,该函数结合了分类损失和定位损失。分类损失通常采用交叉熵损失,用于评估每个默认框预测的类别概率与真实标签的差异;定位损失则通常是 Smooth L1损失(也称为L1平滑损失),用于衡量预测框与真实框之间的坐标偏差。SSD的损失函数还需考虑正负样本的平衡,通过设置正负样本的比例来优化训练过程,确保模型不会因为背景样本远多于前景样本而偏向于预测背景。

4. 默认框(Default Boxes)

默认框是预先设定的一组不同尺寸和比例的框,它们覆盖在特征图的每个位置上。选择合适的默认框尺寸和比例对于检测不同大小和形状的对象至关重要。SSD通过在多个特征层级上使用不同尺度的默认框来实现对多种尺寸对象的有效检测,这有助于提高检测精度,尤其是对于小物体。

5. 特性与优势

  • 速度与效率:作为单阶段检测器,SSD无需复杂的候选区域生成过程,因此检测速度快,适合实时应用。
  • 多尺度检测:通过在不同尺度的特征图上使用默认框,SSD能有效检测从小到大的各种尺寸的物体。
  • 简洁性:相比两阶段方法,SSD的架构更为简单,易于理解和实现。
  • 灵活性:SSD可以容易地集成到现有的卷积网络中,利用已有的图像识别模型进行迁移学习。

6. 局限性

尽管SSD在速度和准确性上取得了很好的平衡,但它仍然存在一些局限性,例如对于极端小物体的检测能力有限,以及在某些情况下可能会产生较多的假阳性检测。

综上所述,SSD算法是深度学习目标检测领域的一个重要进展,它通过其高效的单阶段设计和创新的默认框策略,在实际应用中展示了强大的性能。

该模型出自论文《SSD:Single Shot MultiBox Detector》

1.2 网络结构

through Conv5_3 layer是说那一部分的模型截止到VGG16中的“conv5中的第三个卷积层部分”,

而Conv4_3指的是VGG16中的Conv4_3作为第一个预测的特征图

附VGG16网络结构:

注意,这里将max pooling 5的2x2,步长为2改为了3x3,步长为1且加了padding=1,导致SSD第一阶段的输出还是38x38不变。然后经过3x3,1x1卷积得到第二个预测特征图。

此后,步距为2的时候,padding=1,步距为1的时候padding=0。

举个论文中的例子:

右边有两个特征矩阵,靠左的那个抽象程度低在原图上的感受野比较小,细粒度特征丢失少,能够检测到比较小的物体,靠右的那个抽象程度比较高,细粒度特征丢失大,适合检测比较大的物体。

1.3 default box

在SSD(Single Shot MultiBox Detector)中,“default box”也常被称为“prior box”或“anchor box”。它是SSD目标检测模型中的一个核心概念,用于在特征图的不同尺度和不同长宽比上预先定义一组候选框,这些候选框覆盖了可能存在的目标的各种大小和形状。下面是关于SSD中default box的几个关键点:

  1. 作用:Default box的作用是提供一组固定的参考框,这些框作为目标可能出现位置和大小的先验知识。通过与这些框匹配,模型能够快速定位和分类图像中的目标对象,而无需像两阶段检测器那样单独生成区域提议。

  2. 生成规则

    • 位置:以特征图上每个点为中心生成一系列框。中心点坐标通常是该点的归一化坐标,且默认偏移量为0.5,意味着框的中心位于网格点之间。
    • 尺寸和长宽比:SSD在不同层级的特征图上使用不同的default box尺寸,以便覆盖从小到大的各种目标。最小边长和最大边长通常是预先设定的,如smin=0.2smax=0.9。同时,会考虑多种长宽比(aspect ratios),例如{1, 2, 3, 1/2, 1/3},确保能捕捉不同形状的对象。对于每个aspect ratio,默认还会包括一个额外的框,其尺度是根据特征图的尺度决定的。
    • 数量:每个特征图上的每个像素点通常会生成4个或6个default box,具体数量取决于网络设计,总共有8732个default box分布在不同尺度的特征图上。
  3. 训练与预测:在训练时,每个default box都会预测出一个类别分数(表示该框内存在对应类别的概率)和4个偏移量(用于调整框的位置和大小,使其更精确地匹配真实目标)。通过与真实标注框(ground truth boxes)的交并比(IoU)匹配,每个default box被分配给一个或多个训练样本,并计算相应的分类损失和定位损失。

  4. 非极大值抑制(NMS):在预测阶段,SSD会为每个default box生成预测结果,并通过非极大值抑制去除重叠度高的预测框,最终输出最有可能代表真实目标的检测框集合。

Scale指的是预测框的面积参数,比如scale=21,那么这个scale得到的预测框面积就是21²。

conv4_3、10_2、11_2都是生成四个预测框,其他的特征图都生成6个预测框。

解释一下下图:以第一个特征图,预测框面积有21和sqrt(21x45)两个,然后对于21有1:1,2:1,1:2三个比例的预测框,对于sqrt(21x45)只有1:1的比例一个预测框。(为什么第二个是21x45开根号看上面的黄线部分)。

对于第二个特征图,对于45有1:1,2:1,1:2,3:1,1:3五个尺度的预测框,对于sqrt(45x99)只有1:1一个预测框。

1.4 预测器Predictor

对于长宽mxn通道数为p的特征图直接用3x3xp的卷积核生成概率分数以及我们相对default box的坐标偏移量。

对于特征图上每一个位置,生成K个候选框,对于每个候选框分别去计算C个类别分数以及4个坐标偏移量,那么我们就需要(c+4)*K个卷积核,对于mxn的特征图,我们就会生成(c+4)*K*m*n个输出值。(这里的C是包括背景类别的)

1.5 正负样本的选取

正样本:

(1)对于每一个GT,取匹配每一个与它IOU值最大的default box.

(2)对于任意的一个default box只要与GT的IOU>0.5就划为正样本。

负样本:

(1)定义好正样本,剩下的都是负样本。

(2)但负样本不是全都用来计算,因为8732个default box只有几十个是正样本,会导致样本不平衡的问题。

(3)对于所有的负样本,计算confidence loss,值越大意味着网络将这个负样本预测为目标的概率就越大,那么损失就越大,所以我们进行排序选取靠前的负样本进行训练。

(4)控制正负样本的比率在1:3,1正3负。

负样本的选择策略被叫做“hard negative mining”

1.6 模型损失

类别损失

定位损失

定位损失只针对正样本,因为负样本没有对应的GT。

dicx是第i个default box它的中心点的X坐标,diw是第i个default box它的宽度。

(GT的中心坐标和宽高是不能直接参与训练的,要先把它们转化为相对于default box 的偏置量,使用偏置量参加训练来计算loss)