SSD: Single Shot MultiBox Detector(2015)阅读笔记

2024-01-27 04:20

本文主要是介绍SSD: Single Shot MultiBox Detector(2015)阅读笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SSD: Single Shot MultiBox Detector原文链接

SSD: Single Shot MultiBox Detector(2015)阅读笔记

  • 一、解决问题
  • 二、解决方法
    • (一)整体过程
    • (二)多尺度特征映射(辅助结构产生)
    • (三)默认框
    • (四)训练
      • 1.训练样本
      • 2.损失函数
  • 三、效果
  • 参考

一、解决问题

基于RP的两阶段模型所需的计算资源较大并且检测速度太慢。虽然有很多研究尝试构建更快的检测器,但是到目前为止,显著提高的速度都以显著降低的检测精度为代价。

二、解决方法

与两阶段检测器相比,去掉了生成边界框和随后的特征重采样两个阶段,让检测速度大大提高。YOLO也是这么做的,代价是精度大幅度降低。但是SSD通过增加一系列改进,相比以前的尝试(YOLO)显著提高了准确性。
改进包括使用小型卷积滤波器来预测边界框位置中的目标类别和偏移量,使用不同长宽比检测的单独预测器(滤波器),并将这些滤波器应用于网络后期的多个特征映射中,以执行多尺度检测。通过这些修改,特别是使用不同尺度的特征图进行预测,提高了检测速度。

(一)整体过程

基于前馈卷积网络产生固定大小的边界框集合(锚点),并对这些边界框中存在的目标类别实例进行评分,然后进行非极大值抑制步骤来产生最终的检测结果。
此前馈卷积网络分为两个部分。一是基础网络:对一般图像分类的标准架构在分类层之前进行截断。二是辅助结构:用于产生多尺度特征映射的操作和用于检测的卷积预测器。结构图如下。
在这里插入图片描述
其中黄框内为基础结构,红框内为辅助结构。

(二)多尺度特征映射(辅助结构产生)

在基础网络的末端添加一组卷积层用于生产一些列特征图,这些卷积层在尺寸上逐渐减小,使生成的特征图拥有多个尺度,以便在多个尺度上对检测结果进行预测。

(三)默认框

对各个尺度的每个特征图的图单元都分别关联一组默认边界框(k个)。在每个特征图图单元格中,我们预测相对于单元格中默认框形状的偏移量,以及指示每个框中是否存在类实例的每个类别得分。具体来说,对于每个框,我们计算c类分数和相对于原始默认框形状的4个偏移。这导致在特征图中的每个位置周围应用总共 ( c + 4 ) ∗ k (c+4)*k (c+4)k个滤波器,对于尺寸为m×n的特征图产生 ( c + 4 ) ∗ k ∗ m ∗ n (c + 4)*k*m*n (c+4)kmn的输出。默认框的说明参阅下。默认框类似于Fast R-CNN中使用的锚框(锚点),但是我们将它们应用于不同分辨率的几个特征图。允许在多个特征图中使用不同的默认框形状,可以有效地离散可能的输出框形状的空间。
在这里插入图片描述

(四)训练

1.训练样本

给定输入图像以及每个物体的Ground Truth,首先找到每个Ground True Box对应的Default Box中IOU最大的作为正样本。然后,在剩下的Default Box中找到那些与任意一个Ground Truth Box的IOU大于0.5的Default Box作为正样本。其他的作为负样本(每个Default Box要么是正样本Box要么是负样本Box)。

2.损失函数

与Faster-RCNN中的RPN相似。不过RPN是预测Box里面有没有Object,并没有识别目标类别的功能。而SSD直接用的Softmax分类。Location的损失,都是用Predict box和Default Box/Anchor的差 与 Ground Truth Box和Default Box/Anchor的差进行对比来求损失。
L ( x , c , l , g ) = 1 N ( L c o n f ( x , c ) + α L l o c ( x , l , g ) ) L(x,c,l,g) =\frac{1}{N} (L_{conf}(x,c) + αL_{loc}(x,l,g)) L(x,c,l,g)=N1(Lconf(x,c)+αLloc(x,l,g))
其中N是匹配的默认框的数量,如果N = 0,则将损耗设置为0.
L l o c L_{loc} Lloc是预测框 I I I和地面实况框 g g g参数之间的平滑L1损失。回归到默认边界框 d d d的中心 ( c x , c y ) (cx,cy) cxcy及其宽度( w w w)和高度( h h h)的偏移。 L l o c ( x , l , g ) = ∑ i ∈ P o s N ∑ m ∈ ( c x , c y , w , h ) x i j k s m o o t h L 1 ( l i m − g j ˆ m ) L_{loc}(x,l,g) =∑^{N}_{i ∈Pos}∑_{m∈(cx,cy,w,h)}x^{k}_{ij}smooth_{L1}(l^{m}_{i} −g^{ˆm}_{j} ) Lloc(x,l,g)=iPosNm(cx,cy,w,h)xijksmoothL1(limgjˆm) x i j k x^{k}_{ij} xijk取0或1,作为一个指示器,用于将第i个默认框与第j个地面实况框关于第k类进行匹配。
在这里插入图片描述

L c o n f L_{conf} Lconf是多类别置信度下的softmax损失
L c o n f ( x , c ) = − ∑ i ∈ P o s i t i v e N x i j p l o g ( e x p ( c i p ) ∑ p e x p ( c i p ) ) − ∑ i ∈ N e g a t i v e l o g ( e x p ( c i 0 ) ∑ p e x p ( c i p ) ) L_{conf}(x,c) = −∑^{N}_{i ∈Positive}x^{p}_{ij}log(\frac{exp(c^{p}_{i})}{∑_{p}exp(c^{p}_{i})})−∑_{i∈Negative}log(\frac{exp(c^{0}_{i})}{∑_{p}exp(c^{p}_{i})}) Lconf(x,c)=iPositiveNxijplog(pexp(cip)exp(cip))iNegativelog(pexp(cip)exp(ci0))

三、效果

比YOLO更快的速度,和Faster RCNN一样的精度

参考

目标检测之YOLO,SSD
SSD翻译

这篇关于SSD: Single Shot MultiBox Detector(2015)阅读笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/649046

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个