点击下方卡片,关注“3D视觉之心”公众号
第一时间获取3D视觉干货
>>点击进入→3D视觉之心【SLAM】技术交流群
写在前面
传统视觉 SLAM 建立的稀疏点云地图无法满足机器人进一步的感知需求,所以研究热点来到了基于深度学习的稠密场景重建。如今,随着神经辐射场(NeRF)的提出,许多工作都集中在将隐式场景表示与 SLAM 系统相结合。虽然提升了重建精度,但实时增量 NeRF-SLAM 依然面临2个关键挑战:
场景表示能力不足:现有方法采用固定容量的全局模型,限制了对更大场景和更长视频序列的可扩展性。
误差积累和姿态漂移:由于误差累积,现有方法在大规模室内场景中面临精度和稳健性方面的挑战。
![517c7a63286fa8e65f7f26797a495f91.png](https://img-blog.csdnimg.cn/img_convert/517c7a63286fa8e65f7f26797a495f91.png)
本文提出了一种渐进式场景表示方法,当摄像头移动到局部场景表示的边界时,动态初始化新的场景表示。整个场景被分成多个局部场景表示,误差估计被局部限定,这使得系统能够扩展到大型室内场景和长视频,并显著增强了其稳健性。针对上述2个挑战,本文的贡献为:
在局部场景表示中,设计了一种联合三面体和多层感知器的场景表示方法,用于精确、平滑地重建表面。这不仅增强了场景表示能力,还大幅减少了从立方体到平方的内存增长。
将传统 SLAM 系统与端到端姿态估计网络集成在一起。我们提出了一种局部到全局的BA(bundle adjustment)算法,可以减轻大规模室内场景中的累积误差。系统通过系统操作管理局部和全局关键帧数据库,实现从局部到全局的 BA。
论文链接:https://arxiv.org/pdf/2312.09866.pdf
方法
本文系统的流程如图 2 所示。使用一组连续的 RGB 图、深度图、相机内参作为输入。模型预测相机姿态 、颜色 和隐式截断符号距离 (TSDF) 表示 ,可用于行进立方体算法来提取 3D 网格。对于隐式建图线程,设计了渐进式场景表示方法来表示大规模室内环境。在局部辐射场中,我们改进了场景表示方法,并通过我们设计的架构将三平面与多层感知器(MLP)相结合。对于相机跟踪线程,设计了一种局部到全局的 BA 方法,以实现稳健且准确的位姿估计。网络随着系统运行而增量更新。
![7dceb2a137a6fa8f30c95beb457ef579.png](https://img-blog.csdnimg.cn/img_convert/7dceb2a137a6fa8f30c95beb457ef579.png)
渐进式场景表示
所有现有基于 NeRF 的 SLAM 系统使用单一的全局表示整个环境,3个关键因素限制了它们的场景表示能力:
单一、固定容量模型无法表示任意长度的视频。
单一场景表示容易过拟合序列中的早期数据,导致在学习后续数据时表现不佳。
任何错误估计(如异常姿态)都会对整体产生影响,可能导致错误的重构。
由于本文系统中的相机姿势与映射线程是同时进行优化,对辐射场进行了空间预分区并不合适。每当估计的相机姿态轨迹离开当前场景表示的空间时,本方法会动态分配新的局部场景表示,其训练对象是一小组帧,随后逐渐引入后续的局部帧进行优化。整个场景可以被表示为多个局部场景表示:
![1c6178e236ef97f5dfa1ffe0dd099f6f.png](https://img-blog.csdnimg.cn/img_convert/1c6178e236ef97f5dfa1ffe0dd099f6f.png)
每个局部场景表示都以最后估计的相机姿态位置为中心,使用局部帧的子集监督每个场景表示,每个子集包含一些重叠帧,这对于在局部场景表示中实现一致的重建非常重要。每当估计的相机姿态离开当前场景表示的边界时,我们停止优化之前的表示(冻结网络参数)。此时通过移除不必要的监督帧来减少内存需求。我们还停止在跟踪线程中更新地图参数,以减少误差。如果估计的相机姿态超出了当前边界,但在之前的局部场景表示范围内,我们激活之前的表示并继续优化过程。我们通过逆距离加权(IDW)融合所有重叠场景表示来进一步增强全局一致性。
本文的局部场景表示设计了一个三平面架构,结合了多层感知器(MLP)。我们在垂直轴对齐平面上存储和优化高频特征(例如纹理)。MLP 用于编码和存储低频特征,以实现连贯性和平滑度先验。这种联合场景表示架构实现了高保真度和平滑度的场景重构,并具有填补空洞的能力。
三特征平面分为两个尺度,即粗糙和细致。粗糙程度表示允许使用较少的采样点和优化迭代有效地重建自由空间。三平面特征 可以被表述为:
其中 , 表示三平面的粗略和精细特征。 是世界坐标。{} 表示三个粗略几何特征平面,{}表示三个精细几何特征平面。
对于样本点 ,在每个特征平面上使用双线性插值最近邻点,将插值的粗略特征和精细特征分别求和为粗略输出和精细输出。最后将输出连接在一起作为三平面特征。几何解码器输出预测的 SDF 值 φ 和特征向量 :
![881ac1c7b681c8d683a19e07e663645c.png](https://img-blog.csdnimg.cn/img_convert/881ac1c7b681c8d683a19e07e663645c.png)
我们使用 one-blob 位置编码,而不是将空间坐标嵌入到多个频带中。颜色解码器预测RGB值:
![833b8168e4fd5678d6b13a37158055f0.png](https://img-blog.csdnimg.cn/img_convert/833b8168e4fd5678d6b13a37158055f0.png)
可微渲染
使用可微分渲染过程来整合从场景表示中预测的密度和颜色。从投影相机中心出发,确定一个射线,在近平面和远平面之间均匀采样 个点。采样点带有深度值和预测颜色。从网络中查询 TSDF φ 和原始颜色 φ,并使用基于 SDF 的渲染方法将 SDF 值转换为体积密度:
![4415baa7b483230fbf21ea99aeef9a0f.png](https://img-blog.csdnimg.cn/img_convert/4415baa7b483230fbf21ea99aeef9a0f.png)
将终止概率、深度和颜色定义为:
![c0f9cf151e36f714b715a098c71e30fe.png](https://img-blog.csdnimg.cn/img_convert/c0f9cf151e36f714b715a098c71e30fe.png)
利用深度图像提供的几何信息指导神经点在深度不确定性范围内沿射线采样。通过近平面和远平面之间的分层采样得到 个点,从 范围内的近表面点绘制 表面点,其中 Δd 是一个小偏移量。如果像素没有有效的对应深度值,将使用估计的深度。
局部到全局的 BA
从传统基于关键帧的 SLAM 系统中汲取灵感,旨在提高姿态估计的鲁棒性和准确性。我们提出了神经变形误差和投影误差用于局部到全局 BA。神经变形损失可以被表述为:
![c7a0f69bb883af8015bdbeea5094bd2a.png](https://img-blog.csdnimg.cn/img_convert/c7a0f69bb883af8015bdbeea5094bd2a.png)
这里, 和 是神经扭曲颜色和深度损失。 , 表示来自图像 的光线。{ , } 表示图像 到 的相对位姿。 表示我们的场景表示网络。图3展示了神经扭曲损失的图示。用 SIFT 特征制定重投影误差:
![8159c0deb64dca662c0b44dceb6658a5.png](https://img-blog.csdnimg.cn/img_convert/8159c0deb64dca662c0b44dceb6658a5.png)
关键帧选择有2个情况:
每经过 帧
相机移动到当前场景边界
每当关键帧到达时,都会在跟踪和建图线程的局部关键帧数据库中选择与当前关键帧有重叠区域的帧来执行局部 BA。同时,系统还维护了一个全局关键帧列表。在累积特定数量的局部关键帧或相机移动到局部边界后,执行全局 BA。在全局 BA 中,我们从全局关键帧数据库中随机选择关键帧和光线,该数据库存了场景的所有历史观察结果。
目标函数
地图构建和跟踪线程通过最小化以下目标函数来优化网络参数 θ 和相机位姿参数
地图构建和跟踪线程中,颜色和深度渲染损失
![06864b05e5151e27b4c0fedad9b3d3ac.png](https://img-blog.csdnimg.cn/img_convert/06864b05e5151e27b4c0fedad9b3d3ac.png)
建图线程中,额外设计了3个损失:
SDF 损失
![8ffbc788144e848312f8e5b1eefd7bac.png](https://img-blog.csdnimg.cn/img_convert/8ffbc788144e848312f8e5b1eefd7bac.png)
自由空间损失
![626b627efa6839137e3e2976626436bc.png](https://img-blog.csdnimg.cn/img_convert/626b627efa6839137e3e2976626436bc.png)
特征平滑度损失
![085ca86c700fe2fd91ddeaa44818f695.png](https://img-blog.csdnimg.cn/img_convert/085ca86c700fe2fd91ddeaa44818f695.png)
实验
实验表明本文方法在表面重建、姿态估计和实时性能方面优于现有的基于隐式表示的方法。
数据集结果
利用数据集做了不同场景测试:
数据集 Replica 测试了 8 个室内小房间场景
数据集 ScanNet 测试了室内大场景和长序列(> 5000 帧)
数据集 Apartment 测试了多房间场景
Replica 数据集
![2fee6a11473d2099d85532add8608275.png](https://img-blog.csdnimg.cn/img_convert/2fee6a11473d2099d85532add8608275.png)
![ad76289cfd2611c73db5efb0abc039f4.png](https://img-blog.csdnimg.cn/img_convert/ad76289cfd2611c73db5efb0abc039f4.png)
Scannet 数据集
![4b34efff57d9edb9e732625428f3107a.png](https://img-blog.csdnimg.cn/img_convert/4b34efff57d9edb9e732625428f3107a.png)
![26076b53e83dfcb63937892e3f13f41e.png](https://img-blog.csdnimg.cn/img_convert/26076b53e83dfcb63937892e3f13f41e.png)
Apartment 数据集
![88d867d5d20dd31419bb9e2cca6e0468.png](https://img-blog.csdnimg.cn/img_convert/88d867d5d20dd31419bb9e2cca6e0468.png)
消融实验
![d0624c850e66a2d6a02bc306fe2ef003.png](https://img-blog.csdnimg.cn/img_convert/d0624c850e66a2d6a02bc306fe2ef003.png)
![294488464ea5c20b3cc8ac4c0cee6add.png](https://img-blog.csdnimg.cn/img_convert/294488464ea5c20b3cc8ac4c0cee6add.png)
![40bc44ebe799a7aa38a719a8a71e905b.png](https://img-blog.csdnimg.cn/img_convert/40bc44ebe799a7aa38a719a8a71e905b.png)
结论
本文提出了一种新颖的稠密 SLAM 系统 PLGSLAM,它可以在大型室内场景中实现精确的表面重建和姿态估计。本文的渐进式场景表示方法使系统能够表示大型室内场景和长视频。三平面和多层感知器的联合编码方法进一步提高了局部场景表示的准确性。局部到全局的 BA 方法将传统的 SLAM 方法与端到端位姿估计相结合,实现了鲁棒且准确的相机跟踪,并减轻了累积误差和位姿漂移的影响。广泛的实验证明了本文的系统在场景重建、深度估计和姿态估计方面的有效性和准确性。
参考
PLGSLAM: Progressive Neural Scene Represenation with Local to Global Bundle Adjustment
【3D视觉之心】技术交流群
3D视觉之心是面向3D视觉感知方向相关的交流社区,由业内顶尖的3D视觉团队创办!聚焦三维重建、Nerf、点云处理、视觉SLAM、激光SLAM、多传感器标定、多传感器融合、深度估计、摄影几何、求职交流等方向。扫码添加小助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
扫码添加小助理进群
【3D视觉之心】知识星球
3D视觉之心知识星球主打3D感知全技术栈学习,星球内部形成了视觉/激光/多传感器融合SLAM、传感器标定、点云处理与重建、视觉三维重建、NeRF与Gaussian Splatting、结构光、工业视觉、高精地图等近15个全栈学习路线,每天分享干货、代码与论文,星球内嘉宾日常答疑解惑,交流工作与职场问题。