今天介绍欧洲NAVER LABS的研究员提出的一种可以用于视觉三维重建以及定位的算法,同时介绍一种通用三维重建的数据格式管理器Kapture,本方案获得CVPR视觉定位挑战赛第二名。
首先给出论文代码以及主页:
「code」: github.com/naver/kapture
「blog」: europe.naverlabs.com/blog/kapture
关注本公众号之后,后文回复「kapture」获取本文论文链接。
背景
视觉定位(Visual localization)是根据查询图像估计相机在地图中的位置和方向,而运动结构(Structure from motion,SFM)是建立这种视觉定位地图的最流行的方法之一,也是自主机器人和自动驾驶汽车等技术发展的基本组成部分。
然而,视觉定位和SfM研究的一个主要障碍在于「数据本身的格式」。虽然现在有很多比较好的公共数据集用于评估,但这些数据集都使用了不同的数据格式进行处理。因此,数据导入/导出必须经常进行修改,坐标系或相机参数几乎都必须进行转换。如果你想在一个流程中使用多种工具的组合,甚至需要进行更多的数据转换。另外,多数情况下现有的数据格式并不包括特定应用所需的数据类型,特别是涉及到WiFi或其他非图像传感器等数据时。
为了克服这一研究障碍,来自NAVER LABS的研究人员创建了「kapture」格式。Kapture包括了广泛的数据存储范围,并附带了多个格式转换器和数据处理工具。一方面,它将使公共数据集更容易使用,另一方面,它将使处理后的数据(如局部或全局特征以及匹配)很轻易地以一种通用格式进行共享。
为了促进未来在视觉定位、SfM、VSLAM和传感器融合等主题的研究和开发,开发者与研究界共享了Kapture。
主要贡献
- 数据转换器:Kapture提供了一组Python工具,用于在Kapture之间加载、保存和转换数据集。格式包括:COLMAP / OpenMVG / OpenSfM / bundler / image_folder / image_list和nvm,同时支持一些特定数据集的格式,如IDL_dataset_cvpr17 / RobotCar_Seasons / ROSbag cameras trackline / SILDa和virtual_gallery)。
- 示例教程:本文提供了两个基于COLMAP的完整视觉定位流程。第一个使用COLMAP SIFT特征和字典树的匹配,第二个使用本文自定义特征和匹配算法,目前在CVPR 2020视觉定位比赛中获得了第二名的成绩(第一名是以前介绍的Hloc SP SG)。
- 转换后的数据集:本文已经把一些数据集转换成了kapture格式。例如,kapture可用于处理视觉定位挑战中包含的所有数据集(Aachen Day-Night / Inloc / RobotCar Seasons / Extended CMU-Seasons / SILDa Weather and Time of Day datasets)。这些数据集中的图像旨在包含在实际驾驶情况下出现的众多具有挑战性的场景,包括一天中不同时间、一年中不同季节等变化。这些数据集还包括具有遮挡、运动模糊、极端视点变化和低纹理区域的图像。
主要流程
分为建图与定位,接下来会分别进行介绍。(小图可点击放大查看)
建图
建图过程如上图所示,与传统的SFM建图的思路并无明显区别,具体过程如下:
- 提取局部特征点以及描述子,本文支持深度学习特征R2D2;
- 提取图像全局描述子,本文支持深度学习全局描述AP-GeM;
- 利用图像召回的方式寻找即将进行的匹配对(为了加速匹配以及减轻错误匹配)
- 利用局部特征描述子进行图像匹配,寻找数据关联;
- 几何校验并利用COLMAP进行三角化,得到最终模型;
「R2D2」: github.com/naver/r2d2
「AP-GeM」: github.com/almazan/deep-image-retrieval
在Inloc数据集上建好的图如下所示:
定位
上图展示了定位的流程图,有几个步骤与建图过程颇为相似,具体过程可以概括为:
- 提取查询图像的全局与局部特征描述;
- 利用全局描述子进行图像召回,即找到建图序列中相似的图像;
- 查询图像与相似图像进行局部特征匹配,得到2D-2D数据关联,即获得2D-3D数据关联;
- 匹配几何校验并利用COLMAP进行全局位姿解算;
已支持的数据转换
目前已经支持的导入/出三维重建框架以及格式如下:
上述表格中各种符号的说明如下:
✓
: 支持,(✓)
部分支持,⨉
: 无实现,—
: 不支持.cam
: handle camera parameters, eg. intrisicsrig
: handle rig structure.img
: handle the path to images.trj
: handle trajectories, eg. poses.kpt
: handle image keypoints locations.dsc
: handle image keypoints descriptors.gft
: handle global image feature descriptors.p3D
: handle 3D point clouds.obs
: handle observations, ie. 3D-points / 2D keypoints correspondences.mch
: handle keypoints matches.
实验结果
定位测试
以下表格展示了在已有地图情况下对定位召回率对统计。
多全局描述组合
为了弥补AP-GeM全局描述不足的缺陷,本节实验的目的是找到一种全局描述后期融合策略,即不同全局描述符的组合优于每个描述符的单独表现。为此,本文用4个不同的全局描述符(AP-GeM / DenseVLAD / NetVLAD / DELG)的组合替换单一的全局描述符AP-GeM。
结论
本文提出了一种基于鲁棒全局特征的视觉定位方法,该方法利用图像检索和鲁棒局部特征进行精确的姿态解算。本文在多个具有挑战性的数据集上进行评估,在视觉定位挑战赛中排名第二(文中写的第一,后被Hloc SP SG超越)。
本文使用Python进行实现,使用统一的SFM以及视觉定位的格式kapture对数据进行管理。实验用的所有的数据集都是以这种格式提供的,本文希望通过这种方式促进未来大规模的场景视觉定位和SFM的研究。最后,本文证明了全局图像描述符的后期融合是改进本文方案定位性能的一个很有前景的方向。