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相机定位的更多相关文章

  1. Slam(即时定位与地图构建) 知识篇

    Slam即时定位与地图构建 技术解释 同步定位与地图构建(SLAM或Simultaneous localization and mapping)是一种概念:希望机器人从未知环境的未知地点出发,在运动过 ...

  2. 从零开始一起学习SLAM | 相机成像模型

    上一篇文章<从零开始一起学习SLAM | 为啥需要李群与李代数?>以小白和师兄的对话展开,受到了很多读者的好评.本文继续采用对话的方式来学习一下相机成像模型,这个是SLAM中极其重要的内容 ...

  3. 即时定位与地图构建SLAM(Simultaneous Localization and Mapping)

    SLAM 即时定位与地图构建SLAM(Simultaneous Localization and Mapping) 参考链接: 视觉SLAM漫谈,http://www.cnblogs.com/gaox ...

  4. 深度学习结合SLAM研究总结

    博客转载自:https://blog.csdn.net/u010821666/article/details/78793225 原文标题:深度学习结合SLAM的研究思路/成果整理之 1. 深度学习跟S ...

  5. 最近一年语义SLAM有哪些代表性工作?

    点击"计算机视觉life"关注,置顶更快接收消息! 本文由作者刘骁授权发布,转载请联系原作者,个人主页http://www.liuxiao.org 目前 Semantic SLAM ...

  6. 如何从零开始系统化学习视觉SLAM?

    由于显示格式问题,建议阅读原文:如何从零开始系统化学习视觉SLAM? 什么是SLAM? SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻 ...

  7. SLAM领域牛人、牛实验室、牛研究成果梳理

    点击公众号"计算机视觉life"关注,置顶星标更快接收消息! 本文阅读时间约5分钟 对于小白来说,初入一个领域时最应该了解的当然是这个领域的研究现状啦.只有知道这个领域大家现在正在 ...

  8. 从零开始一起学习SLAM | 给点云加个滤网

    对VSLAM和三维重建感兴趣的在计算机视觉life"公众号菜单栏回复"三维视觉"进交流群. 小白:师兄,上次你讲了点云拼接后,我回去费了不少时间研究,终于得到了和你给的参 ...

  9. 从零开始一起学习SLAM | SLAM有什么用?

    SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻译为:同时定位与建图.同时定位与地图构建. 「同时定位与地图构建」这几个词,乍一听起来非 ...

随机推荐

  1. POJ2983 查分约束系统

    题意:        给你n个点,然后给你两种情况,P a b c,表明a在b的北边c那么远,V a b 表明a在b的北边(距离最少是1),问你这些条件是否冲突. 思路:       一开始想用带权并 ...

  2. 安全之路 —— 无DLL文件实现远程进程注入

    简介 在之前的章节中,笔者曾介绍过有关于远程线程注入的知识,将后门.dll文件注入explorer.exe中实现绕过防火墙反弹后门.但一个.exe文件总要在注入时捎上一个.dll文件着实是怪麻烦的,那 ...

  3. hdu4845 状态压缩BFS

    题意:      给一个n*m的矩阵,从11,走到nm,格子和格子之间可能有墙,也可能有门,有的格子上面有钥匙,相应的钥匙开相应的们,捡钥匙和开门都不需要时间,问你最少多少部能走到nm. 思路:   ...

  4. C#-FTP

    /// <summary> /// 上传文件 /// </summary> /// <param name="fileinfo">需要上传的文件 ...

  5. <JVM下篇:性能监控与调优篇>04-JVM运行时参数

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  6. 使用docker-compose.yml快速搭建Linux/Mac开发/生产环境

    传送门 点击进入Github,https://github.com/ovim/dockerfiles 简单介绍 Dockerfiles 搭建基础公用环境包,方便使用,支持业务不断的提升而需要一些软件的 ...

  7. 21.Quick QML-FileDialog、FolderDialog对话框

    1.FileDialog介绍 Qt Quick中的FileDialog文件对话框支持的平台有: 笔者使用的是Qt 5.8以上的版本,模块是import Qt.labs.platform 1.1. 它的 ...

  8. ACM、考研、就业,在我心底已经有了明确的答案_人生没有完整的,只有无悔的

    思绪再三,还是决定放弃了ACM,走上考研路(我现在是大二下学期,马上结束).虽然我们ACM的带队老师经常说:"ACM和考研是不冲突的",但是我感觉做ACM和考研的关系不是很紧密,而 ...

  9. 数据库调优(二)Inner Join Merge Join Hash Match

    T-SQL 的编码习惯以及规范,影响的是查询优化器对执行计划的选择 健壮的SQL语句,更稳定.更高效 SELECT 几个部分: - 查询的数据来自什么表 - 需要查询表中哪些字段 (尽量不使用类似于 ...

  10. Django(33)Django操作cookie

    前言 cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了解决这个问题,第一次登录 ...