点击下方卡片,关注“3D视觉之心”公众号
>>点击进入→3D视觉之心技术交流群
来源:《电子与信息学报》
编辑:陈萍萍的公主@一点人工一点智能
原文:https://jeit.ac.cn/cn/article/doi/10.11999/JEIT240316
摘要:目前,传统显式场景表示的同时定位与地图构建(SLAM)系统对场景进行离散化,不适用于连续性场景重建。该文提出一种基于神经辐射场(NeRF)的混合场景表示的深度相机(RGB-D)SLAM系统,利用扩展显式八叉树符号距离函数(SDF)先验粗略表示场景,并通过多分辨率哈希编码以不同细节级别表示场景,实现场景几何的快速初始化,并使场景几何更易于学习。此外,运用外观颜色分解法,结合视图方向将颜色分解为漫反射颜色和镜面反射颜色,实现光照一致性的重建,使得重建结果更加真实。通过在Replica和TUM RGB-D数据集上进行实验,Replica数据集场景重建完成率达到93.65%,相较于Vox-Fusion定位精度,在Replica数据集上平均领先87.50%,在TUM RGB-D数据集上平均领先81.99%。利用机器人实时构建详细的密集地图对于推进机器人自主导航、增强现实/虚拟现实(Augmented Reality/Virtual Reality, AR/VR)等领域至关重要,这些地图使机器人能够完成复杂的任务,此外,高保真地图是AR/VR等关键技术,与手动或离线重建方法相比,通过机器人实时自动构建环境的方式更为高效且节省时间。 在机器人技术领域,同时定位与地图构建(Simultaneous Localization And Mapping, SLAM)技术能够并行完成定位与建图,先前的SLAM方案采用显式场景表示,如Hornung等人[1]利用占用网格表示场景,但计算成本高,难以处理细节和变形。文献[2–7]采用截断符号距离函数(Truncated
Signed Distance Function, TSDF),但TSDF的离散性难以处理细小结构和空洞。文献[8,9]使用面元表示场景,对于大型场景,生成和处理面元表示可能变得不切实际。Ruetz等人[10]采用网格表示,由于其是离散的,不适用于连续性的场景。同时这些方法在平衡内存消耗和建图精度上面临挑战[11],且生成新视角图像时效果不佳。近期,随着神经辐射场(Neural Radiation Fields, NeRF)的出现,隐式表示越来越受欢迎[12],许多SLAM研究使用NeRF来解决显式表示的限制,通过持续查询场景属性从新视角生成图像,例如,Sucar等人[13]提出的隐式映射(implicit
MAPping, iMAP)仅使用多层感知机(MultiLayer Perceptron, MLP)对场景进行表征,导致运行时间长且重建质量较差。Zhu等人[14]提出的神经隐式可扩展编码SLAM(Neural
Implicit Scalable Encoding For SLAM, NICE-SLAM)利用分层特征网格和MLP联合表示场景,但无法满足实时性。Yang等人[15]提出的基于体素的融合(Voxel-based
Fusion, Vox-Fusion)采用动态体素管理和MLP进行场景表示,但重建场景有许多空洞。Kong等人[16]提出的矢量化对象映射(vectorised
object MAPping, vMAP)运用实例分割和MLP,但细小结构无法重建,依赖于实例分割的准确性。Li等人[17]提出的密集神经语义信息SLAM(Dense
Neural Semantic-Informed SLAM, DNS SLAM)利用语义信息将不同类别物体单独重建,导致时间成本高。最近的Wu等人[18]提出的关键点与神经隐式编码SLAM(Keypoints
and Neural implicit encoding SLAM, KN-SLAM)引入局部特征点法,跟踪精度提升较大,但场景重建质量较低。Wang等人[19]提出结构环境的神经隐式表示SLAM(neural
implicit representation SLAM for structural environments, Structerf-SLAM)使用平面约束优化位姿和3维模型,但其模型质量较低。 在上述基础上,本文在场景表示方式和引入视图方向两方面做出创新。具体而言,利用扩展显式八叉树符号距离函数(Signed Distance Functions, SDF)先验表示粗略的场景几何(SDF为任意点到最近物体表面的距离,在物体内部为负值,在物体外部为正值),以增量方式构建一个具有较大体素的稀疏体素八叉树,其中每个叶节点存储体素顶点的可优化SDF;为表示几何细节和纹理,使用隐式多分辨率哈希编码[20]和MLP表示精细的场景几何。此外,本文还探讨光照模型的应用,结合视图方向,通过外观分解法将颜色分解为漫反射颜色和镜面反射颜色,从而提高重建后物体表面的真实感,进一步优化重建场景的视觉效果。 本文提出一种基于NeRF的混合场景表示的视觉SLAM方法,旨在实现高质量的场景重建,系统框架如图1,在给定一组连续RGB-D帧和相机参数K的情况下,利用扩展八叉树SDF先验关注于物体表面的几何形状,并使用多分辨率哈希编码仅处理剩余几何体和纹理,通过NeRF2Mesh[21]提出的外观颜色分解方法,将外观颜色分解为漫反射颜色和镜面反射颜色,从而实现对场景更加精确和全面的描述。将预测值和真实值做比较,通过损失函数的优化,实现对混合场景表示和位姿的调整,完善地图的重建和更新过程。 基于NeRF的SLAM系统,由于使用MLP,导致运行时间长。因此考虑借助扩展八叉树SDF先验,先进行粗略的场景重建,再由MLP进行精细的场景重建,MLP关注于剩余几何结构。 如图1扩展八叉树SDF先验所示,系统根据当前帧位姿和深度信息扩展新的体素,逐步构建覆盖所有可见区域的稀疏体素八叉树结构。仅将包含10个点以上的体素添加到稀疏体素八叉树中,点数量的阈值是基于实验结果设定的。扩展八叉树SDF先验可分为八叉树SDF先验和扩展体素分配,具体如下。 体素(即小立方体)的顶点存储可优化的SDF值,以粗略表示场景的几何形状,采样点的SDF值通过其所在体素的8个顶点对应八叉树叶节点的SDF值计算,利用三线性插值函数得到采样点的SDF值sc 其中,x是采样点的3维坐标,是采样点所在体素顶点对应的SDF值,S是八叉树叶节点中顶点的集合。 为使系统快速收敛,分配新体素时,每个顶点设置为近似SDF,如图2所示,将新体素的顶点投影到深度图2中对应像素上,得到体素顶点的近似SDF值(即粗略表示SDF) 其中,di是相机与顶点i之间的z轴距离,v是顶点对应投影像素,D(v)是像素v�的深度值。由于遮挡可能导致近似SDF值不准确,因此只提供顶点的近似SDF值,同时限制其大小,令(D(v)−di)<×(体素大小),是长度为1的两个相邻体素之间的最大距离。 物体表面靠近体素的边界时,顶点对应的精细SDF值趋近于零,优化过程中可能变成错误的值,导致表面丢失的问题。如图3(a),体素上表面顶点对应的精细SDF为正值,但趋近于0,微弱的噪声都可能使其在优化过程变成负值,从而导致物体表面丢失如图3(b)。利用扩展体素分配,当顶点的SDF值小于阈值,就在其上增加一个额外的体素,无论SDF为正为负,始终构建物体表面如图3(c)和图3(d),解决表面丢失问题。 由于系统运行时间更大程度上取决于MLP的大小,同时MLP也兼顾精细场景的重建,因此通常采用空间换时间的策略,即将场景信息进行预处理或者编码,再利用小型MLP进行训练。 为获得场景更详细的几何形状,采用Instant-NGP的多分辨率哈希编码[20],与之学习场景全部的SDF不同,本文在上一节中使用扩展八叉树SDF先验得到粗略的场景几何结构,因此使用多分辨率哈希编码仅处理剩余几何结构,通过MLP得到剩余SDF(剩余几何结构的SDF值)。如图1多分辨率哈希编码所示,根据采样点的坐标,在L个不同分辨率的哈希特征网格中获取对应的顶点坐标,分别在每个分辨率下,通过查找哈希表得到顶点对应的F维特征向量,利用三线性插值得到采样点的特征向量,并将不同分辨率的特征向量拼接通过MLP得到精细SDF值sf(即剩余SDF值),sf以及最终预测的SDF值s具体为 先前基于NeRF的SLAM系统通常在不假设照明或材料特性的情况下运行,因此在处理大量镜面反射干扰的场景时,可能会导致物体表面的模糊现象。 利用视角相关的信息,以提高对反射和光照变化的建模能力。对于视图方向采用球谐编码可以更好地捕捉场景中物体的表面特征,球谐编码将视图方向投影为球面谐波基函数的系数[20],球面谐波基函数是在球面上的一组正交基函数。如图1外观分解法,将视图方向编码成球谐系数,能够更有效地描述物体在不同视角下的外观变化,结合视图方向处理镜面反射,这种方法可以帮助克服因镜面反射和光照变化引起的表面模糊问题,使得重建的物体表面更加清晰、真实。使用颜色多分辨率哈希网格和两个浅层MLP,将外观分解[21]为与视图方向无关的漫反射颜色cd和与视图方向相关的镜面反射颜色cs,表达为 其中,m2(x)是多分辨率哈希编码,hs表示位置x处的多维颜色特征,θ2, τ2, τ3是可学习的参数,d表示视图方向的球谐编码,最终的RGB颜色c是通过将两项相加得到的 如图4所示,依次为仅使用漫反射颜色渲染的图像、加入镜面反射颜色后的渲染图像以及真实图像参考,对比可以得出,本文结合镜面反射颜色,使得物体表面纹理更接近于真实表面,这是因为对于逼真的数据集来说,估计环境光照可能具有挑战性,先前的研究已经观察到这会导致渲染质量降低[20,22]。 由于iMAP[13]和NICE-SLAM[14]的渲染公式,基本参考原始NeRF的公式,因此本文考虑对其进行精简,具体来说,简化其权重计算方法,可以提高算法的效率和实用性,降低计算成本。 体渲染采用立体渲染的概念,通过在观察方向上逐像素进行渲染,获取每个像素位置在观察方向上所有点的SDF值和颜色值,将每条光线上累计的值进行加权积分得到最终值,具体来说,给定相机光心o和光线方向r,由随机采样的Nt个像素点引出射线,在射线上均匀的采样M个点xi=o+dir,i∈{1,2,⋯,M},深度值为{d1,d2,⋯,dM},颜色值为{c1,c2,⋯,cM},利用如下体渲染公式得到最终预测的RGB值C和深度值D 其中,{ωi}是基于SDF计算的权重,利用转换函数将预测的SDF值si转换为权重ωi,本文没有采用Neus中提出的渲染公式[23,24],而是选择简单的方式[25],通过将两个Sigmoid函数σ(⋅)相乘直接计算权重ωi其中,tr是截断距离。本文利用深度信息更加精确的采样,除在射线上均匀采样M�个点外,利用有效深度测量的射线,在[d−ds,d+ds]范围内均匀地采样Mf个靠近物体表面的点,其中ds是较小的偏移量。
通过最小化损失函数,来优化可学习参数和相机位姿,颜色值和深度值的渲染损失是渲染预测值和观测值之间的ℓ2误差,对比NeRF使用的颜色损失Lrgb和深度损失Ld,本文额外增加镜面反射颜色损失Lspecular其中,Rd是具有有效深度测量的射线集,cn,dr为对应的观测RGB值和深度值。为实现准确平滑且具有详细几何形状的场景重建,本文利用近似SDF值实现特征平滑度损失Lsdf,具体而言,对于截断区域内,即|d−D|≤tr,使用采样点与其观测深度值之间的距离作为真实SDF值的近似,与预测SDF值做损失 其中,是射线上位于物体表面附近截断区域内点的集合。对于远离物体表面的点,即|d−D|>tr,采用自由空间损失,迫使预测SDF值逼近截断距离tr 其中,是射线上位于相机和截断区域边界之间点的集合,最终的损失函数为 通过Adam优化器利用损失函数对参数的梯度信息来迭代更新参数,Adam优化器根据梯度的方向和大小来调整每个参数的学习率,从而更高效地更新网络参数。 为评估本文提出方法的性能,在Replica数据集[26]和TUM RGB-D数据集[27]上将其重建质量和轨迹误差与其他基于NeRF的SLAM系统进行比较,此外,还进行消融研究,以评估方法中每个模块的有效性。 Replica数据集是Facebook制作的各种室内空间的高质量重建数据集,是基于NeRF的SLAM系统常用的主流室内数据集。 TUM RGB-D数据集是慕尼黑工业大学制作,是较为权威的室内开源数据集,其广泛应用于视觉SLAM系统各项指标的评估。 (1)实现细节:实验硬件配置为AMD
Epyc7452 CPU, 256G RAM和RTX 2080ti GPU,系统环境为Ubuntu20.04。在本文方法中,八叉树叶子节点的体素大小为10 cm, tr=5 cm,对于多分辨率哈希编码,分辨率层级L和哈希查找表最大容量T、几何哈希网格特征向量维度F1和颜色哈希网格特征向量维度F2取值如表1,取值根据Instant-NGP[20]的实验分析和NeRF2Mesh[21]的参数设置。由于扩展八叉树SDF先验,精细SDF获取仅使用特征大小为32的MLP1来解码几何特征,外观解码器MLP2和MLP3是特征大小分别32和16的MLP,hsℎs维度是13。选择Nt=1024个像素以生成射线执行10次跟踪迭代,Nt、均匀采样点数M和深度引导采样点数Mf根据NICE-SLAM[14]的实验值设置;损失函数的权重设置如表1,α1和α2取值参考vMAP[16], α3根据NeRF2Mesh[21]实验设置,Lsdf作用于物体表面的截断区域内,对重建物体表面占比更大,而作用于截断区域外远离物体表面,因此将α4设置为远大于α5。 表1 超参设定值
(2)基线:本文选择近3年的5种先进的基于NeRF的RGB-D SLAM方法,iMAP[13], NICE-SLAM[14],
Vox-Fusion[15], vMAP[16]和DNS SLAM[17]对重建质量和轨迹误差进行比较。 (3)指标:为评估重建场景几何形状,使用重建网格的深度L1误差(Depth L1 (cm))、精度(Accuracy (cm)):重建网格的采样点与最邻近的真实点之间的平均距离、完成度(Completion (cm)):真实网格采样点与最邻近的重建网格采样点之间的平均距离和完成率(Completion Ratio (%)):重建网格中完成度低于5 cm点的百分比,定量评估重建质量,采用NICE-SLAM的网格剔除策略,利用ATE RMSE(cm)评估轨迹误差。 (4)对Replica的评估:在表2和表3中,对方法的重建质量和轨迹误差与基线进行定量比较,结果表明,本文的重建质量优于基线,平均轨迹误差也优于基线。此外,对渲染图像和重建网格进行定性分析,在图5中,本文方法可以从训练视角和新颖视角生成更逼真的渲染图像,如图5中场景office2,对比同样使用SDF的Vox-Fusion的渲染图像,本文没有产生场景空洞,对比vMAP几乎空白的桌面,本文重建出桌面更多的细小结构体。图6中更清晰地展示沙发、床和餐桌的重建网格,如图Vox-Fusion产生大量场景空洞,而本文重建网格表现出更强的几何细节,实现场景的连续性重建,同时没有出现场景空洞。 表2 Replica数据集重建质量对比
表3 Replica数据集轨迹误差
(5)在TUM RGB-D上的评估:本文进一步评估TUM数据集的跟踪准确性,如表4所示,本文方法实现强有力的跟踪性能,在基于NeRF的SLAM方法中实现最佳的跟踪性能。 表4 TUM-RGBD数据集轨迹误差
(6)本文针对Apartment数据集展开验证工作,旨在评估系统处理大型场景的能力,Apartment为NICE-SLAM[14]自制的具有多个房间的大型公寓,如图7,对比右侧真实场景参考,本文在Apartment数据集上实现高质量的场景重建,不论是整体还是局部都可以较好的重建,证明本文具有处理大型场景的能力。 (1)八叉树SDF先验:本文定性展示Replica数据集中room1内窗户的重建结果,如图8,图8(a)未使用八叉树SDF先验导致窗户模糊,图8(b)采用八叉树SDF先验,可以明显改善窗户的重建效果,与图8(c)参考真实场景对比,可以清楚地看出八叉树SDF先验使得窗户的重建结果更加接近于真实场景,能够更好地保留物体的细节和形状特征。本文也对重建的场景模型进行定量分析,如表5为Replica数据集场景room0的重建质量对比(w/o为不包含),不包含八叉树SDF先验时,重建质量显著降低,因此八叉树SDF先验在重建过程中的有效性显而易见。对于添加体素的点的阈值,如表6所示,当点数为10重建质量提升幅度较大,超过10以后重建质量没有明显提升,故而将阈值设置为10。 表5 Replica数据集消融实验的定量分析
表6 添加体素的点的阈值分析
(2)扩展体素分配:图9展示Replica数据集中room0内卧室门的可视化结果,在图9(a)中,未使用扩展体素分配,导致场景出现黑点,影响场景的真实感和清晰度,图9(b)采用扩展体素分配,对比图9(c)参考真实场景,图9(b)黑点大部分消失,提高可视化效果的质量和真实性,通过扩展体素分配,能够更好地重建场景并减少噪点。对比表5中重建质量指标,单独去除扩展体素分配后,指标明显下降,证明扩展体素分配可以提高重建质量。 (3)外观颜色分解:如图10,展示Replica数据集中room0内的沙发,对比图10(c)参考真实场景,图10(a)为仅使用漫反射颜色,导致沙发表面颜色异常浑浊,图10(b)使用外观分解法,得到沙发清晰的表面颜色,通过融合不同的反射光照成分,可以提高物体表面的质感和逼真度。如表5,剔除外观颜色分解重建质量指标具有一定幅度的下降,进一步证明外观颜色分解的有效性。 (4)损失函数:如表7,本文在Replica数据集场景room0上对损失函数做消融实验,比较损失函数中不同项的有效性(w/o为不包含),如表中数据所示,不包含特征平滑度损失Lsdf时,重建指标均有明显降低。对于颜色损失Lrgb、深度损失Ld和镜面反射颜色损失Lspecular在精度(Accuracy (cm))上明显降低。由于自由空间损失将远离物体表面的点逼近于截断区域边界,因此对于重建质量的影响较低。 表7 Replica数据集损失函数消融实验
本文对所采用的方法进行性能分析,评估其在实际应用中的响应速度和效率,如表8所示,对比基线的平均处理帧数fps,本文方法以4.93 fps的运行速度领先于基线,同时对GPU显卡内存占用最少,模型中可优化的参数略高于iMAP,即本文以较少的资源消耗实现更快速、更高质量的场景重建。 表8 Replica数据集性能对比
本文提出一种基于NeRF的RGB-D SLAM系统,利用混合场景表示描绘场景几何和外观,实现高质量的场景重建,首先通过扩展八叉树SDF先验实现场景几何的快速初始化,对几何体细节和纹理,则使用多分辨率哈希编码和MLP来进行隐式表示,采用外观颜色分解法,结合视图方向将颜色分解为漫反射颜色和镜面反射颜色,使得重建物体表面的颜色更加清晰、真实。 使用Replica数据集和TUM RGB-D数据集评估本文方法的精度和性能,对比结果表明,本文方法在各种指标下都优于基线。在Apartment数据集上证明系统具备处理大型场景的能力,同时实现高质量的场景重建。考虑到基于NeRF的SLAM系统大多假设环境是静态的,轨迹误差和传统的SLAM系统有一定的差距,后续研究中需设计针对动态物体的解决方案,以及考虑如何降低轨迹误差,提升跟踪精度。
3D视觉之心是面向3D视觉感知方向相关的交流社区,由业内顶尖的3D视觉团队创办!聚焦三维重建、Nerf、点云处理、视觉SLAM、激光SLAM、多传感器标定、多传感器融合、深度估计、摄影几何、求职交流等方向。扫码添加小助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
扫码添加小助理进群
3D视觉之心知识星球主打3D感知全技术栈学习,星球内部形成了视觉/激光/多传感器融合SLAM、传感器标定、点云处理与重建、视觉三维重建、NeRF与Gaussian Splatting、结构光、工业视觉、高精地图等近15个全栈学习路线,每天分享干货、代码与论文,星球内嘉宾日常答疑解惑,交流工作与职场问题。