SSD(单次多框检测器)是一种深度学习目标检测模型,它在神经网络的单次前向传播中同时执行分类和定位。与早期先提出区域再分类的两阶段检测器不同,SSD将边界框的输出空间离散化为一组具有不同长宽比和尺度的默认框,并对每个目标类别进行评分。这种设计使其在保持实时处理速度的同时实现高精度,成为自动驾驶、机器人和视频监控等应用中的热门选择。
该模型在2016年由Wei Liu、Dragomir Anguelov、Dumitru Erhan、Christian Szegedy、Scott Reed、Cheng-Yang Fu和Alexander C. Berg发表的论文《SSD:单次多框检测器》中提出。该工作在欧洲计算机视觉会议(ECCV)上于荷兰阿姆斯特丹发表。作者来自北卡罗来纳大学教堂山分校、Zoox、Google和密歇根大学。
架构
SSD构建在基础网络(通常是截断的VGG-16或ResNet)之上,该网络从输入图像中提取特征图。在此基础之上,添加额外的卷积层,这些层逐步降低空间分辨率,同时增加通道数。这些额外层产生多个尺度的特征图,范围从大尺寸图(例如,对于300x300输入为38x38)到小尺寸图(例如,1x1)。
对于每个特征图中的每个单元,SSD预测一组固定的默认边界框(也称为先验框或锚框)。这些默认框具有不同的长宽比(例如,1:1、1:2、2:1)和尺度,其选择与训练数据中目标大小的分布相匹配。对于每个默认框,网络输出相对于默认框的四个偏移量(中心x、中心y、宽度、高度),以及一组类别分数(包括背景类)。
训练
在训练期间,SSD将每个真实框与具有最高交并比(IoU)重叠的默认框匹配,以及与IoU高于阈值(通常为0.5)的任何默认框匹配。这种匹配策略确保每个真实框至少被分配一个默认框用于正样本训练。损失函数是定位损失(边界框偏移的平滑L1损失)和置信度损失(类别分数的softmax交叉熵)的加权和。
一个关键的训练技术是难负样本挖掘,其中负样本与正样本的比例被限制在3:1。这是必要的,因为绝大多数默认框是背景。模型还使用数据增强,包括随机裁剪、颜色失真和水平翻转,以提高泛化能力。
多尺度检测
SSD的主要创新之一是其使用多尺度特征图进行检测。早期的单次检测器如YOLO(You Only Look Once)仅使用最终特征图,这限制了其检测小目标的能力。通过使用不同深度的特征图,SSD可以检测各种大小的目标:浅层具有高分辨率,捕获小目标,而深层具有低分辨率,捕获大目标。
这种方法在计算上高效,因为它避免了单独的区域提议阶段。整个检测流程是一个单一的前馈卷积网络,可以使用标准反向传播进行端到端优化。
变体与影响
自推出以来,SSD启发了多个变体。DSSD(反卷积单次检测器)添加反卷积层以改善小目标检测。FSSD(特征融合单次多框检测器)在预测前融合来自不同层的特征。其他工作将SSD适配到特定领域,如人脸检测(例如,SSH - 单阶段无头)和文本检测。
SSD在工业界和学术界被广泛采用。它已在主要深度学习框架中实现,如TensorFlow(通过目标检测API)和PyTorch(通过torchvision)。该模型的精度-速度权衡使其成为实时检测的标准基准,常与YOLO和Faster R-CNN进行比较。截至2020年代中期,更近期的架构如EfficientDet和YOLOv8在速度和精度上均已超越SSD,但SSD仍是高效目标检测发展中的重要历史里程碑。
局限性
尽管有其优势,SSD存在已知的局限性。小目标检测仍然具有挑战性,尤其是当目标密集排列或具有高长宽比时。固定的默认框集合对于不寻常的目标形状可能不是最优的。此外,模型需要对每个新数据集仔细调整锚框尺度和长宽比,这可能耗时。后来的工作通过特征金字塔网络和可学习的锚框生成来解决其中一些问题。