三维重建5:场景中语义分析/语义SLAM/DCNN-大尺度SLAM
前言:
在实时/非实时大规模三维场景重建中,引入了语义SLAM这个概念,参考三维重建:SLAM的尺度和方法论问题和三维重建:SLAM的粒度和工程化问题 。大规模三维场景重建的尺度增大,因此相对于整个重建过程的粒度也从点到特征点到目标物体级别,对场景进行语义标记成为重要的工作。
场景语义标记的传统方法:
其他:机器人在线场景感知问题,场景识别问题。
参考文章:场景感知:图像的稀疏表示
对场景进行目标检测,并串联目标特征或者打包成set,形成场景特征。根据场景特征进行分类场景,既是场景感知。对于大量需要感知的场景,既是场景中有多类物体,形成的场景特征的向量维数变得更大更长,为了降低计算量,引入了稀疏编码的方法。
深度学习的语义标记方法:
对于超大环境,比如整个中国建立一个三维地图,Agent端的存储能力和计算能力必定达不到海量数据存储和检索的要求。因此,引入C/S模式的云端框架是合适的选择。对于超量的类别进行模式识别,传统的集成学习仍然遇到理论上的困难,比如VC维的约束。因此,基于深度学习的场景语义识别是暂时最佳可选的方案,Agent作为一个数据获取端,把数据传输到云端服务器,在服务器上使用DCNN进行语义检测,用于检测目标和场景,进而判断是否存在闭环/Agent在场景中的位姿。
语义SLAM的关键元素
目标检测、场景识别、DCNN。
目标识别的传统方法经典方法利用概率图模型(CRF)对图片进行分割,使用传统模式识别方法进行目标识别(SVM、随机森林等),这些传统方法应对海量数据和高精度的挑战都成问题,比如CRF模型对于大量数据训练极为困难、模式识别方法模型本身就受到VC维的约束。
场景识别的传统方法如前面所述,使用稀疏编码的方式对每一类场景进行稀疏编码,把图片场景识别拖入模式识别的范畴,使用传统模式识别的方法完成场景识别。
DCNN
对于检测-识别过程,传统方法的一般模式是,需要对图像进行特征提取,把图像从二维张量空间转化到N维向量空间,称为特征提取;再通过模式识别方法把N维向量空间压缩到0维空间的离散个点上。由此完成分类识别。
在此过程中,特征提取是一个专家知识极浓的经验过程,并在图像压缩转化过程中必然承受着压缩/特征提取损失。
CNN具有图像处理过程中张量压缩的天然结构。CNN结构直接把图像在二维张量空间中进行处理,不停的Conv和polling,使用数据来完成特征提取,更多的数据得出更可靠的特征(特征一词对于CNN没有实际意义,此过程并非形式化,且可以表示为任一步及几步的组合)。不停的Conv和polling,直至图像的X*X像素收敛为1*1,直接把图像从二维张量空间压缩到一维向量空间中的点(也可以称之为二维张量空间上的点,但没有了明确的维度限制)上。
此外,CNN的二维链接结构,可以使用权值共享和分层乘法来降低参数数量,以至于在添加更多的类别时避免造成参数的指数级增长(传统方法随类别的参数增长一般是指数级别或者亚指数级别的,至少是超多项式的)。
深度学习方法作为分类模型,发展已久,从AlexNet到GoogleNet,到Residual Network,不断取得更高的精度和处理更多的类别以及获得更快的速度。
深度学习作为检测模型,经典网络为R-CNN和Yolo-DarkNet,随后更新了多个版本,基于Region Proposal的网络为R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、R-FCN和Mask RCNN;基于Regression的有Yolo、SSD-Net、YoloV2、LocalNet等。
DCNN检测模型
基于Region Proposal的网络为R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、R-FCN和Mask RCNN;基于Regression的有Yolo、SSD-Net、YoloV2、LocalNet等。
参考文章:SPP-Net:CNNs添加一尺度不变特征-神经元层
参考文章:Going deeper with convolutions:卷积的更深一些
工程化问题
语义SLAM中大规模语义分析,通常方法也变为S端使用DCNN做服务器实现场景检测/闭环检测和C端Agent根据返还结果辅助实现三维位姿确定。
三维重建5:场景中语义分析/语义SLAM/DCNN-大尺度SLAM的更多相关文章
- TensorFlow中的语义分割套件
TensorFlow中的语义分割套件 描述 该存储库用作语义细分套件.目标是轻松实现,训练和测试新的语义细分模型!完成以下内容: 训练和测试方式 资料扩充 几种最先进的模型.轻松随插即用 能够使用任何 ...
- 三维重建:SFM中BA的并行化
1. BA在重建中的作用 借鉴于运动中重建的方法,BA引入SLAM过程,而传统的滤波方法引入BA是跟随闭环检测出现. 1.1 BA在滤波方法中的嵌入 PTAM 1.2 BA在闭环检测之后的应用 在三维 ...
- 第七章 人工智能,7.6 DNN在搜索场景中的应用(作者:仁重)
7.6 DNN在搜索场景中的应用 1. 背景 搜索排序的特征分大量的使用了LR,GBDT,SVM等模型及其变种.我们主要在特征工程,建模的场景,目标采样等方面做了很细致的工作.但这些模型的瓶颈也非常的 ...
- 三维场景中使用BillBoard技术
三维场景中对于渲染效果不是很精致的物体可以使用BillBoard技术实现,使用该技术需要将物体实时朝向摄像机,即计算billboard的旋转矩阵M. 首先根据摄像机位置cameraPos和billBo ...
- LoadRunner测试场景中添加负载生成器
如何在LoadRunner测试场景中添加负载生成器 本文对如何在LoadRunner的测试场景中添加负载生成器,如何使用负载生成器的方法,总结形成操作指导手册,以指导测试人员指导开展相关工作. 1.什 ...
- [python]在场景中理解装饰器
原来我也自己通过查资料,来学习python的装饰器,但是效果不好.因为没有接触过需要用到装饰器的场景,所以 一起的资料都只停留在纸面上,但是今天偶然看到了vimer的这篇文章:http://www.v ...
- SharpGL学习笔记(十二) 光源例子:解决光源场景中的常见问题
笔者学到光源这一节,遇到的问题就比较多了,收集了一些如下所述: (1) 导入的3ds模型,如果没有材质光照效果很奇怪.如下图 (2) 导入的3ds模型,有材质,灯光效果发暗,材质偏色,效果也很奇怪. ...
- Loadrunner:场景中添加负载生成器
场景中添加负载生成器: (1)远程机子(假设ip为192.168.134.23)开启负载生成器 开始菜单找到:LoadRunner Agent Process 开启后任务栏会显示如下图: (2)场景中 ...
- [Unity3D]Unity3D游戏开发之在3D场景中选择物体并显示轮廓效果
大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 在<仙剑奇侠传>.<古剑奇谭>等游戏中,常常须要玩家在一个3D场景中 ...
随机推荐
- 6.4.1 标准库 os、os.path 与 shutil 简介
os模块除了提供使用操作系统功能和访问文件系统的简便方法之外,还提供了大量文件与文件夹操作的方法,如下表所示. 方法 功能说明 access(path,mode) 按照 mode 指定的权限访问文件 ...
- H5 坑
document.addEventListener("touchmove",function(e){e.preventDefault();},false); 防止滑动时整屏页面移动 ...
- JavaSE 学习笔记之多态(七)
多 态:函数本身就具备多态性,某一种事物有不同的具体的体现. 体现:父类引用或者接口的引用指向了自己的子类对象.//Animal a = new Cat(); 多态的好处:提高了程序的扩展性. 多态的 ...
- sql server使用杂记(二)
存储过程CREATE PROCEDURE [dbo].[getprofitandloss]@agentNo varchar(10),@o0 varchar(30),@source varchar(30 ...
- sql server使用杂记
SqlServer导出数据库 navcat for sql server中打开连接,打开数据库,右键--数据传输,常规选项卡--模式选择dbo,目标选择连接(选择你新建的库)或者文件(导出你要的sql ...
- CF #EDU R1 E
最二的一次了~我开始以为是带有贪心的DP,谁知道想错了.后来才想明白,暴力二分+记忆化DP #include <iostream> #include <cstdio> #inc ...
- 【Git使用具体解释】Egit使用过程中遇到的问题及解决的方法
1. Git错误non-fast-forward后的冲突解决 问题(Non-fast-forward)的出现原因在于:git仓库中已经有一部分代码,所以它不同意你直接把你的代码覆盖上去.于是你有2 ...
- swift 拼图小游戏
依据这位朋友的拼图小游戏改编 http://tangchaolizi.blog.51cto.com/3126463/1571616 改编主要地方是: 原本着我仁兄的代码时支持拖动小图块来移动的,我參照 ...
- Qt graphic item日记
今天在用用graphic view 加入graphic item的时候要引入一个context menu,自然就要对context menu上的action进行slot处理.可是graphic ite ...
- springboot + rabbitmq 整合示例
几个概念说明:Broker:简单来说就是消息队列服务器实体.Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列.Queue:消息队列载体,每个消息都会被投入到一个或多个队列.Bindi ...