CVPR 2021 | 基于稠密场景匹配的相机定位学习

Learning Camera Localization via Dense Scene Matching

论文、代码地址:在公众号「3D视觉工坊」,后台回复「相机定位」,即可直接下载。

相机定位算法是SLAM或者增强现实的一部分,主要有基于回归和基于结构两种,基于回归的定位算法精度较低,现在比较流行的是基于结构的相机定位算法,基于结构的定位算法有两个阶段:建立二维图像与三维场景点之间的对应关系;估计相机位姿。对于SLAM来说,相机定位算法属于前端工作,是视觉里程计的一部分,论文结合深度学习的方式对传统前端进行了优化,近几年神经网络与SLAM的结合越来越多,论文提出的算法是对特征匹配的方式进行了改进,通过卷积神经网络对图像进行特征提取,并用CNN进行特征点的匹配操作,很符合当前流行的SLAM趋势。

这篇文章中提到的DSM算法主要是对2D和3D场景进行匹配,计算特征点的坐标,再通过计算的坐标,使用PNP+RANSAC算法求解位姿。

求解相机的6D位姿时,传统方法是对图像和预建立的3D模型之间的兴趣点进行提取和匹配,近些年基于学习的算法将场景结构融进特殊的卷积神经网络中,从而能从RGB图像中估计稠密坐标。但大多数算法需要对新场景进行重新训练或重新自适应,而且由于网络容量有限很难处理大规模场景。

因此论文提出一种场新的景无关的相机定位算法,该算法使用了稠密场景匹配,在图像和场景间构造一个cost volume。通过一个CNN网络,生成cost volume和对应坐标,从而来估计稠密坐标,然后通过PNP算法求解相机位姿。此外,我们的方法还可以扩展到时域,从而在测试期间获得更好的性能提升。

论文重点研究了坐标映射回归算法,近年提出的算法大多需要一个共享的PointNet来单独对每个像素点进行预测,从而使得位姿估计准确性不高且计算量大。为解决这个问题,论文提出一种基于稠密场景匹配的场景无关相机定位网络。通过端到端的训练,cost volume会促使场景点与输入像素有很精确的联系。

而场景结构是不规则的,这使得每个图像像素的场景关联数量是不同的,因此我们提出一个简单有效的解决办法来统一所有cost volume的大小:排序并选择最佳的K个候选值,并将它们输入卷积神经网络进行稠密坐标回归。系统以单独的图像或视频序列作为查询输入。对于每一个查询图像,首先通过深度图像检索,检索出N个最近场景图像和相应的坐标映射。

接着,通过特征金字塔网络为每个查询和场景图像提取L层特征金字塔。然后用一种从粗到精的方式在每个金字塔层上设计一个稠密场景匹配来对分辨率和精度逐渐提高的稠密坐标映射进行回归,最后,通过标准的RANSAC+PNP算法从最佳的坐标映射估计相机位姿。DSM模块对坐标映射进行了估计并从初始中估计了更多的细节。

具体来说,DSM包括两个步骤:即cost volume 构造和坐标回归。首先构造了测量2D查询像素和场景点相关性的cost volume,然后从cost volume中回归了查询图像的稠密坐标映射。

在Cost Volume中包括两个过程:场景相关和时间相关。

场景相关性量测了查询图像和场景点的相似度,而时间相关量测了检索图像像素与检索视频片段中相邻两帧的相似性论文在训练时只使用场景相关,在测试时融合两者。

我们设计一个网络——来通过输入cost volume、坐标列和图像特征从而估计最终的场景坐标映射。首先将cost-coordinate volume输入一个包括1*1卷积层的网络,并生成一个坐标特征映射。

然后将坐标特征映射与图像特征映射进行拼接,输入另一个包括3*3卷积层的网络来估计最终的坐标映射。

论文在室内数据集7Scenes和室外数据集Cambridge Landmarks上进行了性能测评。对于7Scenes数据集,包括7中不同的场景,由手持式Kinect RGB-D相机进行捕捉。

Cambridge Landmarks数据集包括6种不同的室外场景,另外论文中是使用ScanNet 数据集进行训练的。

论文中将所提出的算法与当前较先进的算法进行对比,上面的表格显示出,论文的算法有较强的表现性。

另外还评估了相机轨迹,可以从图中看到,我们的单帧定位轨迹中包含一些异常值,而我们的视频定位能够去除大部分异常值。

对DSM、SANet以及DSAC++等算法进行坐标映射可视化。总的来看,由DSM生成的坐标映射在质量和细节性上更加优于其他两种算法。SANet通过球查询从搜索空间中随机抽取坐标,因此可能会丢失最佳匹配。

因此其坐标映射包括大量的残影。已建立3D视觉工坊-VSLAM微信交流群!想要进VSLAM学习交流群的同学,可以直接加微信号:CV_LAB。加的时候备注一下:VSLAM+学校+昵称,即可。

相关文章