论文链接
论文重点难点
论文重点
1.
问题背景与动机
-
透明物体在室内场景中常见,但现有的RGB-D相机难以准确估计其深度,因为透明物体表面的反射和折射会导致深度数据噪声和错误。这使得传统的RGB-D SLAM方法在重建包含透明物体的场景时失败。
-
为了在SLAM重建中成功恢复透明物体,必须在不同视角下保持透明物体深度值的一致性。
2.
方法概述
-
提出了一种基于立体视觉的深度预测网络,用于在连续图像序列中保持深度预测的一致性。
-
构建了一个合成RGB-D视频数据集用于模型训练,并使用RealSense D435i相机捕获真实场景视频以测试模型的泛化能力。
-
通过对比实验,证明了该方法在深度预测和场景重建上的显著改进。
3.
核心方法
-
平面扫描立体(Plane Sweep Stereo):通过将深度空间划分为多个虚拟平面,利用连续图像之间的RGB信息空间一致性,构建成本体积(cost volume),为深度预测提供相对约束。
-
点云特征融合(Point Cloud Feature Fusion):将背景深度数据转换为点云,提取其空间信息,并与RGB特征融合,为深度预测提供绝对尺度信息。
-
深度预测模块:将成本体积转换为概率体积,并通过回归方法预测最终深度值。同时设计了一个表面法线预测分支,辅助深度预测的准确性。
-
Pseudo-SLAM系统:将深度预测模型嵌入到ElasticFusion框架中,实现透明物体的实时3D重建。
4.
实验与结果
-
数据集:使用Blender创建了包含15个训练场景和5个验证场景的合成数据集,每个场景包含约300-400张RGB图像及其对应的相机轨迹、掩码和透明物体深度。
-
深度预测评估:使用RMSE、REL、MAE和阈值δ等指标评估深度预测精度,结果表明该方法优于现有的透明物体深度预测方法。
-
重建评估:在合成场景和真实场景中测试Pseudo-SLAM方法,通过与ClearGrasp和TransCG等方法对比,证明了该方法在透明物体重建上的显著改进。
论文难点
1.
深度一致性问题
- 透明物体的深度预测需要在不同视角下保持一致,否则会导致重建结果扭曲。这要求模型能够处理连续图像序列中的深度变化,并确保预测结果的稳定性。
2.
背景深度信息的利用
- 如何有效地利用背景深度信息为透明物体的深度预测提供绝对尺度约束是一个挑战。论文通过将背景深度转换为点云,并设计轻量级的PointNet模块来提取点云特征,解决了这一问题。
3.
模型泛化能力
- 论文构建的合成数据集虽然包含了多种透明物体,但在真实场景中,透明物体的形状、大小和环境复杂性更高。如何确保模型在真实场景中的泛化能力是一个难点。实验中,作者通过在真实场景中捕获视频数据来验证模型的泛化能力。
4.
实时性与准确性的平衡
- 在实时重建中,模型需要在保证深度预测准确性的同时,满足实时性要求。论文通过选择合适的输入参数(如邻近图像数量)和优化网络结构,实现了15 FPS的处理速度,平衡了实时性和准确性。
5.
表面法线预测的辅助作用
- 表面法线预测分支虽然在训练时有助于提高深度预测的准确性,但在推理时被禁用。如何设计一个既能有效辅助深度预测又不会增加过多计算负担的法线预测模块是一个技术难点。
论文详细讲解
1 研究背景
透明物体(如玻璃杯、塑料制品等)在日常生活中非常常见,但由于其表面的反射和折射特性,现有的RGB-D相机难以准确估计其深度。这导致传统RGB-D SLAM方法在重建包含透明物体的场景时失败。为了在SLAM重建中成功恢复透明物体,必须在不同视角下保持透明物体深度值的一致性。
2 研究目标
本文提出了一种实时透明物体重建方法,通过一种新颖的基于立体视觉的深度预测网络,保持连续图像序列中深度预测的一致性,并将其应用于SLAM重建。
3 方法
3.1 立体视觉深度预测模型
本文提出了一种基于DPSNet的立体视觉深度预测模型,通过以下模块实现深度预测的一致性:
1.
平面扫描立体(Plane Sweep Stereo)
-
将深度空间\(D\)划分为\(L\)个等间距的虚拟平面,通过反向投影将图像映射到这些虚拟平面上,并计算每个平面上的成本(cost)。
-
成本通过以下公式计算:
其中,\(d_l\)表示第\(l\)个平面的深度值,\(\tilde{p}\)和\(p\)分别是扭曲视图和当前视图中像素的齐次坐标,\(K\)是相机内参矩阵,\(\exp(\hat{\xi})\)是视图之间的变换矩阵。
- 通过计算相邻图像之间的成本并生成成本体积(cost volume),为深度预测提供相对约束。
2.
点云特征融合(Point Cloud Feature Fusion)
-
由于平面扫描立体仅提供相对深度尺度,因此需要引入背景深度信息以提供绝对尺度。
-
将背景深度数据转换为点云,通过以下公式生成点云:
其中,\((u, v)\)是像素坐标,\(d\)是深度值,\(p\)是像素的齐次坐标。
- 使用轻量级PointNet模块提取点云特征,并将其与RGB特征融合,形成融合特征。最终将融合特征与成本体积结合,为深度预测提供绝对尺度信息。
3.
深度预测模块
- 将成本体积转换为概率体积,通过softmax函数计算每个像素在每个深度平面上的概率:
- 通过回归方法计算最终深度值:
- 为了进一步提高深度预测的准确性,设计了一个表面法线预测分支。通过以下公式将深度平面转换为法线平面:
其中,\(P_w^i = P(u+1, v) - P(u, v)\),\(P_h^i = P(u, v+1) - P(u, v)\)。最终通过卷积网络对法线图进行细化。
4.
损失函数
- 深度预测的损失函数为:
其中,\(\hat{D}\)和\(D^*\)分别是预测深度和真实深度,\(\hat{N}\)和\(N^*\)分别是预测法线和真实法线,\(\| \cdot \|_H\)表示Huber范数,\(\alpha\)是权重参数。
- 为了更关注透明物体区域的深度预测,引入加权损失:
其中,\(\beta\)控制透明物体区域和背景区域的损失权重。
3.2 Pseudo-SLAM系统
为了实现透明物体的实时3D重建,本文将深度预测模型嵌入到ElasticFusion框架中,构建了一个Pseudo-SLAM系统。具体步骤如下:
1.
使用预测网络生成透明物体的掩码。
2.
剔除掩码区域的深度数据,生成背景点云。
3.
利用ICP算法估计相邻帧之间的旋转矩阵和平移向量。
4.
通过深度预测模型更新原始深度图。
5.
将更新后的深度图输入ElasticFusion进行场景重建。
4 实验
4.1 数据集
-
合成数据集:使用Blender创建了包含15个训练场景和5个验证场景的合成RGB-D视频数据集,每个场景包含约300-400张RGB图像及其对应的相机轨迹、掩码和透明物体深度。
-
真实数据集:使用RealSense D435i相机在真实场景中录制视频,每个场景包含约400-600帧。
4.2 深度预测评估
使用以下指标评估深度预测的准确性:
-
RMSE(均方根误差):\(\sqrt{\frac{1}{\vert M\vert } \sum_{d \in M} (d - d^*)^2}\)
-
REL(相对误差):\(\frac{1}{\vert M\vert } \sum_{d \in M} \frac{\vert d - d^*\vert }{d^*}\)
-
MAE(平均绝对误差):\(\frac{1}{\vert M\vert } \sum_{d \in M} \vert d - d^*\vert\)
-
阈值δ(精度):满足\(\max \left( \frac{d}{d^*}, \frac{d^*}{d} \right) < \delta\)的像素比例。
实验结果表明,本文方法在所有指标上均优于现有的透明物体深度预测方法(如ClearGrasp、TransCG等)。
4.3 重建评估
-
在合成场景和真实场景中测试Pseudo-SLAM方法,通过与ClearGrasp和TransCG等方法对比,证明了本文方法在透明物体重建上的显著改进。
-
使用以下指标评估相机轨迹的准确性:
-
ATE(绝对轨迹误差)
-
R.RPE(旋转相对姿态误差)
-
T.RPE(平移相对姿态误差)
-
使用以下指标评估重建结果的准确性:
-
Chamfer距离
-
Precision(精确度)
-
Recall(召回率)
-
F-Score(综合分数)
实验结果表明,本文方法在相机轨迹和重建结果的准确性上均优于现有方法。
5 结论与局限性
本文提出了一种实时透明物体重建方法,通过基于立体视觉的深度预测模型和Pseudo-SLAM系统,显著提高了透明物体深度预测的准确性和重建结果的质量。然而,该方法仍存在一些局限性:
1.
数据集中缺乏某些类型的透明物体(如手工玻璃制品)。
2.
重建结果在几何细节上仍有不足。
3.
对于包含多个相互遮挡的透明物体的场景,算法的处理能力有待进一步提高。
论文方法部分详解
3 方法
本文提出了一种基于立体视觉的深度预测模型,用于透明物体的实时3D重建。该方法的核心在于通过多视图信息保持深度预测的一致性,并将其嵌入到SLAM框架中实现透明物体的准确重建。方法的主要组成部分包括:
1.
平面扫描立体(Plane Sweep Stereo)
-
目的:利用连续图像之间的RGB信息空间一致性,为深度预测提供相对约束。
-
实现:将深度空间\(D\)划分为\(L\)个等间距的虚拟平面,通过反向投影将图像映射到这些平面上,并计算每个平面上的成本(cost)。成本计算公式为:
其中,\(d_l\)是第\(l\)个平面的深度值,\(\tilde{p}\)和\(p\)分别是扭曲视图和当前视图中像素的齐次坐标,\(K\)是相机内参矩阵,\(\exp(\hat{\xi})\)是视图之间的变换矩阵。
- 输出:生成一个成本体积(cost volume),形状为\((B, L, H, W)\),其中\(B\)是批次大小,\(L\)是深度平面的数量,\(H\)和\(W\)是特征图的高度和宽度。
2.
点云特征融合(Point Cloud Feature Fusion)
-
目的:为深度预测提供绝对尺度信息,解决平面扫描立体仅提供相对尺度的问题。
-
实现:将背景深度数据转换为点云,通过以下公式生成点云:
其中,\((u, v)\)是像素坐标,\(d\)是深度值,\(p\)是像素的齐次坐标。
-
使用轻量级PointNet模块提取点云特征,并将其与RGB特征融合。融合后的特征形状为\((B, S+C, H, W)\),其中\(S\)是点云特征的通道数,\(C\)是RGB特征的通道数。
-
将融合特征与成本体积结合,通过卷积网络进一步处理,生成用于深度预测的特征。
3.
深度预测模块
-
目的:从成本体积中回归出透明物体的深度值,并通过表面法线预测辅助深度预测。
-
实现:
1.
深度预测:将成本体积转换为概率体积,通过softmax函数计算每个像素在每个深度平面上的概率:
然后通过加权求和的方式计算最终深度值:
\[D = \sum_{l=0}^{L-1} l \cdot P(l)\]2.
表面法线预测:设计一个表面法线预测分支,将深度平面转换为法线平面:
其中,\(P_w^i = P(u+1, v) - P(u, v)\),\(P_h^i = P(u, v+1) - P(u, v)\)。通过卷积网络对法线图进行细化,最终将法线图与深度图结合,辅助深度预测。
- 损失函数:深度预测的损失函数为:
其中,\(\hat{D}\)和\(D^*\)分别是预测深度和真实深度,\(\hat{N}\)和\(N^*\)分别是预测法线和真实法线,\(\| \cdot \|_H\)表示Huber范数,\(\alpha\)是权重参数。为了更关注透明物体区域的深度预测,引入加权损失:
\[\text{Loss} = \beta L_{\text{masked}} + (1 - \beta) L_{\text{unmasked}}\]其中,\(\beta\)控制透明物体区域和背景区域的损失权重。
4.
Pseudo-SLAM系统
-
目的:将深度预测模型嵌入到SLAM框架中,实现透明物体的实时3D重建。
-
实现:
1.
使用预测网络生成透明物体的掩码。
2.
剔除掩码区域的深度数据,生成背景点云。
3.
利用ICP算法估计相邻帧之间的旋转矩阵和平移向量。
4.
通过深度预测模型更新原始深度图。
5.
将更新后的深度图输入ElasticFusion进行场景重建。
- 算法流程:
算法1. 透明物体重建的伪SLAM
通过上述方法,本文实现了透明物体深度预测的一致性,并将其成功应用于SLAM重建任务中。
原文翻译
基于RGB-D相机的透明物体重建一致性深度预测
南开大学 蔡宇翔 朱一帆 张海威 任博
{caiyuxiang, zhuyifan}@mail.nankai.edu.cn, {zhhaiwei, rb}@nankai.edu.cn
摘要
透明物体在室内场景中常见,但其深度估计较为困难。目前,商业深度相机由于透明物体表面的光反射和折射,难以准确估计其深度,通常会产生噪声和错误的深度值。这些错误的深度数据使得传统的RGB-D SLAM方法在包含透明物体的场景重建中失效。为了重建透明物体,需要预先恢复其精确深度值,且该深度值在不同视角下必须保持一致,否则重建结果将失真。现有的透明物体深度预测方法虽能恢复缺失的深度值,但由于预测结果的不一致性,无法在重建中取得良好效果。本文提出了一种基于新型立体深度预测网络的实时重建方法,以确保图像序列中深度预测的一致性。由于目前缺乏透明物体的视频数据集来训练模型,我们构建了一个包含不同透明物体的合成RGB-D视频数据集。此外,为测试泛化能力,我们使用RealSense D435i RGB-D相机从真实场景中采集视频。我们在数据集上对比了各项指标,并在合成场景和真实场景中与现有方法进行了SLAM重建结果对比。实验表明,本文方法在深度预测和场景重建的准确性上均有显著提升。
1 引言
图2. 透明物体的影响。左图展示了存在透明物体时光线路径的变化,这导致了深度数据的不准确。(a)中,红色框标明了透明物体的位置。(b)展示了深度相机获取的深度数据。透明物体周围的区域存在噪声且不准确,(c)展示了使用这些深度数据的重建结果,透明物体缺失。(d)和(e)是我们在不同视角下对透明物体的深度预测结果。(f)是我们的重建结果。
透明物体在我们的日常生活中频繁出现,包括玻璃杯、高脚杯、塑料制品、花瓶等。由于透明材料的特性,光线会在透明物体表面发生反射和折射,这会导致常用深度相机产生误差。图2展示了这种模糊性:相机捕获的深度是背后物体的失真结果。
SLAM(同步定位与地图构建)是计算机视觉和机器人领域的热门话题。许多SLAM方法[7, 25, 38]以RGB-D作为输入来重建场景并恢复相机运动。RealSense[19]和Kinect[12]通常用于捕获RGB-D数据,是RGB-D SLAM的常见输入设备。然而,由于上述原因,这些相机无法准确估计透明物体的深度。因此,恢复透明物体的正确深度对于重建至关重要。
许多室内场景深度补全方法在TUM数据集[34]上训练和测试,但该数据集不包含透明物体。此外,许多研究[8, 31, 44]尝试使用不同的深度神经网络模型预测透明物体的深度。然而,这些基于单帧的方法在SLAM重建中使用其预测深度时表现不佳。我们将其归因于帧间深度不一致问题。估计可用于SLAM的一致性深度是一个挑战。之前的工作如[3, 9, 23, 35]也提到过类似问题。由于帧间深度受相机轨迹严格约束,单目深度估计无法确保在相同绝对尺度下预测深度。因此,我们选择使用多视角作为输入,并在相邻RGB图像之间建立联系以保持预测的一致性,而不是使用单帧预测透明物体的深度。
本文提出了一种基于DPSNet[17]的立体透明深度预测模型,以保持预测的一致性,并可直接用于透明物体的SLAM重建。我们的模型使用平面扫描立体模块在连续输入图像之间建立空间一致性约束。为了获得更准确背景深度的尺度信息,我们使用预测的掩码分离透明物体并将其转换为点云。我们设计了一个基于[27, 28]的轻量级PointNet来学习这些信息,并将其整合到模型中。我们还设计了另一个表面法线预测分支,以辅助和优化深度预测结果。模型的详细信息见第3节。为了实现透明物体的实时重建,我们将网络嵌入ElasticFusion[38]中,作为第4节中的伪SLAM方法。
图1. 真实场景中的RGB-D重建结果对比。子图(b)和(c)展示了使用ElasticFusion[38]结合最先进的透明物体深度预测方法ClearGrasp[31]和TransCG[8]预测深度数据的重建结果。子图(d)展示了我们的重建结果。在(b)和(c)中,透明物体无法被很好地重建。相比之下,我们的模型在重建中表现优异。
目前有许多透明物体数据集,例如ClearGrasp数据集[31]、TransCG数据集[8]和Omniverse Object数据集[44]。然而,它们都只包含单张图像分割数据,缺乏透明物体的视频分割数据。[45]提出了一个透明物体的自然场景视频数据集,但需要透明物体的真实深度值进行模型训练。因此,我们使用Blender创建了一个合成数据集用于深度预测模型。此外,我们使用RGB-D相机捕获真实场景数据,以评估模型的泛化能力并测试这些场景的3D重建。我们还在伪SLAM管道中使用之前的透明物体深度预测方法测试了重建结果。图1展示了结果对比。除此之外,第5节中的多种实验表明,我们提出的方法取得了显著改进。
总结来说,我们的贡献包括:
-
提出了一种无需场景先验知识的实时3D透明物体重建方法,基于立体深度预测模型。
-
构建了一个新的透明物体RGB-D数据集,包含真实深度数据,用于在连续RGB-D数据序列中预测透明物体的深度。
2 相关工作
2.1 基于RGB图像的深度预测
许多先前的研究使用神经网络从RGB图像中预测密集深度。早期方法如Eigen等人[6]使用卷积神经网络从单张RGB图像中学习场景的全局结构并预测深度。其他方法[15, 21, 32, 41]则利用最新的网络结构来预测更准确的深度。Qi等人[29]提出了深度到法线结构和法线到深度结构,通过迭代优化预测结果。然而,单目深度预测存在尺度一致性和深度一致性的问题。许多研究[3, 10, 11, 33, 46]通过使用多视角一致性损失来训练模型以解决这一问题。基于立体的方法在深度预测任务中也较为流行。这些方法使用两视图或多视图来预测深度图。受传统立体匹配技术的启发,[13, 17, 18, 42, 43]使用神经网络替代部分处理过程以获取估计的视差或深度。[5, 6, 21, 37]提出了优化模块以实现渐进式重建。然而,这些方法均无法预测透明物体的深度。
2.2 透明物体的深度预测
透明物体通常具有折射和反射特性,这会导致从RGB-D相机获取深度数据时出现误差和不准确性。在包含透明物体的场景中进行深度补全也是一个挑战。之前的研究主要集中于使用训练好的网络修复透明物体的深度。Sajjan等人[31]使用三个模型分别预测掩码、表面法线和遮挡边界,然后通过全局优化函数得到结果。Zhu等人[44]提出可以通过附近的非透明物体推断透明物体的深度,使用训练好的局部隐式深度函数(LIDF)。Fang等人[8]使用编码器-解码器模型通过RGB和深度预测深度。Xu等人[40]首先恢复点云,然后将点云与RGB图像结合生成完整的深度图。然而,剩余的点云通常过于稀疏且噪声较大,难以恢复完整形状。这些方法在单张图像上表现良好,但在透明物体重建中表现不佳。相比之下,我们的预测方法在帧间获取合适的深度数据,在重建任务中表现优异。
2.3 透明物体重建
透明物体重建同样是一个挑战,目前尚无基于端到端深度预测的实时重建工作。[22, 26, 30]依赖于额外的已知信息和预计算的环境信息。Zhu等人[45]分别重建场景和透明物体,但耗时较长。Alt等人[2]提出了一种通过深度相机重建的方法,但需要首先使用排除透明物体的视频序列估计背景。与这些现有方法不同,我们引入了一种基于立体的深度预测模型,并构建了一种无需场景先验知识的实时透明物体重建方法。
2.4 基于点的3D学习
传统卷积神经网络无法直接应用于点云,因为点云具有无序属性,即物体的点可以以任意顺序排列。以PointNet[27]为起点,许多研究如[1]使用MLP层处理点云。由于MLP模块缺乏学习3D点之间几何关系的能力,[28, 36]提出了一种分层架构以从3D几何结构中学习。然而,如[39]所讨论的,基于MLP的模型通常使用最大池化函数聚合每个点的特征,未考虑与其他点的连接和邻近关系。此外,Mao等人[24]提出,简单地应用MLP网络处理点云在实践中可能并不如我们所想的那样有效。[14, 20, 39]将空间划分为3D体素或网格,以便点可以规则排列。但体素化操作会导致几何细节信息的不可避免的损失。对于我们的任务,透明物体的原始可信点极为稀疏,难以从这些点中学习信息。此外,基于体素或网格的方法在实践中的高分辨率下过于复杂且速度较慢,因此我们选择了基于MLP的PointNet并对其进行轻量化,以从透明物体周围的背景点中学习信息。
3 透明物体预测用于SLAM重建
图3. 我们提出方法的概览。模型至少需要两帧RGB图像、深度相机捕获的当前帧原始深度数据以及掩码作为输入。输出的深度数据用于RGB-D SLAM重建方法ElasticFusion中进行场景构建。我们在第3节中介绍了深度预测模型,并在第4节中介绍了将我们的模型与ElasticFusion算法结合的伪SLAM系统。
在第1节中,我们讨论了不同视角下深度值的一致性对于透明物体RGB-D重建的重要性。为了实现透明物体的一致性深度预测,我们利用了连续输入图像之间RGB信息的空间一致性以及更准确背景深度的尺度信息。首先,我们使用包含透明物体的连续图像,通过平面扫描立体方法为RGB通道生成代价体积。该步骤的细节见第3.1节。然后,我们将其与从当前帧背景深度(即掩码透明区域外的深度)中提取的点特征进行聚合。细节见第3.2节。随后,通过深度回归模块重建出透明物体的一致性深度。受[31]启发,我们在网络中设计了另一个与深度预测分支并行的表面法线预测分支,以提供更强的视觉线索来辅助深度预测的准确性。我们仅在训练过程中使用该模块,并在推理过程中禁用。我们方法的概览如图3所示。
3.1 用于一致性约束的平面扫描立体匹配
文献[16]提出的平面扫描立体匹配方法建议将深度空间\(D\)划分为\(L\)个平均部分。平面扫描立体匹配方法的基本原理是:将图像反向投影到从三维空间划分出的连续虚拟平面上,并计算每个平面上的代价。这些代价随后形成一个代价体。参照文献[17],我们使用从带有池化模块的金字塔卷积神经网络中提取的特征来表示图像。我们使用与他们工作中相同的公式来描述反向投影过程的扭曲函数(1)。
\[\tilde{p} \sim K\exp(\hat{\xi})[(K^{-1}p)d_l\ 1]^T \tag{1}\]其中,每个平面\(l\)的深度值表示为\(d_l\)。\(\tilde{p}\)和\(p\)分别是扭曲视图和当前视图中像素的齐次坐标。\(K\)指的是相机的内参矩阵,\(\exp(\hat{\xi})\)是用李代数表示的这些视图之间的变换矩阵。扭曲特征\(\tilde{f}\)是使用\(\tilde{p}\)对邻域图像特征进行插值得到的值。
假设从图像中提取的特征形状为\((B, C, H, W)\),其中\(B\)表示批量大小,\(C\)表示图像特征的通道数,\(H\)、\(W\)是输入图像高度和宽度的四分之一。在后续内容中,这些符号表示与上述相同的含义。我们在每个平面上将扭曲特征与当前特征在第二维上进行组合,得到形状为\((B, 2C, L, H, W)\)的连接特征。对于多个相邻图像,我们计算每个相邻图像与当前图像之间的连接特征,并取它们的平均值。最后,我们使用文献[17]中的代价生成模块生成一个形状为\((B, L, H, W)\)的代价体。由于平面扫描立体匹配考虑了相邻RGB帧之间的运动,它为后续模块带来了相对约束,并确保了深度预测的整体一致性。
3.2 用于聚合的点云特征融合
由于平面扫描立体匹配仅考虑相对深度尺度,上述代价体仍然缺乏场景几何的绝对尺度信息,无法做出准确预测。我们利用更准确的背景深度,并设计了一个轻量级点网络模块,将尺度信息传递给深度预测网络。背景深度是通过在原始深度数据中排除透明物体的掩码区域获得的。与之前直接将原始深度数据与RGB数据组合形成四通道输入的方法不同,我们将背景深度数据转换为点云。点云的优势在于它包含关于场景的空间信息,比如物体的排列。我们使用公式(2)从背景深度数据生成点云。
\[P(u, v) = (K^{-1}p)d \tag{2}\]给定像素坐标\((u, v)\)及其深度\(d\),\(p\)是其齐次坐标,\(P(\cdot)\)表示其点云向量,可使用相机的内参矩阵\(K\)计算得到。通过文献[27, 28]中提出的一维卷积和特征变换模块,我们得到一个每个点云具有\(S\)通道的矩阵,该矩阵表示包含空间信息的点云特征。受文献[17]的启发,我们将点云特征与来自当前图像的RGB特征融合到上述代价体中。点云特征被重塑为\((B, S, H, W)\),并在第二通道与RGB特征相结合,得到形状为\((B, S + C, H, W)\)的融合特征。对于代价体中的每个平面,代价数值\((B, 1, H, W)\)在第二维上与这些融合特征连接。之后,一个扩张卷积上下文网络,如文献[17]中的结构,将累积细节并将组合后的代价体还原为原始形状,以便将其输入到预测网络中。
3.3 深度预测
深度预测模块使用softmax函数在第二维上,将形状为\((B, L, H, W)\)的代价体转换为形状同样为\((B, L, H, W)\)的概率体。概率体表示每个像素位于每个深度平面上的概率。然后,我们使用文献[18]中提出的方法回归最终的深度结果。正如文献[31]中提出的,透明物体的表面法线可以提供更强的视觉线索,我们设计了一个与深度预测分支并行的法线预测分支,以进一步约束深度预测分支的结果。在这个分支中,我们使用公式(3)将深度平面转换为法线平面。
\[n_i = \langle P_i^w \times P_i^h \rangle; \tag{3}\]其中\(P(\cdot)\)表示公式(2)中定义的点云向量。\(P^w\)定义为\(P(u + 1, v) - P(u, v)\),\(P^h\)定义为\(P(u, v + 1) - P(u, v)\)。为了在法向量图中累积更多细节,在求和之前,我们使用另一个五层卷积网络来处理法向量图(4)。
\[n = \sum_{i = 0}^{L} \text{CNN}(n_i \cdot \sigma(l_i)) \tag{4}\]其中\(\sigma(l_i)\)是平面\(l_i\)的概率值。我们使用下面的损失函数(5)来训练模型:
\[\mathcal{L} = \|\hat{D} - D^*\|_H + \alpha\|\hat{N} - N^*\|_H \tag{5}\]其中,第一项表示深度损失,用于惩罚深度的不准确。\(\hat{D}\)和\(D^*\)分别表示真实深度和预测结果。与深度损失类似,第二项惩罚法线的不准确。\(\hat{N}\)和\(N^*\)分别表示真实法线和我们的预测结果。\(\|\cdot\|_H\)表示Huber范数函数。\(\alpha\)是权重参数。在实践中,我们发现透明物体的深度仅集中在几个相邻的平面上。如果我们在透明物体的掩码区域内使用损失函数训练模型,大多数平面没有得到有效惩罚,可能会在真实场景中导致错误的预测。为了能够在不同平面上回归准确的深度,我们对整个图像进行预测,但使用加权的最终损失来惩罚模型。我们在透明物体的掩码区域和未掩码区域计算损失函数(5)。最终损失定义为(6)。
\[Loss = \beta\mathcal{L}_{masked} + (1 - \beta)\mathcal{L}_{unmasked} \tag{6}\]\(\beta\)值越高,意味着我们相比于背景,更关注透明物体区域。
4 伪SLAM系统
算法1. 透明物体重建的伪SLAM
为了重建场景,我们将深度预测模型嵌入到先前的RGB-D SLAM框架ElasticFusion中。我们使用[45]中提出的预测网络来获取透明物体的掩码。通过该掩码,我们可以剥离真实场景中的错误深度数据,以获取背景的点云,这些点云可用于估计模型中的旋转矩阵、平移向量和聚合模块。整体算法如算法1所示。我们使用队列缓存先前步骤中已计算的结果,以提高伪SLAM系统的效率。
5 实验
5.1 数据创建
目前有许多透明物体数据集,例如ClearGrasp数据集[31]、TransCG数据集[8]、Omiverse Object数据集[44]。这些数据集均不包含图像序列。Zhu等人[45]提出了一个真实场景数据集,但其中不包含用于训练的真实深度数据。
由于不同视角之间的相关性是约束深度一致性的关键,我们选择创建一个合成视频数据集,而不是在现有数据集上训练。使用开源模型,我们在Blender中构建了不同的场景。我们创建了15个场景用于训练,5个场景用于验证。每个场景包含约300-400张RGB图像,以及真实相机轨迹、掩码和透明物体的深度。我们的数据集包含日常生活中各种基本玻璃物体:玻璃杯、高脚杯、酒杯和方形透明盒子。我们在数据集上进行了进一步的指标对比和重建评估,以展示我们方法的优势。为了测试模型的泛化能力,我们使用RealSense D435i RGB-D相机在真实场景中以30 Hz帧率和640x480分辨率记录了RGB图像和深度数据。每个场景包含约400-600帧图像和不同的透明物体。
5.2 实现细节
模型使用PyTorch框架实现。伪SLAM使用C++和Libtorch框架实现。所有实验在Intel i7-8700K CPU和两块NVIDIA GeForce GTX 1080Ti GPU上运行。初始化模型时,我们设置\(L=50\);初始化损失函数时,设置\(\alpha=0.5\),\(\beta=0.9\)。在训练前,我们将输入深度缩放到\([0, 1]\)范围以固定深度空间。对于训练过程,我们将训练图像和深度图的分辨率设置为320x240,并使用初始学习率为0.0002的Adam优化器。训练和验证时的批量大小为16。伪SLAM的处理速度平均约为15 FPS。实时性能的详细信息可参见补充材料。
5.3 深度估计评估
我们选择均方根误差(RMSE)、绝对相对误差(REL)、平均绝对误差(MAE)和阈值\(\delta\)作为评估预测深度图精度的主要指标。它们的定义如下:
RMSE:
\[\sqrt{\frac{1}{\vert \hat{\mathcal{M}}\vert } \sum_{d \in \hat{\mathcal{M}}} \|d - d^*\|^2}\]REL:
\[\frac{1}{\vert \hat{\mathcal{M}}\vert } \sum_{d \in \hat{\mathcal{M}}} \vert d - d^*\vert / d^*\]MAE:
\[\frac{1}{\vert \hat{\mathcal{M}}\vert } \sum_{d \in \hat{\mathcal{M}}} \vert d - d^*\vert\]阈值\(\delta\)是预测深度图中满足条件\(\text{Max} \left(\frac{d_i}{d_i^*}, \frac{d_i^*}{d_i} \right) < \delta\)的像素百分比。参照文献[31],\(\delta\)设置为1.05、1.10、1.25。\(\hat{\mathcal{M}}\)表示图像中透明物体的掩码。\(d\)和\(d^*\)分别表示真实深度数据和预测深度数据。注意,我们将范围[0, 3]之外的深度视为离相机太远,并将其剔除。
表1. 透明物体深度预测的指标对比结果。↑表示越高越好,↓表示越低越好。在评估之前,我们使用他们提供的预训练权重在我们的RGB-D视频数据集上重新训练了之前的网络。
在我们的指标比较中,我们使用它们配置文件中提供的默认训练参数,在我们的数据集上训练ClearGrasp、LIDF和TransCG模型。我们使用它们的验证API来计算这些指标。表1中的定量结果表明,与之前的透明物体深度预测方法相比,我们的模型在所有性能方面都有提升。
5.4 透明物体重建评估
表2. 所有验证场景中的轨迹评估结果。较低的结果表示透明物体的影响较小,深度预测精度较高。评估中的轨迹单位为米。
图4. 重建结果。从上到下分别是场景的RGB图像;ClearGrasp和TransCG的结果;我们的结果。我们的透明物体重建结果用红线框标出。(a)、(b)和(c)是我们数据集中的合成场景。(d)、(e)和(f)是RGB-D相机捕获的真实场景。
表3. 重建评估结果。我们使用[4]中提出的网格评估指标来对比场景的重建结果。与现有方法相比,我们的结果显示出显著提升。
我们在合成数据集和实际拍摄场景中对伪SLAM(同时定位与地图构建)方法进行了测试。在合成场景中,我们使用真实掩码以及相对运动\(R\)、\(t\)。在实际场景中,我们使用预测掩码和估计的运动。对于之前的透明物体深度预测方法,我们在伪SLAM流程中用它们的模型替换我们的模型来进行重建。重建结果的定性比较以及相机轨迹性能的定量比较见表2和图4。重建评估结果见表3。
为了基于我们的合成数据集计算相机轨迹,我们使用Elastic - Fusion提供的视觉里程计,而不是通过迭代最近点算法(ICP)进行初始估计。指标“ATE”表示绝对轨迹误差,“R.RPE”和“T.TPE”分别表示旋转/平移相对位姿误差。对于重建评估,我们使用文献[4]中建立的网格评估方法。我们将由真实RGB - D数据估计的相机轨迹和重建结果作为参考数据。我们将点云的重建结果与参考结果对齐,并使用Open3D库中的球旋转算法将它们转换为网格。由于LIDF方法没有为其模型提供推理API,我们跳过了对其重建性能的实验。
图4. 重建结果。从上到下分别是场景的RGB图像;ClearGrasp和TransCG的结果;我们的结果。我们的透明物体重建结果用红线框标出。(a)、(b)和(c)是我们数据集中的合成场景。(d)、(e)和(f)是RGB-D相机捕获的真实场景。
表2. 所有验证场景中的轨迹评估结果。较低的结果表示透明物体的影响较小,深度预测精度较高。评估中的轨迹单位为米。
表3. 重建评估结果。我们使用[4]中提出的网格评估指标来对比场景的重建结果。与现有方法相比,我们的结果显示出显著提升。
从图4中,我们可以看到我们在透明物体重建结果上的改进。在第1节中,我们已经讨论过,不同视图中一致的深度值对于透明物体的RGB - D重建至关重要。之前的深度预测方法在不同视图下对透明物体的深度预测表现不佳,即使使用了掩码。如第二行和第三行所示,透明物体的形状混乱,背景物体也受到透明物体错误预测深度的影响。相比之下,我们的方法可以显著改善透明物体的重建结果。表2和表3进一步展示了我们在指标性能上的改进。我们较低的重建评估误差意味着我们的重建结果中点云的位置接近真实的点云集合。
5.5 消融实验
表4. 表面法线预测模块和相机轨迹的消融实验。表中列出了在训练中是否使用表面法线预测模块或是否使用真实轨迹进行评估的指标。
图5. 高脚杯场景的深度数据可视化。从左到右分别是:真实深度、无表面法线预测模块训练的模型预测深度、有表面法线预测模块训练的模型预测深度。
法线预测:在表4中,我们比较了使用法线预测模块和不使用该模块的模型。表面法线提供了关于物体(尤其是透明物体)的大量几何信息。为了进一步利用几何信息调整概率体积,我们选择了一个额外的分支来利用模型生成的概率体积,而不是单独的法线预测模型。图5中的可视化结果显示,法线损失约束了深度预测结果,尤其是在物体的边缘部分。需要注意的是,边缘左侧的误差主要是由图像缩放引起的。通过额外的法线预测器,预测的深度更加准确。
表4. 表面法线预测模块和相机轨迹的消融实验。表中列出了在训练中是否使用表面法线预测模块或是否使用真实轨迹进行评估的指标。
相机轨迹:在合成数据集中,真实相机轨迹是已知的,通过它们可以轻松获取旋转矩阵和平移向量。在这种情况下,可以生成精确的代价体积。然而,在真实场景中需要预先估计相机轨迹。我们使用估计的相机轨迹而非真实轨迹在合成数据集中评估模型。结果如表4所示。没有真实相机轨迹时,结果变差,但由于合成数据噪声较少,结果仍然可观。
图6. 选择相邻图像数量的消融实验。我们测试了\(w\)从1到10的情况,以探究相邻图像数量对深度预测的影响及相应的时间消耗。
相邻帧数量:我们测试了模型在不同数量相邻输入图像下的性能,用\(w\)表示这一参数。在本实验中,我们测试了\(w\)从1到10时的RMSE、MAE和REL指标。结果如图6所示。需要注意的是,对于\(w=1\),我们将当前图像的副本作为其邻域,单位矩阵作为旋转矩阵,零矩阵作为平移向量。从图的左侧可以看出,更多的视角有助于减少代价体积中的噪声。从图的右侧可以看出,随着相邻图像数量的增加,推理时间迅速增长。在2视图情况下,推理时间约为0.2秒。每增加一个视图,生成代价体积的时间大约增加0.08秒。图中的拐点出现在\(w=2\)。\(w=1\)的结果较差,因为它未考虑相邻图像之间的相对运动。对于\(w \geq 2\),指标的增长趋势大幅放缓,但时间消耗仍在稳步增加。为了平衡运行时间和预测精度,我们在所有实验中选择\(w=2\)。
6 结论
与之前关于透明物体重建的工作相比,我们提出了一种无需场景先验知识的实时3D重建方法。我们的重建方法基于ElasticFusion,并结合了提出的基于立体的深度预测模型。在模型中,我们利用平面扫描立体方法,利用连续图像之间RGB信息的空间一致性,并将模型与背景深度的尺度信息融合。我们设计了一个表面法线预测分支,以进一步约束深度预测结果。实验表明,我们的模型提高了透明物体深度预测的指标,并且我们的3D重建方法在真实场景中的表现更优。
局限性:我们当前的数据集中缺乏某些类别的透明物体,例如玻璃制成的手工艺品,这些可以在后续研究中补充。我们的重建结果也显示出几何细节的不足。包含多个相互遮挡的透明物体的场景也难以通过我们的算法处理,这将是未来研究的重点。
7 致谢
本工作得到了中央高校基本科研业务费专项资金(南开大学,编号63233080)和国家自然科学基金(62132012)的支持。
评论