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

news2025/6/3 16:10:06

一、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.coloradmin.cn/o/2395656.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot集成websocket给前端推送消息

一般通常情况下,我们都是前端主动朝后端发送请求,那么有没有可能,后端主动给前端推送消息呢?这时候就可以借助websocket来实现。下面给出一个简单的实现样例。 首先创建一个websocketDemo工程,该工程的整体结构如下&a…

0527漏洞原理:XSS笔记

理论知识 01 前端基础知识 1.1 HTML基础 定义&#xff1a;HTML&#xff08;超文本标记语言&#xff09;用于描述网页结构。标准结构&#xff1a; 内嵌脚本&#xff1a; <script>JavaScript代码</script>1.4 JavaScript弹窗函数 函数描述alert("文本&quo…

智能制造之精读——RPA制造行业常见场景【附全文阅读】

RPA 在制造行业应用广泛&#xff0c;为企业带来显著价值&#xff0c;是极具潜力的智能化解决方案。它能节省成本&#xff0c;降低人力与管理成本&#xff1b;提升运营效率&#xff0c;减少人机交互损耗&#xff1b;提高质量&#xff0c;保障流程准确性&#xff1b;还能增强合规…

深入剖析 Docker 容器化原理与实战应用,开启技术新征程!

文章目录 前言一、为什么 是Docker &#xff1f;二、Docker 容器化原理分析2.1 镜像&#xff08;Image&#xff09;2.2 容器&#xff08;Container&#xff09;2.3 仓库&#xff08;Registry&#xff09; 三、Docker 容器化实践3.1 Docker安装3.2 创建一个 Docker 镜像3.3 运行…

计算机网络(4)——网络层

1.概述 1.1 网络层服务 (1) 网络层为不同主机(Host)之间提供了一种逻辑通信机制 (2)每个主机和路由器都运行网络层协议 发送方&#xff1a;将来自传输层的消息封装到数据报(datagram)中接收方&#xff1a;向传输层交付数据段(segment) 1.2 网络层核心功能 路由选择(routing…

ESP32基础知识1:项目工程建立和烧录

ESP32基础知识1&#xff1a;项目工程建立和烧录 一、本文内容与前置知识点1. 本文内容2. 前置知识点 二、新建工程1. 工程配置2. 依照模板建立项目 三、硬件烧录1. 硬件准备2. 烧录器和ESP32连接3. 电脑端设置4. 烧录成功演示 四、参考文献 一、本文内容与前置知识点 1. 本文内…

allWebPlugin中间件VLC专用版之录像功能介绍

背景 VLC控件原有接口是不支持录像的&#xff0c;且libVLC提供的接口库&#xff0c;不能获取录像文件完整名称&#xff08;VLC-3.0.11 录制直播时有的无法保存视频的解决方法 - 1CM - 博客园&#xff09;&#xff1b;因此&#xff0c;非常的不友好。为了能够彻底解决这个问题&a…

Vim 支持多种编程语言编辑器

软件简介 Vim是Vi编辑器的增强版&#xff0c;它提供了更多的功能和快捷键。Vim是一款自由软件&#xff0c;它是由Bram Moolenaar在1991年创建的。Vim支持多种编程语言&#xff0c;包括C、C、Java、Python、Perl等等。它是一款轻量级的编辑器&#xff0c;可以快速打开和编辑大型…

解决 IDEA 在运行时中文乱码问题

直接说解决办法 编译 IDEA 所在目录的启动的 .vmoptions 文件&#xff0c;添加以下JVM 参数即可 -Dfile.encodingUTF-8如下图所示&#xff0c;Help > Edit Custom VM Options&#xff0c;随后在编辑框中添加-Dfile.encodingUTF-8 的 JVM 参数

Diffusion Planner:扩散模型重塑自动驾驶路径规划(ICLR‘25)

1. 概述 2025年2月14日&#xff0c;清华大学AIR智能产业研究院联合毫末智行、中科院自动化所和香港中文大学团队&#xff0c;在ICLR 2025会议上发布了Diffusion Planner——一种创新性的基于Diffusion Transformer的自动驾驶规划模型架构。该系统联合建模周车运动预测与自车行…

华为OD机试真题——阿里巴巴找黄金宝箱 IV(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《阿里巴巴找黄金宝箱 IV》:…

数据结构:时间复杂度(Time Complexity)和空间复杂度(Space Complexity)

目录 什么是时间复杂度&#xff1f; 如何表示时间复杂度&#xff1f; 为什么需要时间复杂度&#xff1f; 用几个例子理解 怎么分析代码的时间复杂度&#xff1f; 什么是空间复杂度&#xff1f; 举例理解 什么是时间复杂度&#xff1f; 时间复杂度是用来衡量一个算法“…

SSL/TLS 协议详解:安全通信的基石

一、概述 SSL&#xff08;Secure Sockets Layer&#xff09; 及其继任者 TLS&#xff08;Transport Layer Security&#xff09; 是位于 传输层&#xff08;TCP&#xff09;与应用层之间 的加密协议&#xff0c;用于在网络通信中实现 机密性、身份认证和数据完整性。 核心目标…

设计模式——外观设计模式(结构型)

摘要 本文介绍了外观设计模式&#xff0c;它是一种结构型设计模式&#xff0c;通过引入一个外观类来封装复杂子系统的调用细节&#xff0c;对外提供简单统一的接口。文中通过生活类比、关键角色介绍、使用场景分析以及结构说明等方面对这一模式进行了全面阐述&#xff0c;还涉…

Linux `vi/vim` 编辑器深度解析与高阶应用指南

Linux `vi/vim` 编辑器深度解析与高阶应用指南 一、核心功能解析1. 模式系统2. 与主流编辑器对比二、核心操作体系1. 高效导航命令2. 文本操作矩阵三、高阶配置体系1. .vimrc 配置示例2. 插件管理系统四、企业级开发实践1. 代码编辑技巧2. 宏录制与批量处理五、可视化与多窗口1…

ES中must与filter的区别

在 Elasticsearch 的布尔查询&#xff08;bool query&#xff09;中&#xff0c;must 和 filter 是两个核心子句&#xff0c;它们的核心区别在于 是否影响相关性评分&#xff0c;这直接决定了它们在查询性能、使用场景和结果排序上的差异。以下是详细对比&#xff1a; 一、核心…

qt之开发大恒usb3.0相机三

上一篇大恒相机的开发 是基于Qt Creator msvc工具链编译的&#xff0c;大恒相机msvc使用的的lib库是c版的。如果想要使用mingw工具链开发大恒相机&#xff0c;那么找连接对相应的lib库。mingw对应的库是c的。 配置如下&#xff1a; 图像获取核心代码如下 void __stdcall Wid…

Transformer架构详解:从Attention到ChatGPT

Transformer架构详解&#xff1a;从Attention到ChatGPT 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 Transformer架构详解&#xff1a;从Attention到ChatGPT摘要引言一、Attention机制&#xff1a;Transformer的…

数据中台(大数据平台)之数据安全管理

数据安全管理是结合大数据技术和行业特性&#xff0c;数据中台产品应具备数据分类分级、敏感数据智能识别的功能&#xff0c;并结合敏感数据管理、数据脱敏、数据加密等安全管控方式&#xff0c;保障数据安全可用。 1.安全分级分类&#xff1a;数据分级分类是一种将不同数据按…

github双重验证密码忘记或者获取不了了怎么办

背景 近期由于换了新手机&#xff0c;之前配置好的Authenticator这个App无法使用&#xff0c;导致获取不到二次验证的Authenticator code&#xff0c;登陆不上GitHub&#xff0c;不知道有没有人和我遇到同样的问题&#xff1f; 当我们配置2FA双重验证后&#xff0c;每次登陆gi…