Python----目标检测(《SSD: Single Shot MultiBox Detector》论文和SSD的原理与网络结构)

article/2025/7/28 16:47:41

一、SSD:单次多框检测器

1.1、基本信息

  • 标题:SSD: Single Shot MultiBox Detector

  • 作者:Wei Liu (UNC Chapel Hill), Dragomir Anguelov (Zoox Inc.), Dumitru Erhan, Christian Szegedy (Google Inc.), Scott Reed (University of Michigan), Cheng-Yang Fu, Alexander C. Berg (UNC Chapel Hill)

  • 发表时间:2016年(基于参考文献中最新引用为2016年)

  • 代码开源:weiliu89/caffe at ssd

原文地址:

        [1512.02325] SSD: Single Shot MultiBox Detector

        SSD: Single Shot MultiBox Detector | SpringerLink

1.2、主要内容

SSD(Single Shot MultiBox Detector)是一种单阶段目标检测模型,其核心创新包括:

多尺度特征图预测

                在不同层级的卷积特征图上生成不同尺度和长宽比的默认边界框(default boxes),覆盖多种物体尺寸。

                通过卷积操作直接预测类别得分和边界框偏移量,无需候选区域生成(如Faster R-CNN中的RPN)。

高效的单次检测框架

                消除了传统方法中的像素重采样和特征池化步骤,所有计算集成在单一网络中,显著提升速度。

                使用小卷积核(3×3)进行预测,保留空间信息的同时减少参数量。

数据增强与训练策略

                采用随机裁剪、缩放和颜色扰动增强数据,提升模型对小物体的检测能力。

                通过“难例挖掘”(hard negative mining)平衡正负样本比例,优化训练过程。

性能优势

                输入分辨率300×300时,在VOC2007测试集上达到74.3% mAP,速度59 FPS(Titan X GPU),优于Faster R-CNN(73.2% mAP,7 FPS)和YOLO(63.4% mAP,45 FPS)。更

                高分辨率(512×512)下,mAP提升至76.9%,速度仍接近实时(22 FPS)。

1.3、影响和作用

推动实时检测发展

        SSD是首个在保持高精度(>70% mAP)的同时实现实时检测(59 FPS)的模型,为嵌入式系统和实时应用(如自动驾驶、视频监控)提供了高效解决方案。

技术启发性

        多尺度特征图与默认框设计被后续模型(如RetinaNet、EfficientDet)广泛借鉴,成为单阶段检测器的经典范式。

        证明了单阶段方法在速度和精度上可超越两阶段方法(如Faster R-CNN),推动目标检测领域向轻量化发展。

实际应用价值

        模型结构简单,易于与其他系统(如视频跟踪、多任务学习)集成,促进了工业界的快速落地。

        在COCO等复杂场景数据集上表现优异,为密集和小物体检测提供了新思路。

学术贡献

        论文通过系统实验(如消融分析)验证了多尺度预测、数据增强等关键设计的有效性,为目标检测研究提供了重要参考。

        开源代码极大推动了社区复现与改进,累计引用量超万次(截至2023年),成为目标检测领域的里程碑工作之一。

二、SSD

2.1、SSD介绍

注意:SSD是2016年的网络,它要比2015年的YOLOV1晚出来一年。

 

SSD速度与性能:

        输入尺寸300x300的网络:使用NVIDIA Titan X帧率为59FPS,在 VOC2007测试集上74.3%mAP。

        输入尺寸512x512的网络:在VOC2007测试集上76.9%mAP,超越当时最 强的FasterRCNN的73.2%mAP。

        two-stage:找框+回归与分类。

        one-stage:全部放在一个网络中实现。

        Faster RCNN的问题:模型大速度慢、对小目标检测效果差(经过多次卷 积后,feature map的维度太高,3*3的感受野很大了,所以Anchor Box 很大导致很难预测小目标)(FPN优化了对小目标检测效果差的问题)。

原理:

        SSD结合了多尺度特征图来检测不同大小的目标。其基本原理与实现流程 包括:

                使用卷积神经网络(CNN)提取图像特征。

                在不同层级的特征图上应用预测器来检测和定位目标。

                使用默认框(default boxes)来处理不同尺度和比例的目标。

                结合多层特征图的预测结果来提高检测性能和精度。

2.2、SSD网络结构

1. 将图片缩放到300x300,类似于OpenCV的resize,channels为3。

2. 通过到Pool5层:可以参考附录1的VGGNet16的网络特征图变化,输 入是300x300,经过5个conv组之后分别为:150->75->38->19,所以 显示的Conv4_3是38x38x512(这是一个预测特征层,称为预测特征层 1),在经过Conv4_3是19x19x512,正常的VGGNet-16接下来经过 Pool5(池化核2,步长2),但是SSD对Pool5做了修改(池化核3,步 长1,padding=1),所以在经过Pool5后,输出为19x19x512。

3. 经过Conv: 3x3x1024,得到19x19x1024的卷积结果,原始VGGNet16 的第一个全连接层(FC6)。

4. 经过Conv: 1x1x1024,得到19x19x1024的卷积结果(这是一个预测特 征层,称为预测特征层2),原始VGGNet16的第一个全连接层(FC7)。

5. 经过Conv: 1x1x256降维,在经过Conv: 3x3x512(s=2, padding=1)得到10x10x512(这是一个预测特征层,称为预测特征层 3)。

6. 经过Conv: 1x1x128降维,在经过Conv: 3x3x256(s=2, padding=1)得到5x5x256(这是一个预测特征层,称为预测特征层 4)。

7. 经过Conv: 1x1x128降维,在经过Conv: 3x3x256(s=1, padding=0)得到3x3x256(这是一个预测特征层,称为预测特征层 5)。

8. 经过Conv: 1x1x128降维,在经过Conv: 3x3x256(s=1, padding=0)得到1x1x256(这是一个预测特征层,称为预测特征层 6)。

卷积公式:feature-kernel+2*P/stride+1,向下取整。

在预测特征层上会预测不同大小的目标,在前面的预测特征层上会预测较 小的目标,在后面的预测特征层上会预测较大的目标。

2.3、在预测特征层进行预测

        SSD中的具有一个叫默认框(default boxes)的东西,有时也称为先验框 (prior boxes),是预定义的一组边界框,用于在训练过程中预测目标的 位置和大小。

        默认框的设计和使用是SSD算法的重要部分,其主要目的是高效地处理不 同尺度和不同宽高比的目标,有点像默认的Anchor Box。

        默认框是在不同尺度和宽高比下,预先定义的一组边界框。每个默认框与 特定的特征图位置(像素)相关联,并且在训练过程中,网络会预测这些 默认框与实际目标边界框的偏移量和类别。

2.3.1、默认框的生成

1. 特征图尺度: SSD在不同的特征图上生成默认框。通常,网络的早期层具有高分 辨率的特征图,用于检测小目标;后期层具有低分辨率的特征图, 用于检测大目标。

2. 框的数量和比例: 在每个特征图位置,SSD生成多个默认框,每个框具有不同的比例 和宽高比(如1:1、2:1、1:2、3:1、1:3等)。这使得默认框能够覆 盖不同形状和大小的目标。

3. 框的中心和大小: 每个默认框的中心与特征图的一个位置对齐,框的大小根据特征图 层的比例进行设置。具体公式如下: 假设特征图大小为m*m ,每个特征图位置会生成多个默认 框。 默认框的宽度和高度根据不同的比例和尺度进行设置。

2.3.2、PyTorch默认框的生成方案

一共有6层预测特征层,分别为conv4_3、fc7、conv8_2、conv9_2、 conv10_2、conv11_2。

conv4_3 ==> 38 x 38

fc7 ==> 19 x 19

conv8_2 ==> 10 x 10

conv9_2 ==> 5 x 5

conv10_2 ==> 3 x 3

conv11_2 ==> 1 x 1

 其中,DefaultBoxGenerator类:

aspect_ratios参数

纵横比,输入的是 [[2], [2, 3], [2, 3], [2, 3], [2], [2]],对应 每一层的预测特征层的默认框的纵横比,这里的[2]指的是:比例为2,实 际上会附加上1:1的,结合上1:2,2:1的,也就是3个纵横比1:1、1:2, 2:1。

输入纵横比
[2]1:1        1:2        2:1 
[2, 3]1:1        1:2        2:1         1:3        3:1
[2, 3]1:1        1:2        2:1         1:3        3:1
[2, 3]1:1        1:2        2:1         1:3        3:1
[2]1:1        1:2        2:1 
[2]1:1        1:2        2:1 

min_ratio/max_ratio参数

        这里即是论文中所说的Smin=0.2,Smax=0.9的初始值,经过下面的运算 即可得到min_sizes,max_sizes,只是在PyTorch中Smin=0.15,当scales 不传参的时候,使用它。

        得到self.scale=[0.15, 0.3, 0.45, 0.6, 0.75, 0.9, 1.0]

scales参数

默认框数量

        这6个特征层产生的特征图的大小分别为38*38、19*19、10*10、5*5、 3*3、1*1。每个n*n大小的特征图中有n*n个中心点,每个中心点产生k个 默认框,六层中每层的每个中心点产生的k分别为4、6、6、6、4、4(在 图中很大的物体和很小的物体要少于大小适中的物体的数量)。

        所以6层中的每层取一个特征图共产生 38*38*4+19*19*6+10*10*6+5*5*6+3*3*4+1*1*4=8732个默认框。

steps参数

        steps参数是输入图像300x300与预测特征层的降采样的比例,即第一个参 数8,是2x2x2的结果,也就是经过3次降采样之后的比例,300/8=37.5, 即38。

        这个参数的目的是为了绘制二维网格(类似于在机器学习中写代码时绘制 决策边界时的meshgrid)。最终乘以300即可得到在原图上的Anchor。

2.3.3、默认框举例

2.3.4、默认框的使用

1. 匹配机制:

        在训练过程中,将默认框与真实边界框进行匹配。如果默认框与真 实边界框的重叠(通常使用交并比,IoU)超过某个阈值,则认为 该默认框匹配该真实目标。 未匹配的默认框通常被认为是背景类。

2. 预测偏移量:

        SSD不直接预测边界框的坐标,而是预测默认框相对于真实边界框 的偏移量(即坐标调整量)。网络学习这些偏移量以调整默认框, 使其更接近真实目标。

3. 多框融合:

        通过非极大值抑制(NMS)技术,过滤掉重叠度较高的冗余预测 框,仅保留最高置信度的预测结果。

2.3.5、默认框优点

1. 高效:

        使用默认框,可以在一个前馈网络中同时预测多个尺度和宽高比的 目标,减少了计算复杂度,提高了检测速度。

2. 多尺度检测:

        通过在不同尺度的特征图上生成默认框,SSD能够有效处理不同大 小的目标,适应多尺度检测的需求。

2.4、Predictor实现

对于每一个特征层,都会再经过一个3x3x (每个点的默认框个数 x (Classes+4)) 的卷积 

为什么是:每个点的默认框个数 x (Classes+4)?

每个点的默认框个数 x (Classes+4) = 每个点的默认框个数 x Classes + 每 个点的默认框个数 x 4

Classes:目标检测类别数量+背景(例如Pascal VOC是21)。

每个点的默认框个数 x Classes:每个框的类别的概率,如果是4个框,每 个框都有21类的对应的概率,那就有4x21=84个。

每个点的默认框个数 x 4:每个框的x,y,w,h偏移量。

2.5、正负样本

正样本

1.与GT BOX的IoU最大的default Box。

2. 与GT BOX的IoU大于0.5的default Box。

负样本

        将正样本选完的剩下的default Box进行confidence计算,选择一些最大的 confidence的default Box作为负样本,大概是正样本个数的3倍。如果剩 下的全是负样本,会导致正负样本失衡,网络表现变差。

2.6、损失函数的定义

        SSD的损失函数是对分类和位置回归的多任务损失函数的组合。

        它由两部分组成:分类损失(confidence loss)和定位损失(localization loss)。这两部分损失在训练过程中相加,用于模型同时学习分类和定位。

 2.6.1、分类损失(Confidence Loss)

 2.6.2、定位损失(Localization Loss)

2.7、 SSD的特点

与Faster RCNN相比的特点:

        速度更快:SSD是一种端到端的算法,直接预测目标的类别和边界 框,避免了像Faster RCNN那样的两阶段检测过程,因此速度更 快。

        简单直接:SSD通过在单个神经网络中处理检测和分类任务,简化 了整体流程。

        多尺度特征融合:SSD通过使用多层特征图来检测不同大小的目 标,从而更好地处理多尺度的目标检测问题。

优点:

        高效:速度快,适合实时应用。

        简单:单一模型处理多个尺度和类别的检测。

        高度集成:整合了目标定位和类别预测的任务。

 

 

缺点:

        定位精度稍逊:相比于两阶段方法如Faster RCNN,在定位精 度上可能稍逊一筹。

        默认框设计依赖:性能受默认框设计的影响,对不同数据集可 能需要调整。

        SSD通过简化的单阶段检测方法和多层特征图的使用,实现了高效的目标 检测,尽管在一些精度方面可能略逊于两阶段方法,但在速度和简便性上 有明显优势。

 


http://www.hkcw.cn/article/qphQGssSgG.shtml

相关文章

[Windows]在Win上安装bash和zsh - 一个脚本搞定

目录 前言安装步骤配置要求下载安装脚本启动程序 前言 Windows是一个很流行的系统, 但是在Windows上安装bash和zsh一直是一个让人头疼的问题. 本蛙特意打包了一个程序, 用于一站式解决这一类的问题. 安装步骤 配置要求 系统: Windows软件: Powershell 5.1或以上 下载安装…

从0开始学习R语言--Day13--混合效应与生存分析

混合效应模型(Mixed Effects Model) 对于数据来说,我们通常把所有样本共有的影响因素(性别,实验处理,实验方法),这种可以推广到总体的叫做固有效应,而仅适用于特定分组的…

【前端】javascript和Vue面试八股

面试暂时没有遇到过考这么深的,一般还是问一些生命周期和性能相关。 Q:什么情况下“ a 1 && a 2 && a 3 ”同时成立 A:对象的valueOf与toString方法:当一个对象与一个原始值(如数字)进…

某航后缀混淆逆向与顶像风控分析

文章目录 1. 写在前面2. 接口分析3. 加密分析4. 风控分析 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致…

【PostgreSQL 05】PostgreSQL扩展开发实战:从自定义函数到插件开发的完整指南

PostgreSQL扩展开发实战:从自定义函数到插件开发的完整指南 关键词: PostgreSQL扩展开发、自定义函数、插件开发、C语言扩展、SQL函数、存储过程、数据库扩展、PostgreSQL插件、PGXS、CREATE EXTENSION 摘要: 想让PostgreSQL拥有独特的超能力…

家政维修平台实战11搭建服务规格

目前首页的功能我们已经搭建好了,当用户点击某个服务内容的时候要跳转到详情页,详情页需要展示服务的各类信息,难点是在规格切换的时候价格也要跟上有变化。 在数据源设计部分我们还没有考虑规格的问题,本篇我们介绍一下服务规格…

【创新实训个人博客】实现了新的前端界面

我们的项目还需要ppt展示和文案展示 实现了新的html页面 对接口进行测试示例 启动app.py和aippt部分 使用postman发送请求测试大模型api 后端命令行返回

使用lighttpd和开发板进行交互

文章目录 🧠 一、Lighttpd 与开发板的交互原理1. 什么是 Lighttpd?2. 与开发板交互的方式? 🧾 二、lighttpd.conf 配置文件讲解⚠️ 注意事项: 📁 三、目录结构说明💡 四、使用 C 编写 CGI 脚本…

【无标题】安富莱V5程序移植到原子探索者F4控制板带TFT LCD显示屏

安富莱V5控制板用的控制器是STM32F407IGT, 原子探索者用的控制器是STM32F407ZGT6. 手里有原子探索者主控板2.8寸TFT LCD屏,需要把安富莱程序用于原子探索者硬件来运行和显示,经过一番折腾,成功运行。 省了安富莱的硬件&#xff0c…

【从0带做】基于Springboot3+Vue3的反炸宣传网站

大家好,我是武哥,最近给大家手撸了一个基于SpringBoot3Vue3的反炸宣传网站,可用于毕业设计、课程设计、练手学习,系统全部原创,如有遇到网上抄袭站长的,欢迎联系博主~ 资料获取方式 https://www.javaxm.c…

git 如何解决分支合并冲突(VS code可视化解决+gitLab网页解决)

1、定义:两个分支修改了同一文件的同一行代码,无法自动决定如何合并代码,需要人工干预的情况。(假设A提交了文件a,此时B在未拉取代码的情况下,直接提交是会报错的,此时需要拉取之后再提交才会成功&#xff…

大规模、高规格、全品类,2025郑州台球展览会,8月启幕

-同聚中原共赢未来,42000㎡的大型台球盛会,将在8月15-17日,在郑州中原国际会展中心启幕,期待台球企业、品牌和买家客户届时参与。全称:壹肆柒2025中国(郑州)国际台球产业博览会,同期…

学习STC51单片机23(芯片为STC89C52RCRC)

每日一言 成功的路上从不拥挤,因为坚持的人不多,你要做那个例外。 通过单片机发指令给ESP8266进行通信 通信原理(也是接线原理) 代码如下 代码解释一下,因为我们的指令是字符数组(c语言没有字符串的概念),…

Roller: 抽奖系统测试的幕后剧本-测试报告

抽奖系统 - 测试报告 项目名称:抽奖系统 测试人员:LlvZi 测试时间:2025年5月25 - 2025年6月1 一、项目概述 该项目是一个操作简便、安全可靠的抽奖系统 。主要业务是抽奖,并支持管理员管理用户、奖品和抽奖活动,以配…

智语心桥:当AI遇上“星星的孩子”,科技如何点亮沟通之路?

目录: 引言:当科技的温度,遇见“星星的孩子”“智语心桥”:一座为孤独症儿童搭建的AI沟通之桥核心技术探秘:AI如何赋能“读心”与“对话”?个性化魔法:AI如何实现“千人千面”的精准干预?应用场景畅想:从家庭到机构,AI的全方位支持为什么是“智语心桥”?——价值、可…

c++学习之---模版

目录 一、函数模板: 1、基本定义格式: 2、模版函数的优先匹配原则: 二、类模板: 1、基本定义格式: 2、类模版的优先匹配原则(有坑哦): 3、缺省值的设置: 4、ty…

GESP2024年3月认证C++二级( 第三部分编程题(1)乘法问题)

参考程序&#xff1a; #include <iostream> // 引入输入输出库 using namespace std; // 使用标准命名空间&#xff0c;简化代码int main() {int n; // 存储输入的数字个数cin >> n; // 读入 nlong long product 1; // 用 long long 存…

NX811NX816美光颗粒固态NX840NX845

NX811NX816美光颗粒固态NX840NX845 美光NX系列固态硬盘颗粒深度解析&#xff1a;技术、性能与市场全景透视 一、技术架构与核心特性解析 1. NX811/NX816&#xff1a;入门级市场的平衡之选 技术定位&#xff1a;基于176层TLC&#xff08;Triple-Level Cell&#xff09;3D NAN…

6、运算放大器—共模抑制比(七)

目录 1、共模抑制比&#xff08;CMRR&#xff09;的定义 2、共模误差推导 3、电阻对共模误差的影响 4、参数特性 运算放大器&#xff08;运放&#xff09;的共模抑制比&#xff08;Common-Mode Rejection Ratio, CMRR&#xff09;是衡量其抑制共模信号能力的关键参数&…

“日本7月5日末日论”疯传 漫画预言引发社会焦虑

最近,网上关于日本“末日论”的讨论引起了广泛关注。据说2025年7月5日日本将遭遇毁灭性灾难,三分之一的国土会被海水吞没,连中国游客都忙着退酒店改行程。这一说法源自30年前的一部漫画——《我所看见的未来》,作者自称梦见了未来。漫画家龙树谅曾“预言”过2011年的东日本…