SSD: Single Shot MultiBox Detector(2016.11)

news2024/11/16 18:34:11


文章目录

  • Abstract
  • Introduction
    • 此前
    • 本文
    • 贡献总结如下:
  • The Single Shot Detector (SSD)
    • SSD Model
    • Multi-scale feature maps for detection
    • Convolutional predictors for detection
    • Default boxes and aspect ratios
    • Training
      • Matching strategy
      • Training objective
      • Choosing scales and aspect ratios for default boxes
      • Hard negative mining(困难样本挖掘)
      • Data augmentation
  • Experimental Results
    • PASCAL VOC2007
    • Model analysis
    • PASCAL VOC2012
    • COCO
    • 小目标精度的数据增强
  • Related Work
  • Conclusion

原文链接
源代码

Abstract

我们提出了一种使用单个深度神经网络检测图像中物体的方法,将边界框的输出空间离散为一组默认框,每个特征图位置具有不同的长宽比和尺度,我们的方法命名为SSD。在预测时,网络为每个默认框中每个对象类别的存在生成分数,并对框进行调整以更好地匹配目标形状。此外,该网络结合了来自不同分辨率的多个特征映射的预测,以自然地处理各种大小的对象。相对于需要目标候选框的方法,SSD是简单的,因为它完全消除了候选框生成和随后的像素或特征重新采样阶段,并将所有计算封装在单个网络中,这使得SSD易于训练和直接集成到需要检测组件的系统中。在PASCAL VOC, COCO和ILSVRC数据集上的实验结果证实,SSD具有与使用额外目标候选框步骤的方法相竞争的准确性,并且速度更快,同时为训练和推理提供了统一的框架。与其他单阶段方法相比,SSD即使在较小的输入图像尺寸下也具有更好的精度

Introduction

此前

当前最先进的目标检测系统是以下方法的变体:假设边界框,为每个框重新采样像素或特征,并应用高质量的分类器。自选择性搜索(SS)工作[1]以来,该管道在检测基准上占据了主导地位,目前PASCAL VOC, COCO和ILSVRC检测的领先结果都基于Faster R-CNN[2],尽管具有[3]等更深层的特征。这些方法虽然准确,但对于嵌入式系统来说计算量太大,即使是高端硬件,对于实时应用程序来说也太慢
已经有很多尝试通过攻击检测管道的每个阶段来构建更快的检测器(参见第4节中的相关工作),但到目前为止,速度的显著提高只以检测精度的显著降低为代价

本文

本文提出了第一个基于深度网络的目标检测器,它不需要为边界框假设重新采样像素或特征,并且与其他方法一样准确,这大大提高了高精度检测的速度
速度的根本改进来自于消除边界框生成和随后的像素或特征重采样阶段
我们的改进包括使用一个小的卷积滤波器来预测物体类别和边界框位置的偏移量,使用单独的预测器(过滤器)进行不同的宽高比检测,并将这些过滤器应用于来自网络后期阶段的多个特征映射,以便在多个尺度上执行检测
通过这些改进,特别是在不同的尺度上使用多层预测,我们可以使用相对较低的分辨率输入实现高精度,进一步提高检测速度

贡献总结如下:

介绍了SSD,一种针对多个类别的少样本检测器,它比以前最先进的少样本检测器(YOLO)更快,而且更准确,实际上与执行显式候选区域和池化(包括faster R-CNN)的较慢技术一样准确
SSD的核心是使用应用于特征映射的小卷积过滤器来预测一组固定的默认边界框的类别分数和框偏移
—为了达到较高的检测精度,我们从不同比例尺的特征图中产生不同比例尺的预测,并通过纵横比明确地分离预测
—这些设计特点导致简单的端到端训练和高精度(即使在低分辨率输入图像),进一步提高速度与精度的权衡
实验包括在PASCAL VOC、COCO和ILSVRC上对不同输入大小的模型进行时序和准确性分析,并与一系列最新的最先进的方法进行比较

The Single Shot Detector (SSD)

SSD Model


SSD方法基于前馈卷积网络,该网络生成固定大小的边界框集合和这些框中存在的对象类实例的分数,然后通过非最大抑制步骤生成最终检测早期的网络层基于用于高质量图像分类的标准体系结构(在任何分类层之前被截断),我们将其称为基础网络,然后,我们将辅助结构添加到网络中,以产生具有以下关键特征的检测:

Multi-scale feature maps for detection

我们将卷积特征层添加到截断的基础网络的末端,这些层的尺寸逐渐减小,并允许在多个尺度上预测探测。用于预测检测的卷积模型对于每个特征层都是不同的(参见Overfeat[4]和YOLO[5],它们在单个尺度特征图上运行

Convolutional predictors for detection

每个添加的特征层(或者选择一个来自基础网络的现有特征层)可以使用一组卷积滤波器产生一组固定的检测预测,这些都显示在图2中的SSD网络架构之上
SSD和YOLO[5]两种少样本检测模型的比较
我们的SSD模型在基础网络的末端添加了几个特征层,这些特征层预测了不同比例和宽高比的默认框的偏移量及其相关的置信度。在VOC2007测试中,300 × 300输入尺寸的SSD在精度上明显优于448 × 448 YOLO,同时速度也有所提高

Default boxes and aspect ratios

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

Training

训练SSD和训练使用区域生成的典型检测器之间的关键区别在于,需要将基础真值信息分配给固定检测器输出集合中的特定输出
训练还包括选择检测的默认框和尺度集,以及硬负挖掘和数据增强策略

Matching strategy

我们首先将每个ground truth box与具有最佳jaccard重叠的默认box(如MultiBox[7])进行匹配。与MultiBox不同,我们然后将默认框与任何高于阈值(0.5)的jaccard重叠的基本事实相匹配,这简化了学习问题,允许网络预测多个重叠的默认框的高分,而不是要求它只选择重叠最大的一个

Training objective

SSD训练目标来源于MultiBox目标[7,8],但扩展到处理多个对象类别。设x^p ij ={1,0}为类别p的第i个默认框与第j个接地真值框匹配的指标。在上述匹配策略中,我们可以有累加求和x的p次方ij <=1。总体目标损失函数是局部损失(loc)和置信度损失(conf)的加权和
N是匹配的默认框的数量,如果N = 0,则将损失设为0。我们回归到默认边界框(d)的中心(cx,cy)及其宽度(w)和高度(h)的偏移量
置信度损失是多个类置信度©上的softmax损失
通过交叉验证将权重项α设为1

Choosing scales and aspect ratios for default boxes

通过利用单个网络中来自多个不同层的特征图进行预测,我们可以模拟相同的效果,同时还可以在所有对象尺度上共享参数
我们同时使用上下特征映射进行检测
假设我们想用m个特征映射进行预测。每个特征图的默认框的比例计算为:

其中S min为0.2,S max为0.9,这意味着最低层的尺度为0.2,最高层的尺度为0.9,中间所有层的间隔是规则的

通过将所有默认框的预测与许多特征图的所有位置的不同比例和维度相结合,我们有了一组不同的预测,涵盖了各种输入对象的大小和形状。例如,在图1中,狗与4 × 4特征图中的默认框匹配,但不与8 × 8特征图中的任何默认框匹配。这是因为这些框有不同的尺度,与狗的框不匹配,因此在训练中被认为是负面的

Hard negative mining(困难样本挖掘)

在匹配步骤之后,大多数默认框都是负的,特别是当可能的默认框的数量很大时。这就导致了正面和负面训练示例之间的严重不平衡。我们不使用所有的负面示例,而是使用每个默认框的最高置信度损失对它们进行排序,并选择顶部的示例,以便负面和正面之间的比率最多为3:1。我们发现,这导致更快的优化和更稳定的训练

Data augmentation

为了使模型对各种大小和形状的输入对象具有更强的鲁棒性,每个训练图像通过以下选项之一随机采样:
—使用完整的原始输入图像
—采样一个补丁,使最小的jaccard重叠的对象是0.1,0.3,0.5,0.7,或0.9
—随机抽取一个补丁
每个采样patch的大小为原始图像大小的[0.1,1],宽高比在1 2 ~ 2之间,如果地面真值盒的中心在采样patch中,我们保留重叠的部分

Experimental Results

我们的实验都是基于VGG16[15],它是在ILSVRC CLS-LOC数据集[16]上预训练的

PASCAL VOC2007

Model analysis

为了更好地理解SSD,我们进行了受控实验,以检查每个组件如何影响性能。对于所有的实验,我们使用相同的设置和输入大小(300 × 300),除了指定更改设置或组件

数据增强是关键
默认box形状越多越好
使用Atrous速度更快
不同分辨率下的多个输出层效果更好

PASCAL VOC2012

COCO

小目标精度的数据增强

第2.2节中描述的数据增强策略有助于显著提高性能,特别是在PASCAL VOC这样的小数据集上
该策略生成的随机作物可以被认为是一种“放大”操作,可以生成许多更大的训练示例。为了实现“缩小”操作,创建更多的小训练样例,我们首先将图像随机放置在原始图像大小的16倍的画布上,然后填充平均值,然后再进行任何随机裁剪操作。因为通过引入这种新的“扩展”数据增强技巧,我们有更多的训练图像,我们必须将训练迭代增加一倍。我们看到,mAP在多个数据集上一致地增加了2%-3%,如表6所示。具体来说,图6显示了新的增强技巧显著提高了小对象的性能。这一结果强调了数据增强策略对最终模型精度的重要性

改进SSD的另一种方法是设计更好的默认框平铺,以便其位置和比例与特征映射上每个位置的接受域更好地对齐

Related Work

图像中的目标检测方法有两类,一类是基于滑动窗口的方法,另一类是基于区域候选框分类的方法。在卷积神经网络出现之前,这两种最先进的方法——可变形部件模型(DPM)[26]和选择性搜索[1]——具有相当的性能。然而,在R-CNN[22]将选择性搜索区域候选框和基于卷积网络的后分类相结合带来了巨大的改进之后,区域候选框目标检测方法开始流行

最初的R-CNN方法已经在很多方面得到了改进,第一组方法提高了后分类的质量和速度,因为它需要对成千上万的图像进行分类,既昂贵又耗时SPPnet[9]大大加快了原来的R-CNN方法。它引入了一个空间金字塔池层,该层对区域大小和规模具有更强的鲁棒性,并允许分类层重用在几种图像分辨率下生成的特征映射上计算的特征。Fast R-CNN[6]扩展了SPPnet,因此它可以通过最小化置信度和边界盒回归的损失来微调所有层的端到端,这在MultiBox[7]中首次引入用于学习对象

第二组方法使用深度神经网络提高候选框生成的质量。在最近的工作中,如MultiBox[7,8],基于低级图像特征的选择性搜索区域候选框被直接由单独的深度神经网络生成的候选框所取代。这进一步提高了检测精度,但导致设置有些复杂,需要训练两个神经网络,它们之间存在依赖关系。Faster R-CNN[2]采用区域生成网络(region proposal network, RPN)替代选择性搜索候选框,并引入了一种将RPN与Fast R-CNN融合的方法,该方法通过对这两个网络进行微调共享卷积层和预测层的交替进行。这种方法使用区域候选框来汇集中级特征,并且最后的分类步骤成本更低

我们的SSD与Faster R-CNN中的区域建议网络(RPN)非常相似,因为我们也使用一组固定的(默认)框进行预测,类似于RPN中的anchor框。但是,我们没有使用这些特征来汇集特征并评估另一个分类器,而是同时为每个框中的每个对象类别生成一个分数。因此,我们的方法避免了将RPN与Fast R-CNN合并的复杂性,并且更容易训练,更快,并且直接集成到其他任务中

与我们的方法直接相关的另一组方法完全跳过了候选框步骤直接预测多个类别的边界框和置信度OverFeat[4]是滑动窗口方法的深度版本,在知道底层对象类别的置信度后,直接从最顶层特征图的每个位置预测一个边界框YOLO[5]使用整个最顶层的特征映射来预测多个类别和边界框(这些类别共享)的置信度。我们的SSD方法属于这一类,因为我们没有候选框步骤,而是使用默认框
我们的方法比现有的方法更灵活,因为我们可以在不同比例尺的多个特征图的每个特征位置上使用不同纵横比的默认框。如果我们只使用顶部功能图中的每个位置的默认盒子,那么我们的SSD将具有与OverFeat[4]相似的架构;如果我们使用整个最顶层的特征图,并添加一个完全连接的层来预测,而不是我们的卷积预测器,并且不明确地考虑多个纵横比,我们可以近似地重现YOLO

Conclusion

本文介绍了一种快速的多类别少样本目标检测器SSD。我们模型的一个关键特征是使用多尺度卷积边界盒输出附加到网络顶部的多个特征映射,这种表示允许我们有效地为可能的盒子形状空间建模

我们通过实验验证,在给定适当的训练策略的情况下,大量精心选择的默认边界框可以提高性能。与现有方法相比,我们构建的SSD模型至少具有一个数量级的box预测采样位置、规模和纵横比

我们证明,在相同的VGG-16基础架构下,SSD在精度和速度方面都优于其最先进的目标检测器。我们的SSD512模型在PASCAL VOC和COCO的精度方面显著优于最先进的Faster R-CNN[2],同时速度提高了3倍。我们的实时SSD300模型以59 FPS的速度运行,比目前的实时YOLO[5]更快,同时产生明显更好的检测精度

除了它的独立实用程序外,我们相信我们的单片和相对简单的SSD模型为使用对象检测组件的大型系统提供了一个有用的构建块。一个有希望的未来方向是探索其作为使用循环神经网络的系统的一部分,以同时检测和跟踪视频中的物体

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

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

相关文章

python---for循环结构中的else结构(是同级关系)

为什么需要在for循环中添加else结构 循环可以和else配合使用&#xff0c; else下方缩进的代码指的是当循环正常结束之后要执行的代码。 强调&#xff1a; 循环 正常结束&#xff0c;else之后要执行的代码。 非正常结束&#xff0c;其else中的代码是不会执行的。&#xf…

GienTech动态|入选软件和信息技术服务名牌企业;荣获城市数字化转型优秀案例;参加第四届深圳国际人工智能展

中电金信入选“2023第二届软件和信息技术服务名牌企业” 近日&#xff0c;中国电子信息行业联合会发布了“2023第二届软件和信息技术服务名牌企业”名单&#xff0c;中电金信入选。此名单发布原则&#xff0c;重点突出技术创新力。突出市场影响力&#xff0c;品牌建设良好&…

Leetcode刷题笔记--Hot81--90

1--打家劫舍III 主要思路&#xff1a; 基于从下到上的 dp 回溯法&#xff0c;每一个节点只有两种状态&#xff0c;dp[0]表示被打劫&#xff0c;dp[1]表示不被打劫&#xff1b; 当前节点被打劫时&#xff0c;其孩子只能都不被打劫&#xff1b;dp[0] left[1] right[1] cur->…

redis集群理论和搭建

目录 环境 一&#xff0c;安装和部署redis 1&#xff0c;安装 2&#xff0c;部署 ​编辑 3&#xff0c;允许非本机连接redis 二、主从模式 主从模式搭建&#xff1a; 三&#xff0c;哨兵模式 哨兵模式搭建 四&#xff0c;集群模式 架构细节: 心跳机制 集群模式搭建&#xff1a…

【NLP】word复制指定内容到新的word文档

目录 1.python代码 2.结果 需求&#xff1a; 复制word文档里的两个关键字&#xff08;例如“起始位置”到“结束位置”&#xff09;之间的内容到新的word文档。 前提&#xff1a;安装win32包&#xff0c;通过pip install pywin32命令直接安装。话不多说&#xff0c;直接上代码…

底层全部重构,小米澎湃OS完整系统架构公布

上周&#xff0c;雷军发文称小米全新操作系统澎湃 OS 正式版已完成封包&#xff0c;将逐步接替 MIUI。而后&#xff0c;又有网友曝光小米澎湃 OS 界面。 今日&#xff0c;雷军再度发表长文预热小米澎湃 OS&#xff0c;正式公布了完整系统架构。 据介绍&#xff0c;从架构设计之…

CSS基础入门03

目录 1.圆角矩形 1.1基本用法 1.2生成圆形 1.3生成圆角矩形 1.4展开写法 2.Chrome 调试工具--查看 CSS 属性 2.1打开浏览器 2.2标签页含义 2.3elements 标签页使用 3.元素的显示模式 3.1块级元素 3.2行内元素/内联元素 3.3行内元素和块级元素的区别 3.4改变显示模…

Leetcode刷题详解——寻找峰值

1. 题目链接&#xff1a;162. 寻找峰值 2. 题目描述&#xff1a; 峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums&#xff0c;找到峰值元素并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回 任何一个峰值 所在位置即可。 你可…

Zabbix监控IP地址是否畅通

一、fping安装 1.下载fping安装包 wget http://www.fping.org/dist/fping-4.0.tar.gz下载失败的&#xff0c;请看 https://download.csdn.net/download/qq_45748758/88477979 资源包已上传&#xff0c;免费 2.解压安装包 tar -xf fping-4.0.tar.gz3.安装 cd fping-4.0 ./c…

在HTML当中引入Vue控件,以element-ui为例

前情&#xff1a;需要实现一个同时满足按天、按周、按月选择的时间选择器&#xff0c;但是以HTML为基础写的都不太满足我的要求&#xff0c;要么只能按天选择&#xff0c;要么就是想选择久远的时间得点很久&#xff0c;除非自己写捷径&#xff0c;所以就看上了element-ui的这个…

【开源】基于SpringBoot的计算机机房作业管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 登录注册模块2.2 课程管理模块2.3 课时管理模块2.4 学生作业模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 课程表3.2.2 课时表3.2.3 学生作业表 四、系统展示五、核心代码5.1 查询课程数据5.2 新增课时5.3 提交作…

Linux中shell的执行流控制

目录 一、for语句 1、for语句的基本格式 2、示例 二、条件语句 1、while…do语句 2、until…do语句 3、if …then语句 4、示例 三、case语句 四、expect应答语句 1、固定答案 2、将expect与bash环境结合 3、示例 五、终止语句 一、for语句 作用&#xff1a;为…

论文-分布式-并发控制-并发控制问题的解决方案

目录 参考文献 问题 解法与证明 易读版本 参考文献 Dijkstra于1965年发表文章Solution of a Problem in Concurrent Programming Control&#xff0c;引出并发系统下的互斥(mutual exclusion)问题&#xff0c;自此开辟了分布式计算领域Dijkstra在文中给出了基于共享存储原子…

28 行为型模式-中介者模式

1 中介者模式介绍 2 中介者模式原理 3 中介者模式实现 /*** 抽象中介者**/ public interface Mediator {//处理同事对象注册与转发同事对象信息的方法void apply(String key); }/*** 具体中介者**/ public class MediatorImpl implements Mediator {Overridepublic void apply…

【面试经典150 | 栈】最小栈

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;辅助栈方法二&#xff1a;一个栈方法三&#xff1a;栈中存放差值 其他语言python3 写在最后 Tag 【设计类】【栈】 题目来源 155. 最小栈 题目解读 本题是一个设计类的题目&#xff0c;设计一个最小栈类 MinStack() …

蓝桥杯 Java 括号序列

本算法需要把问题分解成三步&#xff1a; 第一步&#xff1a;算出 ((() 填充 ( 的方案 第二步&#xff1a;算出 ((() 填充 ) 的方案 第三步&#xff1a;把两个方案相乘 第二步可以把原方案当成将 ((() 逆转成 ())) 再填充 ( &#xff0c;这样就可以重复第一步用的算法 第一步…

ChatGLM3 本地部署的解决方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

基于springboot实现网上图书商城管理系统项目【项目源码+论文说明】

基于springboot实现网上图书商城管理系统演示 摘要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括网上图书商城的网络应用&#xff0c;在外国网上图书商城已经是很普遍的方式&#xff0c;不过国内的管理网站可能还处于起步…

解读PowerJob的秘密武器:探索Akka Toolkit原理

本文适合有 Java 基础知识的人群 Akka is a toolkit for building highly concurrent, distributed, and resilient message-driven applications for Java and Scala. 上面这段文字摘抄自 Akka 官网&#xff08;akka.io&#xff09;&#xff0c;翻译成中文也就是&#xff1a;“…

接口返回响应,统一封装(ResponseBodyAdvice + Result)(SpringBoot)

需求 接口的返回响应&#xff0c;封装成统一的数据格式&#xff0c;再返回给前端。 依赖 对于SpringBoot项目&#xff0c;接口层基于 SpringWeb&#xff0c;也就是 SpringMVC。 <dependency><groupId>org.springframework.boot</groupId><artifactId&g…