深度学习 -- SSD 算法流程详解
SSD同样是经典论文,后续很多论文以此为基础,所以搞懂流程比较重要,中间如果 有写的不对、有问题或者有看不懂的地方,还望指正。如果有了新的理解,我会持续更新。
作为经典论文,SSD算法也同样产生了很多后续工作比如 DSSD、RefineDet等等,而且由于有速度优势,工程中使用SSD和YOLO的可能性会更大。
一、网络结构:
上图是SSD和YOLO的网络结构,通过对比可以发现,SSD的优点就是它生成的 default box 是多尺度的,这是因为SSD生成default box 的 feature map 不仅仅是CNN输出的最后一层,还有利用比较浅层的feature map 生成的default box。所以SSD对于小目标的检测一定会优于YOLO v1(小目标经过高层卷积后特征几乎都消失了)。同时,又因为SSD生成的多尺度default box一定有更高概率找到更加贴近于 Ground Truth 的候选框,所以模型的稳定性是肯定比YOLO强的(YOLO的bounding box很少,只有98个,如果距离GT比较远,那么修正 bounding box 的线性回归就不成立,训练时模型可能会跑飞)。但是SSD的候选框数量是三种经典网络中最多的,有8732个,所以训练时应该会比较慢。
二、算法流程:
首先来看一下SSD的基本步骤(比YOLO稍微复杂点,但是也很直接了):
- 输入一幅图片,让图片经过卷积神经网络(CNN)提取特征,并生成 feature map
- 抽取其中六层的feature map,然后再 feature map 的每个点上生成 default box(各层的个数不同,但每个点都有)
- 将生成的所有 default box 都集合起来,全部丢到 NMS(极大值抑制)中,输出筛选后的 default box,并输出
三、算法细节:
3.1 default box怎么生成的:
这是原文中的图,图(b)和 图(c)中的虚线框就是生成的 default box,总共的怎么算呢? 38x38x4、19x19x6、10x10x6、5x5x6、3x3x4、1x1x4,也就是 5773、2166、600、150、36、4,加起来一共有 8732 个box,然后我们将这些box送入NMS模块中,获得最终的检测结果。
3.2 default 的生成规则:
由于不同层的 feature map 对应到原图上的感受野不同,所以在不同层山生成的default box其实大小是不一样的(比例一样)。
生成 default box 时,在 feature map 上每个点上生成一系列同心的Defalut box(然后中心点的坐标会乘以step,相当于从feature map位置映射回原图位置)使用m(这里m = 6,因为就选了6层)个不同大小的feature map 来做预测,最底层的 feature map 的 scale 值为 Smin=0.2,最高层的为Smax=0.9,其他层通过下面的公式计算得到:
使用不同的ratio值,[1, 2, 3, 1/2, 1/3],通过下面的公式计算 default box 的宽度w和高度h
而对于ratio=1的情况,指定的scale如下所示,即总共有 6 中不同的 default box。
default box 的中心点坐标为: , fk时第k层的feature map 的大小。
3.3 Loss 函数:
后续的很多目标检测论文都是用这样的损失函数,SSD算法的损失函数分为两部分:计算相应的default box与目标类别的confidence loss以及相应的位置回归。
其中 N 是match到Ground Truth的default box数量;而alpha参数用于调整confidence loss和location loss之间的比例,默认alpha=1。
3.3.1 位置回归则是采用 Smooth L1 loss,目标函数为:
3.3.2 confidence loss是典型的softmax loss:
下图非常好的解释了SSD的Loss函数是怎么来的(用下别人的图,有时间自己画一个,方便理解):
3.4 训练样本比例:
文中提到,由于有8000多个default box 那么matching之后会有大量的负样本,为了数据集更加干净,正负样本比例取到 1:3。
以上
参考:https://www.cnblogs.com/MY0213/p/9858383.html
https://blog.csdn.net/wfei101/article/details/78176322
https://blog.csdn.net/jy001227801/article/details/80388192
深度学习 -- SSD 算法流程详解相关推荐
- 机器学习,深度学习基础算法原理详解(图的搜索、交叉验证、PAC框架、VC-维(持续更新))
机器学习,深度学习基础算法原理详解(图的搜索.交叉验证.PAC框架.VC-维.支持向量机.核方法(持续更新)) 机器学习,深度学习基础算法原理详解(数据结构部分(持续更新)) 文章目录 1. 图的搜索 ...
- 深度学习经典算法 | 遗传算法详解
遗传算法生物学基础 在一定的时间内,有一群兔子,其中一些比另外一些兔子跑得快,而且更聪明,这些兔子被狐狸吃掉的可能性比较小,因此它们中的多数就存活下来并繁殖更多的兔子.当然,一些跑得慢而愚蠢的兔子也会 ...
- 推荐系统整体架构及算法流程详解
省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 知识图谱在美团推荐场景中的应用实践 搜索场景下的智能实体推荐 机器学习在B站推荐系统中的应用实践 小红书推荐系统 ...
- 推荐系统架构与算法流程详解
你知道的越多,不知道的就越多,业余的像一棵小草! 成功路上并不拥挤,因为坚持的人不多. 编辑:业余草 zhuanlan.zhihu.com/p/259985388 推荐:https://www.xtt ...
- 深度学习网络模型——Vision Transformer详解 VIT详解
深度学习网络模型--Vision Transformer详解 VIT详解 通用深度学习网络效果改进调参训练公司自己的数据集,训练步骤记录: 代码实现version-Transformer网络各个流程, ...
- 深度学习网络模型——RepVGG网络详解、RepVGG网络训练花分类数据集整体项目实现
深度学习网络模型--RepVGG网络详解.RepVGG网络训练花分类数据集整体项目实现 0 前言 1 RepVGG Block详解 2 结构重参数化 2.1 融合Conv2d和BN 2.2 Conv2 ...
- 独家总结| 基于深度学习的目标检测详解
欢迎关注微信公众号[计算机视觉联盟] 获取更多前沿AI.CV资讯 基于深度学习的目标检测 基于深度学习的目 ...
- 【深度学习】一文详解RNN及股票预测实战(Python)!
循环神经网络(RNN)是基于序列数据(如语言.语音.时间序列)的递归性质而设计的,是一种反馈类型的神经网络,其结构包含环和自重复,因此被称为"循环".它专门用于处理序列数据,如逐字 ...
- 【深度学习】Batch Normalization详解
Batch Normalization 学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50866313 作者:hjimce 一.背景意义 ...
最新文章
- paip.odbc DSN的存储与读取
- 我们常常意识不到问题的存在,直到有人解决了这些问题
- java中class_Java中Class对象详解
- python flask 学习与实战
- python win10 桌面_Python3如何实现Win10桌面自动切换
- C#算法设计排序篇之10-桶排序(附带动画演示程序)
- SpringMVC学习指南-前言
- 基于RV1126平台imx291分析 --- imx291注册
- 【SVP补帧】【教程】尽量不改变电脑设置的压制方案
- 第22篇 项目进度管理__计划评审技术__重点内容
- 微信公众号开发2自动回复
- (附源码)app学科竞赛活动报名系统 毕业设计 012239
- 【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD登录并获取AccessToken -- cca.acquireTokenByCode(tokenRequest)
- 福利:阿里云免费试用劵
- 关于win7阉割版pycharm pyttsx3库无法使用解决方法
- 基于Linux+ARM的远程视频监控--硬件篇
- 手表运动状态识别(静止/走路/跑步)_数据样例
- 使用table2excel做excel表格下载
- java获取session失效时间_Java设置session超时(失效)的时间
- Windows操作系统Jenkins下载安装及配置
热门文章
- linux 对称加密命令,linux安全和加密篇(三)—openssl工具和CA证书
- 5G NR 基本概念
- 发现网站被劫持该怎么办?网站域名劫持如何有效预防
- [noip2016]天天爱跑步
- 好心情精神心理科医生:如何与青春期的孩子沟通?
- jsonp无X-Requested-With 及其深扒
- 【分治】剑指 Offer 33. 二叉搜索树的后序遍历序列
- 安徽大学计算机学院张兴义教授,CCF YOCSEF合肥与CCF合肥分部联合成功举办 “2018CCF合肥为新研究生导航”活动...
- 毕业设计:新闻大数据搜索系统 (完整代码运行)
- 管理者的人品的重要性