相机重定位研究在已知环境中根据 RGB-D 图像推算相机的位置姿态,是实现场景建模、增强现实、机器人导航等技术的基础。近年来,最先进的研究工作通常 (A) 先记忆和推测所观测到不同对象的位置;(B) 再通过这些对象位置的相对关系反算自身位姿。对于 (A),被观测对象的位置信息通常表示为图像像素坐标和场景世界坐标之间的对应关系(2D/3D-3D correspondences),使用决策树、神经网络等机器学习模型实现;对于 (B),通常表示为局部坐标系与世界坐标系之间的刚体变换,使用 Perspective-n-Point、orthogonal Procrustes 等非机器学习算法求解。
核心问题
现实环境中包含着多种多样的动态成分,造成场景日新月异的变化。这些动态变化给相机重定位带来了麻烦:一方面,动态变化引入噪声导致对应关系匹配失败;另一方面,匹配正确的对象可能由于位置变化导致相机位姿求解错误。由于动态变化难以预料、无法穷尽,所以不易使用监督学习的方法直接学习场景中的动态变化。即使应用 RANSAC 等鲁棒估计算法,也难以准确求解动态场景下的相机位姿。因此,动态变化场景中的相机重定位面临挑战。
本文方法
为解决上述问题,我们提出基于空间划分的神经路由算法 NeuralRouting。我们的直观见解是,场景中的动态变化通常表现为几何对象的三维位置改变。于是,我们从几何角度出发建模场景空间。
首先,我们将场景三维空间进行层次划分构建树形结构(space partition tree),树的每个节点对应场景中的一个区域。随着树的层次加深,场景区域划分由粗粒度走向细粒度。基于区域划分,我们使用神经网络学习图像像素在树中的路由(routing),从而记忆视觉对象在不同粒度场景空间中的位置。得益于空间划分,通过显式地设定错误路由(模拟三维位置改变),我们可以构造动态变化对象的标注,以此学习场景中的动态变化,将其作为一个额外的路由分类,称为离群节点(outlier)。如果一个像素属于静态区域,它将被路由到树的叶子节点,以该节点对应的场景区域作为预测结果;如果一个像素属于动态区域,它将被路由到离群节点,被视为噪声点拒绝进行区域预测。因此,图像中的每个像素如果不被拒绝,那么就会被映射到场景空间,从而建立了图像像素和场景空间之间鲁棒的对应关系。通过这些对应关系,我们使用基于 Kabsch 算法的 RANSAC 框架求解相机位姿。