计算机视觉新手如何轻松地理解SSD算法?
CV_01 SSD算法的简单理解(入门级别)
一. 写这篇博文的初衷
其实在很多论坛也好,贴吧也罢已经有了很多关于SSD算法的剖析与理解,但大部分都比较学术和深奥,博主在初学的时候也是遇到了不少难以理解的问题,在反复地学习之后,有了一些比较浅显的理解与感悟,因此在这里与大家分享一下,当然不免会出现比较低级的错误,如果有错误的地方还请读者大大们踊跃地提出来,我们一起进步。
二. 什么叫SSD?
SSD算法,其英文全名是Single Shot MultiBox Detector,翻译成中文就是:“单激发多框探测器”,Single shot就指明了SSD算法属于one-stage方法,MultiBox指明了SSD是由多个bounding box来完成预测的。那么问题来了什么叫one-stage,什么又叫做bounding box呢?
1. one-stage VS two-stage
简单地来说,计算机在做目标检测的时候,通常需要做两件事,第一件事是【目标在哪(定位)】,第二件事是【目标是啥(分类)】。因此人们就根据这两件事,把目标检测分为了两大类,一类叫做two-stage,另一类就叫做one-stage。对于two-stage来说,它会先生成一些候选区域,这些区域有可能会包含一个待检测目标(定位),紧接着再采取一些后续操作来区分每个候选区域里具体包含了哪些目标(分类)。对于one-stage来说,它则是通过一次网络就同时得到了被检测物体的位置信息和分类信息。因此可以看出来:two-stage的精确度更高,而one-stage的速度更快。
2. bounding box
bounding box翻译成中文来说就是“边界框”,从字面上不难理解,它是用来区分框内物体与框外背景的一个工具。也就是说当一张图片中出现了bounding box的时候,其实就明确地告诉了你图片中所存在的被检测物体的位置,有了这个“边界框”之后,就可以针对边界框内被检测物体的特征来完成对它的分类操作。
三. SSD算法的网络架构及实现流程
大家对这张图肯定不陌生(我把小汽车换成了小猫咪)。
- 在特征提取环节我加入三个不同颜色的框框把SSD目标检测网络切分成了三个部分。第一个部分(黄色)做的事情就是为了防止图像失真从而将待传入网络的图片进行 300x300x3 的resize处理。第二个部分(蓝色)就是SSD网络对VGG16深度卷积神经网络的“调用”,也就是先让传入网络中的图像先过一遍VGG16深度卷积神经网络提取出一大堆特征。第三个部分(红色)就是SSD算法新颖的地方,就是它在VGG16的基础上又新增了四个卷积层,从而进行了更多次的特征提取,来获得更多数量的特征层。在每一个特征层的上边都有一组 “数字x数字x数字” 的标注,对于这个标注的理解其实可以简单地把它想做把图像分割成了多少个网格,比如 38x38x512 就可以理解为将一张图片分割成了 38x38 个小网格并进行了512次的特征提取。
- 在获取完这些特征层并对图像添加了网格之后,就需要来添加先验框了!这里以SSD作者的解释为例(如下图):可见右边这两个feature map中的虚线部分,就是我们提前根据每个网格的中心而添加的先验框(def box)。这也就是我们为什么要在特征提取环节要对图像绘制网格的原因了。
对应SSD网络架构图中标识,可以看出来我们一共添加了:38x38x4 + 19x19x6 + 10x10x6 + 5x5x6 + 3x3x4 + 1x1x4 = 8732个先验框。也就得到了类似于以下的结果。
- 在获得了这么多的先验框(def box)之后,分别判断这8732个先验框中有没有我们需要的物体,如果有的话就把它标记出来,当然在利用这些先验框所得到的框中肯定会有一些比如发生了与被检测物体重合的情况,之后就需要我们对这些框的得分和重合情况进行判断,利用非极大抑制的方法找到我们需要的框并且标记出它所属于的种类,这样就算完成了SSD检测算法的检测过程了。
四. 博文推荐
由于博主这篇博文是为了让新手更加轻松地去理解SSD算法,实际上SSD算法的巧妙之处并不止这些,如果您想要进一步深入地去了解SSD算法,请移步以下大佬的博文。
- 目标检测算法——SSD详解
- 目标检测SSD算法(新手入门)
- 睿智的目标检测23——Pytorch搭建SSD目标检测平台
- SSD算法详解
如有问题,敬请指正。欢迎转载,但请注明出处。
计算机视觉新手如何轻松地理解SSD算法?相关推荐
- 基于SSD的交通标志检测-介绍ssd算法
序 去年11月关注到这类问题.在目标检测这类视觉任务中,目前的处理方式分为two-stage和one-stage,one-stage中代表就是yolo和ssd.yolo去年5月时候就跟学长一起了解过, ...
- SSD算法理解(1)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010167269/article/details/52563573 Preface 这是今年 EC ...
- 防劝退!数据结构和算法难理解?可视化动画带你轻松透彻理解!
大家好,我是 Rocky0429,一个连数据结构和算法都不会的蒟蒻- 学过数据结构和算法的都知道这玩意儿不好学,没学过的经常听到这样的说法还没学就觉得难,其实难吗?真难! 难在哪呢?当年我还是个小蒟蒻 ...
- 动态规划之:让你轻松理解背包算法
动态规划之:背包算法最简单的理解 1.常用的算法设计技术:贪心算法,分治和动态规划. 贪心:寻找局部最优,代替全局最优.比如说不带权的区间调度问题,每次选取最早完成时间的作业.找到贪心的标准是最重要的 ...
- 目标检测 | 清晰易懂的SSD算法原理综述
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 SSD(Single Shot Detection)是一个流行且强 ...
- 目标检测:SSD算法原理综述
SSD(Single Shot Detection)是一个流行且强大的目标检测网络,网络结构包含了基础网络(Base Network),辅助卷积层(Auxiliary Convolutions)和预测 ...
- 一步步教你轻松学K-means聚类算法
一步步教你轻松学K-means聚类算法 (白宁超 2018年9月13日09:10:33) 导读:k-均值算法(英文:k-means clustering),属于比较常用的算法之一,文本首先介绍聚类 ...
- 基于改进SSD算法的小目标检测与应用
人工智能技术与咨询 点击蓝字 · 关注我们 来源:< 计算机科学与应用> ,作者刘洋等 关键词: SSD:深度学习:小目标检测 摘要: 摘要: 针对通用目标检测方法在复杂环境下检测小目标时 ...
- 理解SSD多盒-实时目标检测
这幅图片解释了构成直观的解释关于SSD多盒目标检测技术. 自从AlexNet在2012年ILSVRC比赛中对于图像识别任务打败传统计算机视觉方法后给研究界带来风暴.在计算机视觉领域,传统神经网络在图像 ...
最新文章
- python从小到大的顺序输出-python从小到大的顺序输出
- Python小白的数学建模课-A1.国赛赛题类型分析
- 学php记不住函数,为什么都是记不住PHP 的函数名
- 微擎使用腾讯地图拾取坐标
- 基于JAVA汽车客运站票务管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
- mac vs 返回上一步_Mac 上 VSCode常用快捷键
- html放大镜,可清晰放大整个网页
- Python网络之数据库
- 业务与信令-第5章VoLTE原理
- android如何设置自适应大小的背景图片,Android – 设置壁纸以适应手机屏幕尺寸...
- 计算机编程专业的民办大学排名,法国计算机编程专业大学排名(2020年USNEWS)_快飞留学...
- Oracle 21版Database In-Memory LivaLabs实验(上)
- FMM 大战 LMM - SOFR 企稳 Part III
- 关于ckeditor富文本编辑器上传图片返回“不正确的服务器响应”的解决方案
- 初识Ethernet(以太网)和Token Ring(令牌环网)的区别
- 使用决策树算法评估汽车等级
- Information from parts of words: Subword Models
- 24HTML5期末大作业:XXX 网站设计——指环王:护戒使者(13页) HTML+CSS+JavaScript HTML+CSS+JS网页设计期末课程大作业 web前端开发技术 web课程 网页规
- kafka的常用命令
- 基础护理学类毕业论文文献都有哪些?