SLAM相机定位
SLAM相机定位
摘要
深度学习在相机定位方面取得了很好的结果,但是当前的单幅图像定位技术通常会缺乏鲁棒性,从而导致较大的离群值。在某种程度上,这已通过序列的(多图像)或几何约束方法解决,这些方法可以学习拒绝动态对象和光照条件以获得更好的性能。在这项工作中,我们显示出注意力可以用来迫使网络专注于几何上更鲁棒的对象和特征,即使仅使用单个图像作为输入,也可以在通用基准中实现最新的性能。通过公共室内和室外数据集提供了广泛的实验证据。通过显著性图的可视化,我们展示了网络如何学习拒绝动态对象,从而产生好的全局相机位姿回归性能。
源代码开源:https://github.com/BingCS/AtLoc。

这项工作的主要贡献如下:
•我们提出了一种新的用于单图像摄像机定位的自注意引导神经网络,允许精确和稳健的摄像机姿态估计。
•通过在注意之后可视化特征显著性图,我们展示了我们的注意机制如何鼓励框架学习稳定的特征。
•通过在室内和室外场景中的大量实验,我们证明我们的模型在姿势回归中达到了最佳状态,甚至优于多帧(顺序)方法。


算法流程

图7,提出的AtLoc框架的概述,该框架包括视觉编码器(从单个图像中提取特征),注意力模块(计算注意力并重新加权特征)和位姿回归器(将新特征映射到相机位姿)
1. 视觉编码器
视觉编码器用于从单幅图像中提取位姿回归任务所需的特征。我们采用34层的残差网络(ResNet34)作为视觉编码器的基网络。ResNet34的权重是使用ResNet34经过ImageNet数据集上的图像分类预训练预先初始化的。为了鼓励学习有利于位姿回归的特征,用C维全连接层替换ResNet34最后的1000维全连接层并删除用于分类的Softmax层。C是输出特征的维度,考虑到模型的效率和性能,选择维数为C = 2048。给定输入图像I, 通过视觉编码器f encoder提取特征x:

2. 注意力模块
我们在注意力模块中采用了non-local风格的自注意力机制,该方法已应用于视频分析和图像生成。这旨在捕获图像特征的长期依赖性和全局相关性,这将有助于从广泛分离的空间区域中生成更好的,注意力引导的特征图。
首先利用视觉编码器提取的特征x,计算两个嵌入空间 θ(xi) and φ(xj)之间的点积相似度:




3. 学习相机位姿
位姿回归器通过多层感知机将注意力引导特征Att(x)分别映射到位置p∈R3和四元数q∈R4:

训练的损失函数:


4. 时序约束
我们通过合并图像对之间的时序约束,将我们提出的AtLoc扩展为AtLoc +。直观上,时序约束可以强制学习全局一致的特征,从而提高总体定位精度。考虑时序约束的损失为:

其中Iij = (pi− pj, qi−qj)
主要结果

图8, 7 Scenes上的相机定位结果(不包括时序约束)。对于每个场景,我们计算了各种基于单帧图像的方法估计的位置和旋转的中值误差。

图9,7 Scenes上的相机定位结果(包括时序约束)。对于每个场景,我们比较了 VidLoc, MapNet 和我们的方法估计的位置和旋转的中值误差。

图10,OxfordRobotCar数据集的LOOP序列和FULL序列上的相机定位结果。对于每个场景,我们计算了 Posenet+, MapNet 和我们的方法估计的位置和旋转的中值误差。Posenet和AtLoc利用单个图像,而MapNet和AtLoc +利用图像序列。

图11,从Chess序列中选择的两个场景的显著性图。

图12,Oxford RobotCar的LOOP1(上),LOOP2(中)和FULL1(下)的轨迹。真实轨迹用黑线表示,红线表示预测轨迹。轨迹中的星号代表起点。
SLAM相机定位的更多相关文章
- Slam(即时定位与地图构建) 知识篇
Slam即时定位与地图构建 技术解释 同步定位与地图构建(SLAM或Simultaneous localization and mapping)是一种概念:希望机器人从未知环境的未知地点出发,在运动过 ...
- 从零开始一起学习SLAM | 相机成像模型
上一篇文章<从零开始一起学习SLAM | 为啥需要李群与李代数?>以小白和师兄的对话展开,受到了很多读者的好评.本文继续采用对话的方式来学习一下相机成像模型,这个是SLAM中极其重要的内容 ...
- 即时定位与地图构建SLAM(Simultaneous Localization and Mapping)
SLAM 即时定位与地图构建SLAM(Simultaneous Localization and Mapping) 参考链接: 视觉SLAM漫谈,http://www.cnblogs.com/gaox ...
- 深度学习结合SLAM研究总结
博客转载自:https://blog.csdn.net/u010821666/article/details/78793225 原文标题:深度学习结合SLAM的研究思路/成果整理之 1. 深度学习跟S ...
- 最近一年语义SLAM有哪些代表性工作?
点击"计算机视觉life"关注,置顶更快接收消息! 本文由作者刘骁授权发布,转载请联系原作者,个人主页http://www.liuxiao.org 目前 Semantic SLAM ...
- 如何从零开始系统化学习视觉SLAM?
由于显示格式问题,建议阅读原文:如何从零开始系统化学习视觉SLAM? 什么是SLAM? SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻 ...
- SLAM领域牛人、牛实验室、牛研究成果梳理
点击公众号"计算机视觉life"关注,置顶星标更快接收消息! 本文阅读时间约5分钟 对于小白来说,初入一个领域时最应该了解的当然是这个领域的研究现状啦.只有知道这个领域大家现在正在 ...
- 从零开始一起学习SLAM | 给点云加个滤网
对VSLAM和三维重建感兴趣的在计算机视觉life"公众号菜单栏回复"三维视觉"进交流群. 小白:师兄,上次你讲了点云拼接后,我回去费了不少时间研究,终于得到了和你给的参 ...
- 从零开始一起学习SLAM | SLAM有什么用?
SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻译为:同时定位与建图.同时定位与地图构建. 「同时定位与地图构建」这几个词,乍一听起来非 ...
随机推荐
- Django--虚拟环境、项目和应用的创建
第一点:官方手册 -- https://yiyibooks.cn/ 第二点:运行环境 -- django项目采用虚拟运行环境 之前我们pip install都是在Python的安装目录(底层)上安装的 ...
- Linux 基本防火墙设置和开放端口命令
关闭防火墙 CentOS 7.RedHat 7 之前的 Linux 发行版防火墙开启和关闭( iptables ): 即时生效,重启失效 #开启 service iptables start #关闭 ...
- OpenSSL相关漏洞
目录 心脏出血漏洞(CVE-2014-0160) OpenSSL CCS注入漏洞(CVE-2014-0224) OpenSSL FREAK Attack漏洞(CVE-2015-0204) TLS/SS ...
- Win64 驱动内核编程-24.64位驱动里内嵌汇编
64位驱动里内嵌汇编 讲道理64位驱动是不能直接内链汇编的,遇到这种问题,可以考虑直接把机器码拷贝到内存里,然后直接执行. 获得机器码的方式,可以写好代码之后,直接通过vs看反汇编,然后根据地址在看内 ...
- Asp.NetCore Web开发之模型验证
在开发中,验证表单数据是很重要的一环,如果对用户输入的数据不加限制,那么当错误的数据提交到后台后,轻则破坏数据的有效性,重则会导致服务器瘫痪,这是很致命的. 所以进行数据有效性验证是必要的,我们一般通 ...
- C#如何加载嵌入到资源的非托管dll
如何加载非托管Dll 我们总会遇到需要加载非Win32的非托管dll,这里推荐一种方式就是将那些非win32的非托管dll嵌入资源的方式,在入口解压并且加载的方式,我先来看看如何实现吧,首先我们准备好 ...
- Kafka万亿级消息实战
一.Kafka应用 本文主要总结当Kafka集群流量达到 万亿级记录/天或者十万亿级记录/天 甚至更高后,我们需要具备哪些能力才能保障集群高可用.高可靠.高性能.高吞吐.安全的运行. 这里总结内容主 ...
- OOP第二章博客
OO第二次博客作业 (1)作业分析 三次作业在处理多线程的协同配合时都是使用将同步放在自己写的"线程安全类"(经测试有些许漏洞_,但是不影响结果就是了): 我个人倾向于把wait( ...
- 基于pyqt5和openpyxl和Pyinstaller的青年大学习检查未学习人数的脚本
前几天接到团支书的一个需求,因为学校给的名单是青年大学习已学习的名单,然而要知道未学习的名单只能从所有团员中再排查一次,过程相当麻烦.团支书跟我抱怨后,刚好我也学过一些操作办公软件的基础.打包pyth ...
- [DB] 数据库的连接
概述 集合运算:交,差,并,笛卡尔积 关系运算:选择,投影,连接,除 集合运算是关系运算的基础,关系运算可以用SQL语句表达 连接(join):从两个关系(表)的笛卡儿积中选取属性(列)间满足一定条件 ...