点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

作者丨paopaoslam

来源丨泡泡机器人SLAM

标题:DROID-SLAM: Deep Visual SLAM for Monocular Stereo, and RGB-D Cameras

作者:Zachary Teed, Jis Deng

来源:arXiv 2021

编译:方川 阮建源

审核:张海晗

大家好,今天给大家带来的Princeton VL的SLAM工作: DROID-SLAM: Deep Visual SLAM for Monocular Stereo, and RGB-D Cameras. 这篇工作把Visual-SLAM问题使用深度神经网络直接端到端地实现了,并且取得了比以往传统SLAM方案更高的精度和鲁棒性。

摘要

本文提出了DROID-SLAM, 一个全新的基于深度学习的SLAM系统. DROID-SLAM通过一个深度BA层来循环迭代的更新相机位姿和像素深度值. 实验证明, DROID-SLAM比传统SLAM取得了更高的精度和鲁棒性, 在实验场景中几乎不会失败. 尽管我们只在单目视频上训练了我们的网络, 但是在测试阶段,这个网络仍然可以在双目和RGB-D视频上取得很好的表现.代码开源在https://github.com/princeton-vl/DROID-SLAM.

主要贡献

1, High Accuracy: 在TartanAir、ETH-3D、EuRoc、TUM-RGBD数据集上处于领先地位, 并且极大地超越原先方法;

2, High Robustness: 非常稳定的跟踪能力, 除了ETH-3D, 其他数据集上没有出现fail情况;

3, Strong Generalization: 虽然本文只使用单目视频训练, 但是在测试阶段直接使用双目视频和RGB-D作为输入, 仍然得到了很好的预测结果;

图,DROID-SLAM可以在单目、立体和RGB-D相机上运行。它构建了一个环境的稠密3D地图,同时在地图中定位相机。

算法流程

1. Notation

算法的输入是一个视频或者图像序列I_t {t=0~N}每一张图像, 算法的目标是求解相机位姿 G_t和 逆深度d_t.  相机位姿序列 G_t {t=0~N}和逆深度序列d_t {t=0~N}是未知的的系统状态变量, 在输入的图像序列中迭代的更新最终收敛. 同时, 本文设计了一个frame-graph (V, E)结构表示图像之间的共视关系, 边(i,j) 表示 I_i 和 I_j之间存在共视关系. frame-graph随着位姿和深度的更新也会动态更新, 对于回环检测, 我们在frame-graph中添加长的回环边.

2.特征提取和关联

特征提取和关联这一部分与RAFT中的特征网络和相关信息张量correlation volume 完全一致.

特征提取网络: feature network由6个残差模块和3个下采样层组成, 生成输入图像1/8分辨率的feature map; context network提取图像全局信息, 作为下文更新算子的一个输入;

Correlation Pyramid: 对于frame-graph中的每条边(i,j), 本文使用点积计算一个4D的correlation volume:

Correlation Lookup: 根据像素坐标和查找半径r, 查找算子L_r会在不同分辨率的correlation volume上查找对应的相关信息张量,最后将他们拼接为一个feature vector;

3.更新算子

更新模块是本文网络的核心模块, 整体结构如下图所示:

图2:更新操作的说明。算子作用于框架图中的边,预测流修正通过(DBA)层映射到深度和姿态更新。

C_ij是图像I_i与I_j之间的相关信息张量,h_ij是隐藏状态. 每轮更新之后,  h_ij会被更新, 并且输出位姿变化和深度变化d^k, 然后更新下一帧的位姿和深度:

Correspondece: 在每次更新之前, 根据当前的pose和depth, 对于图像I_i中的每个网格, 网格中的像素坐标集合p_i , 那么它在图像 I_j上的对应网格像素集合p_ij可以表示为:

Input: 根据上一步计算得到的grid correspondence, 查找两张图像的相关信息feature map C_ij;同时可以根据p_i和p_ij计算两张图像之间的光流场flow fileds. C_ij表征的是两张图像之间的视觉一致程度, 更新模块的目标是计算相对位姿来对齐两张图像使之一致性最大化. 但是因为视觉一致性会存在奇异, 因此我们同时利用光流场来提供位姿估计的鲁棒性.

Update:与RAFT网络一样, correlation features 和 flow features经过两层卷积之后, 与context feature一同送入GRU模块. 在GRU模块中, 本文对隐藏状态h_ij作average pooling来提取global context, global context对于提高剧烈运动物体的光流估计鲁棒性有帮助.

GRU模块同时更新隐藏状态得到 h^(k+1), 我们利用这个隐藏状态张量得到光流场的变化量 r_ij和对应的置信度 w_ij, 则修正后的网格p*_ij =  r_ij + p_ij. 再利用h^(k+1)得到pixel-wise的阻尼系数矩阵和 用于深度估计过程中的8x8的上采样mask;

Dense Bundle Adjustment Layer:首先, DBA层将更新模块输出的稠密光流场变化量转换为相机位姿和稠密深度值: 这里的相机位姿可以使用传统方法计算得到, 深度值则是根据下面的目标函数和舒尔补公式, 迭代优化的方式得到的.

这里仍然是使用Guass-Newton法计算位姿和深度的变化量, 利用舒尔补先计算位姿变化量d xi, 再计算深度变化量

v, w分别代表相机位姿和深度的梯度方向.

DBA 层的实现和反向传播是基于LieTorch的, 是一个李群李代数的pytorch实现的package.

4,训练过程

单目尺度问题: 为了解决单目SLAM尺度问题, 我们把前两帧图像位姿固定为ground truth.

采样视频/图像序列: 为了是我们的网络泛化能力更好, 我们通过计算图像序列中任意两张图像之间的光流场距离, 对这样的N_i * N_i flow distance matrix进行采样,得到采样后的心得图像序列形成的视频来输入网络进行训练.

监督和loss: 监督信息是ground truth pose和ground truth flow. 光流程loss是 网络预测的flow fileds与ground truth flow fileds的L_2 loss. 图像位姿loss则是

5, SLAM system

和以前的SLAM系统一样, 本文方法实现的SLAM系统也包括前端和后端两个线程. 前端线程提取特征、选取关键帧、局部优化. 后端线程对所有关键帧进行全局优化.

初始化:  选择视频中前部的12帧图像来完成初始化, 相邻两帧图像之间的光流必须大雨16px, 12帧图像集齐后, 我们建立起一个frame-graph, 并且运行10次更新算子的迭代.

视觉前端: 前端部分选取并维护着关键帧序列. 新的图像到来时, 进行特征提取、计算光流场, 并根据光流场计算3个与之共视程度最大的关键帧, 然后根据共视关系来迭代更新当前关键帧的pose和depth. 同时, 前端部分也负责边缘化操作.

后端优化: 后端部分将所有关键帧进行BA优化. 每次进行更新迭代时,都会对所有关键帧重新构建frame-graph, 这是根据所有关键帧之间的光流场距离矩阵N * N来构建的. 接着在frame-graph上运行更新算子, 在BA缓解我们使用的是LieTorch. 后端网络只在关键帧上运行BA优化, 对于视频中的普通帧, 只优化相机pose.

Stereo and RGB-D:为了使我们设计的这个SLAM系统能够很好的应用到双目和RGB-D的场景中, 我们会在Stereo和RGB-D的情景中对公式(4)做一些修改. 比如在RGB-D场景中, 公式4添加一个残差项: 估计的depth map与测量的depth map之间的距离平方和. 在Stereo场景中, 公式4改为左右两个相机的位姿重投影误差.

图3,DROID-SLAM可以推广到新的数据集。因此,我们展示了Tanks&Temples [21], ScanNet [10], Sintel [3], ETH-3D [42];全部使用单目相机。

主要结果

本文提出的方法在多个数据集上进行了充分的实验, 并且和其他深度学习方法以及经典的SLAM算法做了比较. 实验部分着重比较了相机轨迹的绝对轨迹误差ATE.

本文中的网络在合成的数据集TartanAir上面训练了250k次, 图像分辨率为384x512, 在4块 RTX-3090上训练了1周时间.

表1:TartanAir单目基准测试的结果。

表2:TartanAir双目基准测试的结果。

表3:TartanAir测试集的结果,与ECCV 2020 SLAM竞赛的前3名SLAM相比。使用归一化相对姿态误差计算所有可能的分数

长度为f5的序列;10;15...40g米,详见比赛页面。

在EuRoc和TUM-RGB-D数据集上也做了充分的实验, 实验正面,本文网络可以很好的泛化到Stereo和RGB-D上,同时取得很高的精度和鲁棒性.

表4:基于EuRoC数据集的单目SLAM, ATE[m]。+表示视觉里程计方法。

表5:基于EuRoC数据集的双目SLAM, ATE[m]。

表6:TUM-RGBD基准上的ATE。所有方法都使用单目视频,除了DeepTA 使用RGB-D和TartanVO使用地面真实来缩放相对姿态。

图4:RGB-D ETH3D-SLAM基准的总体结果。(左)我们的方法, 它只在合成的TartanAir数据集上训练,在训练和测试分割中都排名第一。(右)将成功轨迹数作为ATE的函数绘制出来。我们的方法成功跟踪30/32的图像数据可用的数据集。

图5:关键帧图像的可视化、深度、光流和置信度估计。

图6:(左)我们展示了不同输入(单目和双目)的系统性能以及是否在局部BA之外执行全局优化(局部vs.完全)。(右)跟踪精度和关键帧数量的关系。我们在实验中使用了5个关键帧(粗体)。

图7:(左)更新操作对全局上下文的影响。(右)使用BA的影响在训练时使用BA层vs直接在管流上训练,然后在测试时使用BA

Abstract 

We introduce DROID-SLAM, a new deep learning based SLAM system. DROIDSLAM consists of recurrent iterative updates of camera pose and pixelwise depththrough a Dense Bundle Adjustment layer. DROID-SLAM is accurate, achievinglarge improvements over prior work, and robust, suffering from substantially fewercatastrophic failures. Despite training on monocular video, it can leverage stereoor RGB-D video to achieve improved performance at test time. The URL to ouropen source code is https://github.com/princeton-vl/DROID-SLAM.

点击阅读原文,即可获取本文下载链接。提取码:n575

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

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

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

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

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

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

▲长按加微信群或投稿

▲长按关注公众号

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

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

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

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

DROID-SLAM: 单目、双目、RGBD相机的深度视觉SLAM相关推荐

  1. DROID-SLAM: 用于单目双目RGBD相机的深度视觉SLAM

    作者丨Clark@知乎 来源丨https://zhuanlan.zhihu.com/p/479534098 编辑丨3D视觉工坊 论文信息 @article{teed2021droid,title={D ...

  2. ORB-SLAM2 特征点法SLAM 单目 双目 rgbd相机SLAM 单应/本质矩阵恢复运动 小图大图地图优化

    ORB-SLAM2 ORB特征点法SLAM 支持单目.双目.rgbd相机 安装测试 本文github链接 orbslam2 + imu ORB-SLAM是一个基于特征点的实时单目SLAM系统,在大规模 ...

  3. 使用自己的INDEMIND相机来运行ORBSLAM2单目,双目和深度模式(小觅相机和realsense通用)

    流程一览 配置ROS ROS环境准备(以16.04 ROS Kinetic为例) 创建自己的工作空间: 配置ORBSLAM 编译ORBSLAM2 ROS 常见错误及解决 运行build-ros.sh时 ...

  4. 基于工业互联网的RV1126+AI安防单目/双目高清视觉分析计数仪方案

    1产品简介 产品介绍 单目视觉分析计数器是信迈科技基于单目图像分析以及深度学习算法研发的一款区域统计计数器.它可以精确的识别监控区域内的物体,统计区域内停驻的人数/车辆等,也可以统计区域内进入以及离开 ...

  5. 论文笔记-ORB-SLAM2-双目与rgbd相机跟单目情况的区别

    ORB-SLAM2的最大贡献就是把原来的系统扩展到了双目,rgbd上,这一篇也主要讲的是怎么使用双目或者深度相机的信息,以及他们和单目的区别. I.INTRODUCTION Place Recogni ...

  6. 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)

    相机标定可以说是计算机视觉方向的基石.我们常见的许多计算机视觉任务,比如图像畸变校正,三维重建和立体视觉,获取相机参数,是这些工作绕不开的第一步.如何准确有效的获取相机参数就变得尤为重要,相机参数的准 ...

  7. matlab鱼眼镜头,普通镜头,单目双目相机标定校正(四)

    写这篇文章的目的,是记录相机标定过程和问题,经过试验,记录问题 1.单目相机与双目相机的标定.区别.目的 2.相机拍照时,距离标定板的距离 3.填写参数时.黑白格的大小有影响? 4.参数的设置 5.拍 ...

  8. 关于web结合单目以及RGBD图像重建的设计(一)

    首先是架构的问题,我使用了本机电脑,虚拟机外加一台主机的架构,其中本机电脑使用了react+material UI作为单页面应用框架,使用three.js重现点云.本机电脑通过虚拟机接口转发与虚拟机沟 ...

  9. slam 单目稠密深度详解

    单目计算深度比较复杂,一般可以用RGB-D相机直接得到深度,但还是练习一下. 因为是稠密重建,对每个像素都算深度,所以就不是提取特征了. 仅凭一幅图像无法估计出深度,要用不同视角下的图像来估计. 特征 ...

最新文章

  1. 从一个数组中寻找出现奇数次的数字
  2. Asp.net Mvc Post ID Bug
  3. Linux环境下如何编译和执行c程序
  4. 电路基础知识 -- 三态
  5. SQLite学习手册(内置函数)
  6. 写单元测试的好处(转)
  7. antd 怎么用ajax,react+dva+antd接口调用方式
  8. python3.6,--登录知乎
  9. 多维数组的索引与切片_SystemVerilog的那些数组
  10. ajax是什么实现的步骤,AJAX使用步骤及实现过程
  11. java -jar命令
  12. 百度文库免费复制文字_我们有2种通过鼠标右键复制百度文库的方法要告诉你...
  13. 系统架构设计师考试学习目录
  14. html5 fa图标库,轻松学会在项目中使用fontawesome字体图标
  15. Facebook登陆时遇到的问题
  16. 【Unity2D好项目分享】提高游戏人物打击感
  17. 文字转语音合成器哪个好?这些文字转语音软件值得收藏
  18. 搭建网站的主要目的、基本步骤和技巧
  19. acwing.回文质数
  20. 西安交通大学计算机博士名单,2017年西安交通大学博士生拟录取名单公示

热门文章

  1. WinRAR 无法关联zip、rar等文件
  2. 利用ArcGIS做一张“三调“土地利用现状图(附三调符号库下载)
  3. VUE es6转es5
  4. 论信息系统项目的整体管理
  5. 攻击者和受害者:剖析网络攻击敲诈勒索的四大类型!
  6. rstudio安装后如何打开_【R教程】R与RStudio简介及安装
  7. 2022年信息安全工程师考试知识点:嵌入式系统安全
  8. JAVA教程(二)之面向对象前基础知识
  9. 最近工作生活总结——环环相扣
  10. CVBS两种电路-记录