SSD算法理论

article/2025/9/15 14:50:49

SSD算法

SSD(Single Shot MultiBox Detector)是one-stage目标检测方法,one-stage算法就是目标检测和分类是同时完成的,其主要思路是利用CNN提取特征后,均匀地在图片的不同位置进行密集抽样,抽样时可以采用不同尺度和长宽比,物体分类与预测框的回归同时进行,整个过程只需要一步,所以其优势是速度快。

SSD网络模型

在这里插入图片描述
输入图像shape为300x300x3(将图像输入网络之前会进行缩放);
在这里插入图片描述
将图像输入到VGG16的backbone中,贯穿Conv5_3(即虚线前的网络结构):

1、conv1,经过两次3x3卷积网络,输出的特征层为64,输出为(300,300,64),再2X2最大池化,该最大池化步长为2,输出net为(150,150,64)。
2、conv2,经过两次3x3卷积网络,输出的特征层为128,输出net为(150,150,128),再2X2最大池化,该最大池化步长为2,输出net为(75,75,128)。
3、conv3,经过三次3x3卷积网络,输出的特征层为256,输出net为(75,75,256),再2X2最大池化,该最大池化步长为2,输出net为(38,38,256)。
4、conv4,经过三次3x3卷积网络,输出的特征层为512,输出net为(38,38,512),再2X2最大池化,该最大池化步长为2,输出net为(19,19,512)。
5、conv5,经过三次3x3卷积网络,输出的特征层为512,输出net为(19,19,512),再3X3最大池化,该最大池化步长为1,输出net为(19,19,512)。

利用卷积代替全连接层,进行了一次3x3卷积网络和一次1x1卷积网络,分别为fc6和fc7,输出的通道数为1024,因此输出的net为(19,19,1024);

通过在backbone后添加一系列的卷积层得到其他的预测特征层

Conv8,经过一次1x1卷积网络,调整通道数,一次步长为2的3x3卷积网络,输出的通道数为512,因此输出的net为(10,10,512)。

Conv9,经过一次1x1卷积网络,调整通道数,一次步长为2的3x3卷积网络,输出的通道数为256,因此输出的net为(5,5,256)。

Conv10,经过一次1x1卷积网络,调整通道数,一次padding为valid的3x3卷积网络,输出的通道数为256,因此输出的net为(3,3,256)。

Conv11,经过一次1x1卷积网络,调整通道数,一次padding为valid的3x3卷积网络,输出的特征层为256,因此输出的net为(1,1,256)。

然后将:

conv4的第三次卷积的特征;
fc7卷积的特征;
conv6的第二次卷积的特征;
conv7的第二次卷积的特征;
conv8的第二次卷积的特征;
conv9的第二次卷积的特征。

作为预测特征层,进行不同大小的目标检测,要进行两个操作:

  • 一次num_anchors x 4的卷积,用于预测该特征层上 每一个网格点上 每一个先验框的变化情况。
  • 一次num_anchors x num_classes的卷积,用于预测该特征层上 每一个网格点上 每一个预测对应的种类。
    在这里插入图片描述

先验框虽然可以代表一定的框的位置信息与框的大小信息,但是其是有限的,无法表示任意情况,因此还需要调整,ssd利用num_anchors x 4的卷积的结果对先验框进行调整。

num_anchors x 4中的num_anchors表示了这个网格点所包含的先验框数量,其中的4表示了x_offset、y_offset、h和w的调整情况。

x_offset与y_offset代表了真实框距离先验框中心的xy轴偏移情况。
h和w代表了真实框的宽与高相对于先验框的变化情况。

SSD解码过程可以分为两部分:
将每个网格的中心点加上它对应的x_offset和y_offset,加完后的结果就是预测框的中心;
利用h和w调整先验框获得预测框的宽和高。

最后对每一个预测框进行得分排序与非极大抑制筛选,获得最终的预测结果。

参考文献:
SSD算法理论
睿智的目标检测23——Pytorch搭建SSD目标检测平台


http://chatgpt.dhexx.cn/article/VrImtI7L.shtml

相关文章

SSD算法详解

SSD github : https://github.com/weiliu89/caffe/tree/ssd SSD paper : https://arxiv.org/abs/1512.02325 SSD 动态PPT: https://docs.google.com/presentation/d/1rtfeV_VmdGdZD5ObVVpPDPIODSDxKnFSU0bsN_rgZXc/pub?startfalse&loopfalse&delayms3000…

目标检测—SSD系列算法原理介绍

一、SSD系列算法原理介绍 1.1 SSD算法介绍: ➢Single Shot MultiBox Detector (one-stage方法) ●Wei Liu在ECCV 201 6提出 ●直接回归目标类别和位置 ●不同尺度的特征图上进行预测 ●口端到端的训练 …

目标检测->SSD算法

目标检测算法总体分为:基于区域的算法和基于回归的算法 1)基于区域的算法: RCNN, Fast RCNN, Faster RCNN, Mask RCNN 等。整个检测过程分为两个阶段。在第一个阶段,检测器需要找到一些假设的区域 (ROI);在第二个阶段…

SSD算法解析

目标检测算法主要分为两类: Two-stage方法:如R-CNN系列算法,主要思路就是通过Selective Search或者CNN网络产生一系列的稀疏矩阵的候选区域,然后对这些候选区域进行分类和回归,two-stage的方法优势在于准确率度高&…

SSD算法简单介绍

SSD算法 论文连接SSD: Single Shot MultiBox Detector SSD,全称Single Shot MultiBox Detector,是目前主要的检测框架之一,其基于将detection转化为regression的思路,可以一次完成目标定位与分类。该算法基于Faster RCNN中的Anc…

SSD算法

目录 SSD算法SSD网络结构backboneextra部分loc和clsPriorBox层先验框的生成方法loc的预测结果 模型训练正负样本标记损失函数困难样本挖掘 模型预测总结 SSD算法 学习目标 知道SSD的多尺度特征图的网络知道SSD中先验框的生成方式知道SSD的损失函数的设计 目标检测算法主要分…

SSD算法原理介绍,包含算法结构、Loss计算、默认框计算几个方面

一、SSD算法的介绍 1、SSD算法: 是One-stage目标检测算法中的一种,不需要region proposal阶段,可以直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,具有检测速度快的特点。 2、SSD算法结…

目标检测SSD算法(新手入门)

SSD分析 SSD背景SSD FrameworkCNN-based detectorSSD的backbone:VGG16SSD ModelL2Norm先验框多尺度对SSD的影响定位、分类小结问题 SSD算法是比较经典的目标检测算法,讲解SSD的博客有很多,比如目标检测之SSD就讲的非常好。 本篇博客的不同之…

【Spring框架】全集详解

文章目录 ClassPathXmlApplicationContext工作原理01、IOC:控制反转02、什么是bean03、DI注入以及c、p命名空间p命名空间、c命名空间测试各种类型的注入 04、Autowired:自动装配05、注解:AnnotationComponent注解的作用RepositoryServiceController 06、…

spring 入门详解超

一.什么是spring 1.简介:Spring是一个开源的设计层面框架,解决了类与类之间的彻底解耦,它将面向接口的编程思想贯穿整个系统应用。 2.spring核心: IOC(Inverse of Control 控制反转):将bean的…

Spring框架入门详解

Spring 为什么引入Spring框架 为了提高开发效率和实现模块之间的高聚合低耦合,所以引入了Spring框架 高聚合低耦合 高内聚 内聚是指模块内的联系,各个元素之间紧密联系共同完成任务,模块内的联系越紧密越好,这样可以提高他们…

Spring详解(小白教程,大佬勿入,勿喷。)

1.Spring概述 Spring是什么? 在resource目录下创建子包需要用/ 如:com/baidu/userMapper.xml Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架, 以 IoC(Inverse Of Control:反转控制)和 AOP&…

spring aop详解

1.前言 spring aop是一个面向切面的编程,在自己第一遍学习的时候,感觉aop没有什么作用,但是真实接触下来,感觉spring aop还是很有用途的,感觉自己之前的想法太年轻了。 2.概念 Spring 提供了两种AOP 的实现&#xf…

详解Spring

Spring SSH框架中Struts2:是基于Web层,Hibernate:是基于持久化的,Spring:业务层,管理bean,它是一个容器,List,map, Set这里的内容,是适合已经学过了Spring的人供复习参考的..... Spr…

Spring详解简介

1、Spring的简介 Spring的英文翻译为春天,可以说是给Java程序员带来了春天,因为它极大的简化了开发。我得出一个公式:Spring 春天 Java程序员的春天 简化开发。最后的简化开发正是Spring框架带来的最大好处。 Spring是一个开放源代码的设计…

spring 详细讲解

有人说,“Java程序员都是Spring程序员”,老三不太赞成这个观点,但是这也可以看出Spring在Java世界里举足轻重的作用。 基础 1.Spring是什么?特性?有哪些模块? Spring Logo 一句话概括:Spring…

JAVA框架Spring 全面详解(学习总结)

Spring 1.Spring 全面详解 1.1简介 ◆ Spring:春天 给软件行业带来了春天 ◆ 2002,首次推出了Spring框架的雏形:interface21框架 ◆ Spring框架即是以interface21框架为基础经过重新设计,并不断丰富其内涵,于2004…

Spring的事务详解

事务简介 事务在逻辑上是一组操作,要么执行,要不都不执行。主要是针对数据库而言的,比如说 MySQL。 为了保证事务是正确可靠的,在数据库进行写入或者更新操作时,就必须得表现出 ACID 的 4 个重要特性: 原…

java系列之Spring详解

一、Spring简介 1.1 简介 关于spring的简介,可以查看百度百科,下面内容部分来自百度百科 Spring框架是针对软件开发过程中的复杂性而创建的。其使用javaBean来完成以前只可能由EJB完成的事情。 2002年,Rod Jahnson首次推出了Spring框架雏形…

Spring全面详解

—————版本Spring5.x————— ——编译器IntelliJ IDEA 2020.2.3 —— <-- 该文章有点老旧&#xff0c;停止了更新&#xff0c;请查看Spring5最新文章&#xff0c;目前已经书写完成 --> Spring5全面详解 它会持续更新&#xff0c;你所看到的不是最终版本。 如…