您当前的位置: 首页 > 

CodeMapping:稀疏SLAM实时密集建图(帝国理工学院)

发布时间:2021-09-17 00:00:00 ,浏览量:1

作者丨黄浴@知乎

来源丨https://zhuanlan.zhihu.com/p/410825166

编辑丨3D视觉工坊

在2021.6接收于IEEE Robotics And Automation Letters的论文“CodeMapping: Real-Time Dense Mapping for Sparse SLAM using Compact Scene Representations“,arXiv在 2021.7.19上传,作者来自著名的伦敦帝国学院Andrew J. Davison组。

4e01a645e7c63a94ec7d5709e8654262.png

本文为稀疏视觉 SLAM 系统提出了一种利用紧凑场景表示的致密制图框架。当今稀疏视觉 SLAM 系统可以准确可靠地估计相机轨迹和地标(landmarks)位置。虽然这些稀疏地图对定位很有用,但它们不能用于其他如避障或场景理解等任务。

本文的框架将 SLAM 系统产生的相机姿势、关键帧和稀疏点作为输入,并为每个关键帧预测致密深度图像。基于作者之前的工作CodeSLAM (““CodeSLAM — learning a compact, optimisable representation for dense visual SLAM”,CVPR'18),加入变分自动编码器 (VAE),以灰度、稀疏深度和来自稀疏 SLAM 的重投影误差图像为条件,预测不确定性-觉察的致密深度图。然后,VAE 使得多视图优化改进致密深度图像,提高了重叠帧的一致性。制图模块以松散耦合的方式与 SLAM 系统并行地单线程运行。这种设计可与任意量度的稀疏 SLAM 系统集成,不会延迟SLAM主过程。致密制图模块不仅可以用于局部制图,还可以通过 TSDF 融合进行全局一致的致密3D 重建,在实验中以ORB-SLAM3为例。

注:和本文思想相似的是CodeVIO(“CodeVIO: Visual-inertial odometry with learned optimizable dense depth,” arXiv:2012.10133, 2020),也是基于类似CodeSLAM VAE方法。

如图是系统概览图:致密制图模块订阅BA得到的稀疏点集和相机姿态,在单线程中运行致密预测和多视图优化。

68458d1c90e5a3e913e237f43eed9be1.png

该系统启动一个 SLAM 进程(跟踪、本地和全局地图线程)和一个连续并行运行的致密地图进程,直到输入的数据流停止。这项工作用 ORB-SLAM3 作为稀疏 SLAM 系统,支持多模态传感器输入,显示出最佳的性能。

SLAM进程

跟踪:使用传感器信息来估计相机相对于现有地图的姿态。在ORB-SLAM3 运行pose-only BA,最大限度地减少当前图像和地图之间匹配特征的重投影误差;这个过程实时地在每个输入帧完成,并且判断当前帧是否关键帧。

地图:运行BA做姿态和几何细化。ORB-SLAM3 为此运行局部和全局BA;局部BA仅用少量关键帧进行优化,而全局BA用整个图(graph)。每次局部BA后,SLAM 线程将数据从四个关键帧的窗口传输到致密制图(Dense Mapping)线程;四个关键帧包括最新的关键帧和基于 ORB-SLAM3 的共见性(covisibility)标准挑选的前三个共见(covisible)关键帧。关键帧数据由各自的相机姿态、稀疏深度和重投影误差图像组成;每个稀疏深度图通过关键帧的投影 3D 地标(landmarks)获得,重投影误差图的计算通过每个 3D 地标投影到所有可观测帧的相应匹配ORB特征位置得到的平均距离。与其他帧无匹配的新校准(registered)关键点,其重投影误差初始化为一个很大值 (比如10)。

致密制图进程

稀疏-致密预测:致密制图线程接收到来自 SLAM 线程的关键帧数据,检查该关键帧数据是否已经处理过;如果不,用稀疏深度和重投影误差输入图像运行深度补全(depth completion)VAE,预测初始密集深度图。深度补全 VAE 为预测的致密深度图生成低维潜码,用于之后的多视图优化。

多视图优化:初始预测之后,深度图通过SLAM 系统提供的相机姿态的滑动窗多视图优化进行细化(如下图所示);继续作者之前的工作DeepFactors (“DeepFactors: Real-time probabilistic dense monocular SLAM,” IEEE Robotics and Automation Letters, 2020)提出的基于因子图(factor graph)优化,考虑了重叠帧之间不同类型的因子(Photometric Factor、Reprojection Factor和Sparse Geometric Factor);其中仅优化每帧代码,而不优化相机姿态,因为假设来自稀疏 SLAM 的姿态已经足够准确,并且逐像素致密对齐(dense alignment)不太可能进一步提高准确性。

86719ab56d8e328633d46b875352000a.png

(左:稀疏SLAM点,中:初始深度补全,右:5-视角的优化)

如图说网络架构图:是DeepFactors的CVAE继续扩展结果。

0b3b0be05cc124016cb7d450ecb0e2b7.png

顶网络是一个 U-Net,将灰度图像与稀疏深度和稀疏 SLAM 系统的重投影误差图连接起来作为输入。与 CodeSLAM 和 DeepFactors 类似,深度和重投影误差值用邻近参数化(proximity parametrization)归一化到范围 [0, 1]。该网络通过多个卷积层计算特征,并输出深度不确定性(depth uncertainty )预测。

如下图给出的深度预测,没有考虑重投影误差的条件:红点由稀疏 SLAM 生成,网络完成致密几何重建。蓝色圆圈部分,突出显示的是预测受到的严重SLAM 点异常值影响。

备注:感谢微信公众号「 3D视觉工坊」整理。 fd6bb573a4277225c248315f94dea76c.png

与内点相比,出格点往往具有更高的平均重投影误差值。因此,在 U-Net 输入包含稀疏重投影误差图,为网络提供每点的不确定性。底网络是由一个取决于分解特征的 VAE。这个网络生成潜码、致密深度预测和不确定性图 (uncertainty map)。该网络的损失函数由深度重建损失和KL散度损失组成。

深度重建损失定义为:

51b5c23dd07c028563bec86562dc940f.png

遵循其训练/测试数据拆分,使用ScanNet 数据集大概0.4M图像。ScanNet 包含 Kinect 相机拍摄的各种室内 RGBD 图像。为生成稀疏深度输入,在彩色图像做ORB 关键点检测,并从每个 Kinect 深度图选择 1000 个关键点。VAE 的输入是原始 Kinect 深度图像,在当前姿态渲染给定 3D 场景模型获得深度图,作为损失函数的真值深度。

要生成重投影误差图不太简单,处理时间长,在整个 ScanNet 数据集运行 SLAM 系统不可行。相反,文章提出一种在训练期间模拟重投影错误的方法。ORB-SLAM3 的重投影误差分布在不同序列之间相似,并且非常类似于指数高斯分布(如图所示)。添加噪声给稀疏深度图,这样产生的重投影误差遵循此分布,可准确模拟 ORB-SLAM3 的属性。

a3d224e9e165f3ef87170decbdb59c9e.png

数据集创建步骤见如下图所示。

08fa2b3c58458a578f69dc495de0370e.png

首先,对数据集的每一帧(“参考帧”),随机选择一个距离参考(“虚拟关键帧”) 2 米以内的相邻帧。然后,将参考帧的点反投影到 3D ,并计算每个 3D 点到虚拟关键帧相机中心的线。对每个点,从指数高斯分布采样一个重投影误差。依此沿着这个线扰动一个点的位置,这样扰动点的 2D 投影和参考帧原始点2D 位置之间的距离,与这个采样的重投影误差值相匹配。此过程应用于所有稀疏深度测量,用扰动的稀疏深度图和重投影误差作为 U-Net 的输入。实验中以 0.0001 的学习率、256 × 192 的图像大小、32 的码大小和Adam 优化器,对网络进行 10 epochs的训练。

如图是多视图优化的因子图:

c96013766ade7b6320cd94055680aeee.png

其中Photometric Factor定义为

93992fa239449b021e6c1f41efa03a05.png

而Reprojection Factor定义为

3cc567293d1da8923774af54b570be15.png

最后,Sparse Geometric Factor定义为

911b5dd4ccdb74b0b20f80c85c35998a.png

一些实验结果如下:

aaf010c307951380ebf43e1fc149504b.png 98d79b51de02da9cfc6e394f9772138f.png 8e3b8a4bbdcb6bcb0a00a8de9abcdd9c.png e7b7dca45b06f496eddcd3dd0b6c45a4.png 764ad7dada6ba28c7ac42215840e535f.png

今后工作,会在致密制图模块中考虑语义分割和实例分割。

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「3D视觉工坊」公众号后台回复:3D视觉,即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2

在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总,即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

下载3

在「3D视觉工坊」公众号后台回复:相机标定,即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配,即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

817b0d4f99bf5e5958c0322f6bdddfa9.png

▲长按加微信群或投稿

37be5ce81600c9368466e3a70e8c04ba.png

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列、手眼标定、相机标定、orb-slam3知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

2e5539256ce18470a58e4d62a604279e.png

 圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

关注
打赏
1688896170
查看更多评论

暂无认证

  • 1浏览

    0关注

    108264博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.2533s