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

article/2025/9/15 15:05:54

一、SSD系列算法原理介绍

1.1 SSD算法介绍:

        ➢Single Shot MultiBox Detector (one-stage方法)
                 ●Wei Liu在ECCV 201 6提出
                 ●直接回归目标类别和位置
                 ●不同尺度的特征图上进行预测
                 ●口端到端的训练
                 ●图像的分辨率比较低,也能保证检测的精度

1.2 SSD系列算法原理介绍

         ●主干网络: VGGNet
        ●多尺度Feature Map预测
        ●Default bounding boxes的类别分数、偏移量

        ➢主干网络介绍:
                ●VGG、 ResNet、 MobileNets等 ,各种卷积神经网
                ●将VGG最后两个FC改成卷积,并增加4个卷积层.

        ➢多尺度FeatureMap预测:
                 ●不同层的feature map
                 ●Prior box :类别概率和坐标(x,y,w,h)

1.3 算法细节介绍

●Prior Box Layer:
        ➢m*n个cell
        ➢每个cell. 上生成固定scale和aspect ratio的box
                ●假设- 个feature Map有mxn个cell,每个cell对应k 个default box,每个default box预测c个类别score和4个offset
                ●(C+4) *k * m*n个输出

●Prior Box Layer        步骤:

        

●Prior Box Layer特点:

        ➢shape数量越多,效果越好
        ➢Anchor

        ➢38*38*4 + 19*19*6 + 10*10*6 + 5*5*6 + 3*3*4+1*1*4= 8732个prior box

 ●Prior Box Layer实现 :
        ➢每一个feature map cell 不是k个default box都取
        ➢prior box与GT box做匹配, IOU>阈值为正样本
        ➢训练:确保prior box的分类准确且尽可能回归到GT box

●样本构造:
        ➢正样本
                从GT box出发给找到最匹配的prior box放入候选正样本集
                从prior box集出发,寻找与GT box;满足lOU> 0.5的最大prior,box放入候选正样本集
        ➢负样本
                难例挖掘
                正负样本比: 1:3

                        ●难例挖掘流程

 ●数据增强:
        ➢随机采样多个path,与物体之间最小的jaccard overlap为: 0.1,0.3, 0.5, 0.7与0.9
        ➢采样的patch比例是[0.3, 1.0], aspect ratio在0.5或2
        ➢GT box中心在采样patch中且面积大于0
        ➢Resize到固定大小
        ➢以0.5 的概率随机的水平翻转

●损失函数:
        ➢分类loss +回归loss
        ➢分类loss: Softmax Loss
        ➢回归loss: Smooth L1 Loss

L\left ( x,c,lg \right )=\frac{1}{N}\left ( L_{conf}\left ( x,y \right )+\alpha L_{loc}\left ( x,l,g \right ) \right )

SSD系列网络结构

SSD系列算法损失函数计算
基本思路:
        让每一个prior box回归到GT box,这个过程的调控我们需要损失层的帮助,它会计算真实值和预测值之间的误差,从而指导学习的走向

●使用细节:
        ➢数据增强时,Crop采样大小
        ➢多任务网络的权重
        ➢正负样本比例
        ➢难例挖掘方式默认只取64个最高predictions loss来从中寻找负样本

SSD系列算法性能比较分析

在PASCAL VOC2007 数据集对比结果:

Table 1: PASCAL VOC2007 test detection results. Both Fast and Faster R-CNN

use input images whose minimum dimension is 600. The two SSD models have exactly the same settings except that they have different input sizes (300 X 300 vs.500 X 500).It is obvious that larger input size leads to better results.

在PASCAL VOC2012数据集上的对比结果:

 在MS COCO数据集上的对比结果:

  

          对SSD算法而言其整体的FPS 相对YOLO来说,有所降低,速度有所损失;相比与Fast R-CNN而言SSD算法有了一个性能上的提升,mAP值也有所提升。

    ●数据增强对于结果的提升非常明显
        ●使用更多的feature maps对结果提升更大
        ●使用更多的default boxes,结果也越好
        ●Atrous 使得SSD又好又快

        如果输入图像的尺寸越大对应SSD算法性能也会有一个比较大的提升,而输入图像的尺寸增大也意味着处理速度地下降。 

SSD系列算法效果

二、SSD系列算法优化及扩展

2.1 优化算法一——DSSD

 ●DSSD:
        ➢201 7年的CVPR,WeiLiu
        ➢SSD算法对小 目标不够鲁棒的最主要的原因是浅层feature map的表征能力不够强。
                加入上下文信息
                更好的基础网络(ResNet) 和Deconvolution层, skip连接来给浅层feature map更好的表征能力

DSSD改进点:
        ➢主干网络:ResNet
        ➢Deconv

        使用RestNet作为主干网络,针对后续的prior box的输入会分别使用反卷积来获取更多的特征表示,再进行回归后会得到更加鲁棒的特征。

 DSSD VS SSD:

●DSOD总结:
        ➢2017年的ICCV201 7
        ➢DSOD可以从0开始训练数据, 不需要预训练模型,而且效果可以和fine-tune的模型媲美
        ➢SSD+ DenseNet= DSOD
                可以从零开始训练得到一个好的目标检测网络吗?
                如果可以,设计这样的网络有没有什么原则可以遵守?

预训练模型优点:
        开源模型多,可以直接将他们用于目标检测
        可以快速得到最终的模型,需要的训练数据也相对较少

预训练模型缺点:
        预训练模型大,参数太多,模型结构灵活性差,难以改变网络结构,计算量也大,限制其应用场合
        分类和检测任务的损失函数和类别分布是不一-样的,优化空间存在差异
        尽管微调可以减少不同目标类别分布的差异性,但是差异太大时,微调效果依然不理想

●DSOD设计原则:
        ➢基于候选区域提取的方法无法从零开始训练,不收敛,只有proposal-free方法可以从零开始训练并收敛(ROI Pooling)
        ➢DenseNet中更多的skip connections实现supervised signals传递.
        ➢增加dense blocks数量区别原先的固定数量
        ➢Stem Block优化(3个3x 3卷积层和1个2x2最大池化层)
        ➢6个尺度特征图进行目标检测,再融合(如何利用特征图)

DSOD网络结构: 

2.2 优化算法二——FSSD

●FSSD设计原则:
        ➢借鉴了FPN的思想,重构了- -组pyramid feature map,使得算法的精度有了明显的提升,速度也没有太降
                把网络中某些feature调整为同一-szie再contact,得到一-个像素层,以此层为base layer来生成pyramid feature map
                  Feature Fusion Module

FSSD网络结构:

SSD:

FSDD:

 FSSD实验结果对比:

 2.3 优化算法三——RSSD

●RSSD设计原则:
        ➢rainbow concatenation方式(pooling加deconvolution) 融合不同层的特征,在增加不同层之间feature map关系的同时也增加了不同层的feature map个数。
        ➢这种融合方式不仅解决了传统SSD算法存在的重复框问题,同时一定程度上解决了'small object的检测问题。

RSSD网络结构:

 RSSD实验效果:        Pooling、deconvolution

 SSD系列算法应用场景

        ●人脸检测与识别任务
        ●ADAS场景目标检测与识别(车、行人、非机动车)
        ●通用物体检测与识别
        ●自然场景下文本检测与识别等等


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

相关文章

目标检测->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;你所看到的不是最终版本。 如…

Spring-全面详解(学习总结)

Spring 1.简介 1.1.简介 简介 Spring : 春天 —>给软件行业带来了春天 2002年&#xff0c;Rod Jahnson首次推出了Spring框架雏形interface21框架。 2004年3月24日&#xff0c;Spring框架以interface21框架为基础&#xff0c;经过重新设计&#xff0c;发布了1.0正式版。 …

spring超全面详解

spring概述 Spring 是于2003年兴起的一款轻量级的,非侵入式的IOC和AOP的一站式的java开发框架 为简化企业级应用开发而生. 1.轻量级: 就是指spring核心功能的jar包不大 2.非侵入式: 我们的业务代码不需要继承或实现spring中任何的类或接口 3.IOC: 控制反转 就是把创建…