点击下方卡片,关注“3D视觉之心”公众号
>>点击进入→3D视觉之心技术交流群
3DGS助力变更检测
3D变更检测是指通过两组在不同时间获取的局部观测或对先前建模场景的新观测来识别环境中发生变化的物体或区域。这不仅可以适应短期内完全观察到的场景动态变化,还可以适应通常无法观察到的长期场景变化。长期变化对于机器人操作尤为重要,因为环境中的变化常常发生在不被完全察觉或监控的情况下。
传统方法依赖于手工设计的技术,比如体素化、多视角立体和图像变形,以识别未对齐图像中的变化并升至3D。这些方法对遮挡和光照变化特别敏感,尤其是在两组图像间存在较大视角差异时。
基于NeRF的解决方案已在有限范围内进行了探索。然而,由于NeRF的基于光线投射的渲染计算成本高昂,这些方法受到限制。相比之下,3DGS提供了更高效的替代方案,能够在实时渲染中实现与NeRF相当或更高的质量。
3DGS-CD[1]利用3DGS作为场景表示来识别3D场景中的物体移除、插入和移动等变化,这些变化通过多视角图像进行观察。利用EfficientSAM的零样本分割能力,在相同视角下比较变化前后图像,将检测到的2D物体变化关联并融合,以获得准确的3D物体分割和姿态变化。
本方法具有以下主要优势:
可以处理稀疏的后变更图像输入,最低仅需一张新图像即可检测3D变化。 不需要深度传感器或单目深度估计器。 不依赖于预定义的物体类别、模型或物体检测器——物体仅在其被移动、移除或插入时被识别。 不需要用户指令,例如用户提供的点击或语言提示。
在公共和自收集的真实数据集上对本方法进行了评估,与最新的基于NeRF的变更检测方法相比,准确率最高提升14%,性能速度快三个数量级。这一显著的性能提升使其能够应用于广泛的实际场景,包括:
作为物体重建的提示进行物体移除 机器人工作空间复位 3DGS模型更新。
具体方法
我们的目标是通过两组RGB图像检测3D场景中的物体级变化:(1) 捕获场景初始静态状态的前变更图像 ;(2) 观察到场景变化状态的(可能稀疏的)后变更图像 。方法输出:(1) 3D分割 ;(2) 每个被重新排列物体的姿态变化 。
方法流程设计为模块化。图1所示包含以下子模块:
前变更3DGS训练 后变更相机定位 后变更视图的2D变化检测 后变更视图中的物体关联 物体3D分割 物体姿态变化估计和优化
前变更3DGS训练
首先在前变更图像集合 上训练3DGS模型 。遵循标准的3DGS训练流程,我们使用结构自运动(SfM)算法来估计前变更相机参数并生成稀疏点云,以此作为初始化3D高斯模型优化的基础。
在这一过程中,每个3D高斯由其位置(均值)、协方差矩阵、不透明度和颜色定义。为了从已知相机参数的视角渲染图像,这些3D高斯会被投影(即,进行splatting)到相机的2D图像平面。
后变更相机定位
在前变更3DGS的坐标系中,我们估计后变更图像集合 的相机姿态 。假设后变更图像所观察的大部分场景保持不变,我们使用标准的视觉定位流程将后变更相机定位到前变更生成的SfM点云上。
EfficientSAM嵌入用于2D变化检测
在后变更相机视角中,我们利用前变更的3DGS模型渲染RGB图像,并将其与捕获的后变更图像进行比较,以检测物体级别的变化。
首先使用EfficientSAM的图像嵌入粗略地检测2D变化(如图2 (a-c)所示)。SAM的图像嵌入包含丰富的语义信息,已证明能够支持稳健的零样本变化检测。然而,直接使用SAM的潜在空间进行探测计算成本较高。因此,我们采用轻量级的EfficientSAM编码器,对渲染和捕获的后变更图像进行图像嵌入提取,并对其余弦相似度图进行阈值处理以获得变化掩码:
其中, 表示在视图 上渲染的图像,图像嵌入在进行差异计算之前被放大至原始图像分辨率,且阈值由Otsu方法动态设定。
为了减小图像不对齐和3DGS浮动伪影对检测结果的影响,对渲染图像和捕获图像进行预对齐和模糊处理。
从变化掩码中,我们提取占据显著2D区域的轮廓,并使用其包围框在渲染和捕获的图像上查询EfficientSAM:
如图2 (d-e)所示,渲染图像上的高置信度2D分割用于重新排列物体的移出掩码(即先前位置),而捕获图像上的高置信度掩码则被识别为物体的移入掩码(即新位置):
其中 表示视图 中高置信度掩码的索引。
基于变化的物体关联
将后变更相机视角中的2D物体分割进行关联,以初始化3D中重新排列的物体。如图1所示,每个初始化的物体模板包含一个密集点云和一个稀疏视觉特征点云。这些模板通过逐步聚合跨视图的空间邻近且语义相似的物体分割来构建。
首先使用前变更3DGS渲染移出掩码内的深度,并将其反投影到3D,以获得每视角的部分物体点云:
其中 表示反投影函数, 表示3DGS深度渲染函数,如公式(2)所示。
我们还提取EfficientSAM嵌入,用于移出掩码的图像嵌入,并计算其L1中位数,以获得每视角每物体的代表性嵌入向量:
这些嵌入向量仅用于物体关联阶段,不会包含在物体模板中。
此外,我们在物体移出掩码内检测稀疏视觉特征(例如SuperPoint),并将其反投影到3D以形成每视角的稀疏特征点云:
其中 是特征检测函数, 用于将2D特征位置反投影到3D。
从第一个视角的物体移出掩码开始,我们逐视角地关联分割,匹配当前物体点云与下一个分割的最邻近点,以建立对象模板。
物体3D分割
通过多视角掩码融合来建立每个物体模板 的3D分割掩码 。
由于在稀疏的后变更视图中,物体移出掩码 可能不足以实现准确的融合,我们将移动和移除物体的点云投影到前变更图像上,并在其2D边界框内通过EfficientSAM查询额外的物体移出掩码。为了确保在遮挡情况下的鲁棒性,我们仅融合那些非遮挡或轻微遮挡的物体掩码,过滤掉那些包含少于80%投影2D物体点的掩码。
对于多视角掩码融合,我们在每个物体模板周围初始化一个3D二进制体素网格 。如果一个体素 投影到大部分物体的2D掩码中,该体素就被视为在物体内部:
其中 为投影函数, 为指示函数, 为所有具有高置信度、低遮挡掩码的图像索引。实时运行时,可以使用三线性插值快速查询物体体素网格的任意3D位置,当某点的占据概率大于0.5时,该点被视为在物体内部。
物体姿态变化估计
对于移动的物体,使用建立的2D-3D对应关系,并应用RANSAC-PnP算法来粗略估计物体的姿态变化。
全局姿态优化
通过基于合成的分析方法来优化初始的相机和物体姿态变化估计。
在初始估计的基础上,我们将前变更3DGS模型中的3D高斯体按估计的姿态变化进行变换,将物体3D掩码内的高斯体移至新的位置。然后,我们利用变换后的3D高斯体(记为 )在后变更视角下渲染图像,并将其与实际的后变更图像进行比较。我们冻结前变更的高斯参数,通过最小化渲染图像和捕获图像之间的光度误差来优化初始的姿态估计:
其中, 是视角 上物体移出掩码的反向掩码,用于排除物体重新排列后暴露出的先前未观察到的区域对前变更3DGS的影响。 表示3DGS训练损失。上述优化通过标准的梯度下降算法进行求解。
基于遮挡的掩码投影
给定一个前变更或后变更的评估图像,如何在准确并考虑遮挡的情况下将3D物体分割投影到该相机视角?
首先,估计并优化评估视角的相机姿态。如果评估图像是后变更图像,将占据的物体体素进行变换,并将这些体素投影到评估图像上,以获得初始掩码。然后,使用前变更3DGS模型 (针对前变更图像)或变换后的3DGS模型 (针对后变更图像)在初始掩码范围内渲染深度,并将其反投影至3D空间。在像素级别,通过判断反投影深度是否位于3D分割内部来检测遮挡。遮挡的像素会被重置为0,以获得最终的评估视角掩码。
实验效果
总结一下
3DGS-CD是一种基于3D Gaussian Splatting (3DGS) 的全新变更检测方法,用于识别复杂现实环境中的3D物体级变化。该方法显著提高了基于辐射场的3D变更检测的准确性和效率,使其能够应用于广泛的实际场景。
局限性
非刚性物体变化:将物体位姿变化表示为6自由度的刚性变换,这限制了其在非刚性物体变化方面的直接应用。然而,我们的方法是模块化设计的,除了物体位姿估计模块外,其他组件并不依赖于刚性物体假设。因此,若集成非刚性位姿估计方法,本方法可以适应非刚性物体的变化。
严重遮挡:如果变化在所有后变更视图中都被严重遮挡,该方法可能会失败。这可能导致物体模板不完整,进而导致物体的3D分割失败。为了减轻这一问题,建议在可能的情况下从尽量减少遮挡的角度捕捉后变更图像。
参考
[1] 3DGS-CD: 3D Gaussian Splatting-based Change Detection for Physical Object Rearrangement
本文仅做学术分享,论文汇总于『3D视觉之心知识星球』,欢迎加入交流!
扫码添加小助理进群
3D视觉之心知识星球主打3D感知全技术栈学习,星球内部形成了视觉/激光/多传感器融合SLAM、传感器标定、点云处理与重建、视觉三维重建、NeRF与Gaussian Splatting、结构光、工业视觉、高精地图等近15个全栈学习路线,每天分享干货、代码与论文,星球内嘉宾日常答疑解惑,交流工作与职场问题。