ICCV 2021 | COLMAP 优化建图组件 Pixel-Perfect SFM
快速获得最新干货
1. 背景
论文题目“Pixel-Perfect Structure-from-Motion with Featuremetric Refinement”(通过深度特征度量优化提高 SFM精度),发表于 ICCV 2021 (oral)。
注意到本文的作者是Paul‑Edouard Sarlin[1],该作者近两年发表了几项高质量的成果,如Superglue (CVPR 2020, 点击查看) / Pixloc (CVPR 2021, 点击查看)。
本文算法开源:
https://github.com/cvg/pixel-perfect-sfm,
作者提到,该算法作为COLMAP优化建图插件后续会集成到视觉定位工具包hloc[2]中。
论文:https://arxiv.org/abs/2108.08291
2. 摘要
在 3D 重建任务中,跨视角可复检的特征点提取尤为重要。原有的 SFM 框架中,特征提取之后其位置并不会发生改变,若这个提取过程中出现了误差(噪声干扰),势必造成后续几何结构的误差累计。
本文针对以上 SFM 框架中的两个步骤进行了优化:1. 特征匹配后使用 Featuremetric (深度特征度量)对特征点位置进行优化;2. 增量重建过程中通过类似的 Featuremetric 进行 BA(重投影误差变为 Featuremetric 误差)。本文算法通过大量实验验证,其在三角化/ SFM 等任务中的表现非常优秀。
3. 关键技术点
总览:本文的优化框架可在任何基于局部特征点的 SFM 流程中使用,首先使用 CNN 提取图像特征图(dense features),根据稀疏的特征匹配得到初始的 tracks(一个track是指,同一个3D点在不同图像中的2D观测),调整每一个 track 对应的特征点在图像中的位置;根据调整后的位置进行 SFM 重建,重建过程中的 BA 优化残差由重投影误差变为 Featuremetric 误差。
输入: 张 SFM 建图图像
输出:场景地图,包括 3D 点 ,相机位姿 ,相机内参
3.1. 特征位置调整
图像表征:图像的像素强度表示对视角/光照等因素的变化较为敏感,本文采用了 CNN feature 的方式表示一张图像。具体的,对于图像 ,使用S2DNet[3]提取到一个 维特征图 。注:特征图在通道上做了 归一化以提高泛化性,特征图的长宽与原图相同。
目标函数:对于每一个 track,调整它包含的 2D 特征点的位置,构建如下 featurematric 误差:
其中 表示特征点 与 之间的关联置信度,该置信度可由特征描述子的余弦距离 表示。可以看到,该过程对于每一个 track 是独立进行的,计算效率非常高。另外,为了保证例如视觉定位的性能,需要保持特征点复检率不发生较大改变,此时需要限制特征优化的最大变动距离 ,其中 为未调整的原始位置, 表示特征点位置调整的最大像素距离,实验中设为 8(pixels)。
3.2. BA 优化
上述过程完成了特征点位置的优化,随后进行几何校验以及增量或者全局重建。对于重建过程,本文设计了如下BA残差:
其中 为 Huber 核函数, 是某个固定的参考向量,它被定义为距离 track 观测均值特征最近点那个向量。
4. 实验
实验平台:8 CPU cores (Intel Xeon E5-2630v4) and one NVIDIA RTX 1080 Ti。
4.1. 3D 三角化
在给定相机内参与位姿的情况下评价本文算法的生成的地图点精度。上述表格中 Accuracy 表示 3D 点满足不同阈值的比例,Completeness 表示 3D 点被成功三角化并满足阈值的比例(占总3D点的比例)(类似于召回率)。本文算法相比于 Patch Flow[4],能够提升在严格阈值下的精度与完整度,且均比未优化的精度与完整度高。
4.2. 相机位姿估计
上述表格展示了平移量的 AUC 精度曲线,本文算法相比于未优化与 Patch Flow[4] 均有很大优势,SuperPoint 特征相比于其他特征点提取器提升力度明显。
4.3. SFM 性能
本文算法在两个任务中获得显著的性能提升,其中 stereo 任务评价的是图像之间的相对位姿精度,这对于全局 SFM 的位姿初值计算尤为重要;multi-view 任务是针对包含 张图像的集合进行增量位姿优化,该任务评价的是该集合内部相机的相对位姿。
下图是算法优化前后特征点位置的分布,可以看到本文方法得到的特征点位置(绿点)在不同视角间是保持一致的,而原始的特征点(蓝点)容易受到提取噪声的干扰,导致了 SFM 重投影的 2D 点(红点)出现了不一致性(错位)。
4.4. 其他
上图展示了本文算法进行 SFM 的耗时统计,相比 Patch Flow,本文算法耗时大幅度降低;在 Aachen Day-Night v1.1 数据集测试,7K 图像规模耗时小于 2 小时。
结论
提供了一种用于优化 SFM 建图精度的方案,能够大幅度提升建图精度与后续的视觉定位精度。 本文算法在进行 BA 时需要占用较大的运行内存空间(feature maps),特别是面对大规模场景重建时,具体使用时需权衡计算量与精度。
参考资料
[2] hloc: https://github.com/cvg/Hierarchical-Localization
[3] S2DNet: Learning accurate correspondences for sparse-todense feature matching, ECCV 2020, https://github.com/germain-hug/S2DNet-Minimal
独家重磅课程!
1、VIO课程:VIO灭霸:ORB-SLAM3源码详解,震撼上线!
2、图像三维重建课程(第2期):视觉几何三维重建教程(第2期):稠密重建,曲面重建,点云融合,纹理贴图
3、重磅来袭!基于LiDAR的多传感器融合SLAM 系列教程:LOAM、LeGO-LOAM、LIO-SAM
4、系统全面的相机标定课程:单目/鱼眼/双目/阵列 相机标定:原理与实战
5、视觉SLAM必备基础(第2期):视觉SLAM必学基础:ORB-SLAM2源码详解
6、深度学习三维重建课程:基于深度学习的三维重建学习路线
7、激光定位+建图课程:激光SLAM怎么学?手把手教你Cartographer从入门到精通!
全国最棒的SLAM、三维视觉学习社区↓
技术交流微信群
— 版权声明 —