图片

题目:浅谈视觉定位(visual localization)技术 我想这个名字可能更加漂亮:visual localization revisited

本文主要内容源自NAVER LAB Europe的Martin Humenberger于2020年撰写的“Methods for visual localization”一文,本文对其进行概括并根据近两年的进展对其进行引申介绍,主要介绍了视觉定位领域的面临的主要问题,主要方法以及未来发展趋势。

背景

视觉定位(visual localization)是一种使用相机图像估计相机位姿的技术。这项技术可以用于不少基于位置(位姿)的应用如机器人、自动驾驶以及AR/MR等。众所周知Global navigation satellite systems (GNSS) (如 GPS)是一种最为常见的提供位置信息的技术,该技术已发展多年,但至今依然存在诸多限制。如室内场景、隧道场景 GPS 不可用,与此同时民用 GPS 的精度堪忧(位置误差1-2m,角度误差10度),很难满足上述应用的需求。

由于卫星定位存在上述缺点,后来研究人员尝试使用相机图像进行室内定位以及室外高精。例如,自动驾驶领域,车载摄像头能够提供非常丰富的视觉信息,这些信息作为查询图(query image)可以与提前构建好的视觉地图数据库进行数据关联。此处的视觉地图可以是3D重建结果(3D点以及描述子,带有位姿的相机图像、2D点信息)、带有位姿的相机图像以及深度学习模型。查询图借助已经构建好的数据关联可以解算出其相对于“世界”的位姿。

注意视觉定位(Visual Localization, 后简称VLOC)与同时建图与定位(Simultaneous Localization and Mapping, SLAM )技术的相似与不同点。 前者是一种基于地图的定位(map-based localization)算法,其特点在定位而非地图,定位是指仅给定一幅图像,通过某种方式使用地图信息解算出拍摄这幅图像的相机6DoF位姿;此外,上文已经提到,其输入是一幅图像,不再依靠其他传感器(如IMU,GPS等)信息辅助定位;地图可以由SFM(structure-from-motion)或者由SLAM得到,但由于SFM生成的地图精度较高,相机在更高精度的地图中定位的精度会更高,所以实际中的建图算法主要采用SFM(如COLMAP,OpenMVG,OpenSfM等)。而SLAM的特点在于同时建图与定位,即在实时感知环境的同时定位相机在的环境中的位姿,为了达到实时性的要求,采用了局部BA,追踪局部地图,滑动窗口优化等策略;为精度要求,除使用相机图像数据,还可以使用IMU,GPS,LiDAR多等传感器数据,该部分非本文重点,不做展开。

下表展示了SLAM/SFM/VLOC的差异点(展开说Todo)。

Approach SLAM SFM VLOC
full-name Simutinously Localization And Mapping Structure from Motion Visual Localization
inputs image / IMU / GPS etc. image (+GPS) image only
map online offline offline SFM
speed fast (realtime) slow fast
accuracy middle high high
method ORB-SLAM, VINS, GVINS, LOAM COLMAP, OpenMVG, VisualSFM, Meshroom, CaptureReality HLoc, Kapture, Inloc, Pixloc
datasets Euroc, TUM VI - Aachen Day-Night, CMU seasons, RobotCar

视觉定位的挑战

基于HF-Net的层次定位技术

图片

基于视觉信息的定位技术存在如下难点或者挑战:

  1. 光照变化;如建图时使用了白天的图像,而定位(查询)时使用的是晚上的图像,二者在图像外观上有比较明显的差异,而这种差异对于数据关联而言是较为困难的;
  2. 动态场景;比如说自动驾驶场景中的行人汽车等运动的非静态场景对于定位而言可能存在一定影响;
  3. 季节变化;比如说夏天建图,冬天定位,这种情况下场景同样也出现了较大的外观差异,势必影响;
  4. 视角变化;比如说查询图像与建图图像之间存在一定的视角变化,导致二者数据关联数量降低,定位精度势必降低;
  5. 物体遮挡;人以及物体等对场景的遮挡,这一点与动态场景类似,但并非完全一致;这一点强调的是查询图与静态场景的数据关联由于遮挡减少;

视觉定位挑战赛榜单

因此,目前有不少数据集用于评估不同定位算法在上述挑战场景中的表现。例如视觉定位挑战基准 The Visual Localization Benchmark,该基准中包括不同季节、光照等因素的数据集以及众多在这些数据集中的评分。另外,随着视觉定位领域的火速发展,我们可以在线找到非常多有用的资料,例如Torsten Sattler等人组织的Large-Scale Visual Localization系列课程,非常值得学习。最后,由于目前存在着大量的数据集,他们并不是同一个研究机构或者公司公开的,所以他们采用了不尽相同的数据格式,研究者在处理这些数据集时存在一定的阻力,为了解决这个问题,Kapture应运而生,借助这个工具可以比较方便地对多种数据集数据格式进行转换以及将不同的视觉地图格式之间进行转换(比如说COLMAP到OpenMVG或者相反)。

方案介绍

迄今为止,有非常多的算法用于解决视觉定位中存在的难点,下图非常概括地给出了视觉定位的方案。

图片

最为经典的方式是基于结构信息的定位方法(structure based),这种方式以来场景地图,如场景的3D点云地图信息,通过构建查询图局部特征与地图点云之间的数据关联对相机进行定位。但是当地图比较大时,这种直接一步关联方式的效率就会变得非常低,此时可以借助图像检索(image retrieval)减小地图匹配的规模,提高定位效率,这种方式称为层次定位(hierarchical localization 或者 structure based using image retrieval)。另外一种方式是直接使用图像检索的结果进行定位,如对 top k 召回帧位姿加权,可见这种方式并不需要地图的结构信息,定位速度取决于图像检索效率,一般情况下很快,但位姿精度并不准确。此外,场景点回归(scene point/coordinate regression)也是视觉定位中进来较火的研究领域,这种方式可以通过神经网络直接学习到2D像素位置与3D点之间的数据关联,之后采用与基于结构的方法类似的算法(如PNP1)解算位姿。目前场景点回归算法会使用场景的3D点用作训练,但在推理时并不需要。最后,绝对位姿回归(absolute pose regression)是一种使用神经网络进行端到端学习相机位姿的算法。

再来回顾一下,我们可以得到如下表格。这些方法在泛化能力以及精度上存在一定差异。此外,一些方式依赖3D地图而有些方法仅仅需要带有位姿(pose-tagged)的相机图像即可。使用场景的3D重建的信息的优势在于,位姿的精度可以做到非常高;劣势在于有些情况下场景的3D结构较为难以获取以及较难维护,如场景变化后的场景模型更新较为复杂。

Approach 3D map Pros Cons
Structure-based yes Perform very well in most scenarios Challenging in large environments in terms of processing time and memory consumption
Structure-based with image retrieval yes Improve speed and robustness for large-scale settings Quality heavily relies on image retrieval
Scene point regression yes/no Very accurate position in small-scale settings To be improved in large environments
Absolute pose regression no Fast pose approximation, can be trained for certain challenges Low accuracy
Pose interpolation no Fast and lightweight Quality relies heavily on image retrieval and only provides a rough pose
Relative pose estimation no Fast and lightweight Quality relies heavily on image retrieval and, e.g., local feature matches or a DNN used for relative pose estimation

接下来针对上述提及的每种方法进行介绍。

基于结构信息的方案(structure based)

前文中已经提到,这是一种最经典的用于相机定位的算法。这种算法需要提前建好场景的3D地图,然后使用相机拍摄的图像来定位相机位姿2 3 4 5 6 7。场景地图的构建包括数据库相机图像位姿估计以及输出3D模型,此处的数据是指在同一个场景中不同位置以及角度拍摄的一系列图像, 完成地图构建的算法为structure from motion (SFM) 3 7。首先图像对(图像俩俩匹配或者根据外观相似性选择相似的图像匹配)进行像素级的局部特征匹配8 9,随后进行几何校验过滤错误匹配,经过这个过程之后可以得到场景图(scene graph),该场景图记录着图像之间的连接关系。随后使用诸如对极几何结算位姿并进行三角化 (triangulation)地图点,具体过程可以参考COLMAP7

注意到上述数据关联中提到的局部特征,它是由图像中像素或者亚像素级别的坐标点以及用以描述该特征的描述子组成。早期的特征提取器是由人工精心设计的,如非常经典的的 SIFT10(它不止包括特征提取器,也包括描述子)。但是 SIFT 这种人工特征存在比较明显的缺陷,如对光照变化、季节变化等因素较为敏感,此时的特征匹配性能不佳。如今,数据驱动的端到端学习的局部特征 R2D2 9,D2-Net11,SuperPoint12,Key.Net13,SuperGlue14(准确来说,SuperGlue是一种特征匹配器) 等被提出,在上述挑战场景中的表现远超传统特征(文献8 15 16 中介绍了局部特征的发展过程)。

(TODO): 补充局部特征检测与匹配算法。特征匹配挑战赛榜单收录了目前最新的特征点提取+匹配的算法,关于该比赛更加详细的介绍参考笔者之前写的笔记

需要注意的是,构建好的定位地图中的3D点不仅包含其3D坐标,也关联着其描述子(一个3D点可能关联着多个建图时的2D局部特征,也就是说它可能有多个描述子,可采用求均值或者其他加权的方式得到3D点的描述子,todo: 补充一下描述子聚合的方式)。查询图像的2D点与地图的3D点通过描述子进行数据关联(KNN匹配)。一旦有了2D-3D匹配,查询相机的位姿可以通过perspective-n-point (PNP) 1算法进行求解。由于2D-3D可能存在外点(outliers),PNP通常以RANSAC17 18的方式进行以提升位姿解算鲁棒性。

现代RANSAC发展较快,如 MAGSAC19, MAGSAC++20,DEGESAC 等针对原有RANSAC无法有效应对外点率较大的情况,目前最先进的RANSAC算法可以在内点率非常低时求解出model。Dmytro Mishkin 等人在CVPR 2020 开展了 RANSAC tutorial,如下是该教程的视频讲解。

不难想象,当场景非常大时地图会变得非常巨大,如用于视觉定位的数据集Aachen-Day-Night 21 中包含70W~250W个3D点(不同数量的图像对得到的3D点数量也不同),然而这仅仅是德国亚琛老中城的一个小片区,如果将其范围扩展至整个城市,3D点的规模会变得非常巨大。可以想象,当在如此巨大的场景中进行2D-3D数据关联会变得非常慢,Torsten Sattler等人提出了Active Search22 23使用了一种基于词袋的方式进行匹配加速并设计了一种匹配优先级策略得到更多的2D-3D匹配对。

对于数据库的路标点,我们将其3D描述子通过离线的方式“分配”到视觉字典中;对于每一查询帧,我们采用同样的方式将其2D描述子“分配”到视觉字典中。于是我们可以得到图像上每个2D特征点的候选匹配点(3D),此时每个2D点可能有多个候选的3D匹配,根据候选匹配点的多少按照升序进行排列。具体的,对于每一个特征 f,遍历隶属于同一个单词内的2个最近邻,如 p1, p2,之后根据ratio-test决定该匹配是否有效。但Sattler等人认为,视觉字典其实会引入“量化误差”,该误差会限制2D-3D匹配数量。一种通用的做法是将一个特征分配到多个单词,但作者设计了一种更加高效的策略“Active Search”(ECCV 2012)Active Search 的基本思想为:一旦某个特征f与某个路标点p被确定为匹配对,那么处在p邻域的路标点(N_3D个点)同样可能被查询图像观测到。于是作者设计了一种3D-2D匹配方式,即主动地寻找p邻域中的路标点(N_3D个点)与图像中的2D特征点的匹配关系。

3D-2D 匹配流程,其中 $p’$ 表示 $p$ 邻域中的某个3D点, $D(p’)$ 表示该点的描述子(可能有很多个), $F$ 表示的查询图上的特征, $l$ 表示字典树的第 $l$ 层, $C$ 表示匹配对集合; $f1,f2$ 表示图像中的特征,AW表示activate visual words,AW记录了 $p’$ 不同的特征描述子隶属的单词(及其所在的层数);对于每一个AW记录的单词 $w$ ,同样获得图像特征中属于该单词w的特征们 $F(w)$ ,接下来就是遍历所有属于该单词的3D特征描述子 $d$ 与图像特征 $f$ 之间的距离,记录两个最小距离 $dist1,dist2$ 以及对应的图像特征 $f1,f2$ ;随后使用 $ratio-test$ 判定该匹配是否有效;如果有效且原有的匹配集合中没有包含该匹配则加入该匹配关系;若原有匹配集合已经包含该匹配,则进一步判断,如果2D-3D匹配中没有该匹配则根据描述子距离是否更小进行替换。

此外,基于图像检索的方式会进一步加速该匹配过程,即首先检索全图中与查询图最接近的区域,随后查询图与该区域进行数据关联24 25,更为详细的介绍见后一小节。

另外一种构建2D-3D数据关联的方式是使用 scene point regression,其中的2D-3D 数据关联可以由DNN26 27 28 29 或者随机森林30得到。

SFM 建图

Reconstruction quality reference

上述表格列举了SFM以及MVS的算法比较,虽然种类繁多,但目前使用最为广泛的是Johannes等人于2016年提出的COLMAP。SFM的流程可以概括为:首先进行特征提取/匹配以及后续的几何校验滤出外点,经过上述步骤可以得到所谓的场景图(Scene Graph),该场景图是后续的增量式的基础(提供数据关联等信息)。增量式重建中需要非常仔细地挑选两帧进行重建,在图像进行注册(即定位当前帧在地图中的位姿)之前,需要进行三角化场景点/滤出外点以及BA优化当前的模型。更为详细的介绍见笔者写的阅读报告,此处不再赘述。CODE, PDF.

COLMAP处理流程

不过现有对SFM经常会面对诸多问题:

  • 重复场景下特征关联异常,导致相机错误注册;
  • 特征点提取误差的存在导致点云质量不高;
  • TODO

为了应对建图过程中重复场景(歧义)带来的相机错误注册的问题,来自CVG实验室的 Lixin Xue 基于COLMAP实现了目前几种应对该问题的建图方案,如下图所示的是原版COLMAP与修正错误注册后相机位姿以及场景点云,此时使用的修正异常注册算法为 ReliableResectioning

sfm

其基本思想是:由于相似的外观在不同视角经常出现,所以此时极其容易导致这些重复特征有较长的track-length,因此作者在建图时选择下一帧时设计了新的选择策略,即给long-tracks特征较小的权重,而short-tracks特征较大权重,用于计算两张图之间的“歧异度调整匹配”(ambiguity-adjusted match, AAM,越大越好),优先注册非歧义的那些图像。

sfm

此外,由于2D点提取误差的存在,导致SFM重建得到的3D点云位置不够准确,并随着3D点越远(深度越大),该误差越大。为应对该问题,Sarlin 等人提出了 pixel-perfect-sfm (PDF)。

左图表示在真实2D-3D关联上添加不同程度的高斯噪声后对视觉定位精度对影响,数据集使用的是Aachen-Day-Night。实验表明,准确的2D-3D关联对于解算得到高精度相机位姿至关重要,即使出现几个像素的误差,这足以导致几米的误差。但是实际上,如右图所示的匹配对,其匹配关系在像素级别上有较大误差

Sarlin 认为,在 3D 重建任务中,跨视角的可复检的特征点检测尤为重要。原有的 SFM 框架中(COLMAP),特征提取之后其位置并不会发生改变,若这个过程中出现了一定误差,势必造成后续几何结构的误差累计。于是作者针对以上 SFM 框架中的两个步骤进行了优化:1. 特征匹配后使用 Featuremetric 对特征点位置进行优化;2. 增量重建过程中通过类似的 Featuremetric 进行 BA(重投影误差变为 Featuremetric 误差)。本文算法通过大量实验验证,其在 SFM 任务中表现非常优秀。

上图展示了 pixel-perfect-sfm 算法优化框架,它可在任何基于局部特征点的SFM流程中使用,首先使用CNN提取图像特征图(dense features),根据稀疏的特征匹配得到初始的tracks,调整每一个track对应的特征点在图像中的位置;根据调整后的位置进行SFM重建,重建过程中的BA优化残差由重投影误差变为Featuremetric误差,关于本文更加详细的解读参考链接

其他

基于结构信息+图像召回方案(structure based using image retrieval)

这种方式也就是所谓的层次定位(hierarchical localization)方案。简单来说就是这种方式将定位过程分成两步,第一步是图像召回(检索),第二步类似于使用结构信息定位。第二步与上一节内容一致,此处省略,本节重点介绍图像检索在视觉定位技术中是如何使用的。

概念

图片

图像召回(检索),是从一系列图像数据库中以某种准则挑选出与查询图像最为相似的图像,通常在做完图像检索之后还会加一个重排序步骤(re-ranking,如query- expansion)。在视觉定位任务中的图像召回(检索),按照召回标准可以被解释为查询帧(query)“看到”了与数据库帧(database)相同的场景(如,某栋建筑、地标),即我们通常讲的路标识别landmark retrieval)或者数据库图像在查询图像拍摄地点附近拍摄的,并不一定“看到”相同的场景,这种召回标准叫做地点识别geo-localization/place recognition )。二者的差异可以通过上图进行说明,其中 $I_q$ 为查询图像,$I_1$和$I_3$为landmark retrieval,因为3张图像中包括相同的场景Aachen Cathedral。$I_1$ 和 $I_2$ 为geo-localization,因为这两张图距离 $I_q$ 的拍摄地很近,尽管图像外观并不相似,但在地理坐标是比较接近的。

Benchmarking Image Retrieval for Visual Localization ref: Benchmarking Image Retrieval for Visual Localization, https://arxiv.org/pdf/2011.11946.pdf

功能

图像召回使得视觉定位能够在超大场景中定位成为可能,同时可以使建图定位更加鲁棒(重定位)。之所以可以做的这一点,是因为图像召回可以非常显著地减少视觉定位的搜索空间,即查询图需要与多大范围地图的进行关联,有了图像召回,可以将这个范围缩小,降低数据关联耗时。此外,仅仅使用召回的图像(无需建图)也可以直接进行定位,即选择使用top k召回图像进行位姿加权31 32, 这要求在存储图像时,需要同时存储拍摄图像时相机位姿信息或者GPS地理坐标。此外,若已知相机内参,查询帧与召回的参考帧之间的相对位姿就可以非常方便地通过局部特征关联解算出来。此外,当已知召回的参考帧绝对位姿,那么查询帧的绝对位姿就可以通过上述相对位姿推演出33 34

算法

过去十年,图像召回算法使用最多的是基于词袋(bag of words)的表示,但目前图像召回使用最多的是基于深度学习的方式35 36,这是由于深度特征中对图像的高层级的语义特征进行了编码(encode),这些信息非常适合用作图像召回任务。当网络使用ranking loss37 38 39专门对图像召回任务进行训练后,召回性能可以进一步得到提升。文献40 中介绍了一项关于图像召回在视觉定位任务中基准测试。作者在3个定位任务(使用全局3D地图,在线构建局部3D地图以及位姿插值)中评价评价了4种常见的图像表征方式。

国际顶级视觉会议 ICCV 从2014年至今开展了多次关于场景识别与视觉定位相关任务的介绍,这是2021年开展了的 Large-Scale Visual Localization Tutorial,其中 Giorgos Tolias进行了 Image Retrieval & Visual Representation 的介绍,内容较为详细,推荐一看。

下文对图像检索算法进行介绍。

视觉定位任务中图像召回(检索)通常是指实例级的检索IIR (Instance leval Image Retrieval),与之对应的是类别级图像检索CIR (Category leval Image Retrieval)。前者表示检索特定的图像,如埃菲尔铁塔、乐山大佛等;而后者是指检索一个类别的图形,如塔、佛像,至于到底是哪个塔以及哪个佛像不加区分。至于为何视觉定位任务中使用实例级别图像,原因是显而易见的,因为检索到图像之后,我们就可以大致清楚拍摄查询图像的相机可能与拍摄检索图像的相机的位姿是比较接近的,可以获得一个非常粗暴的定位结果,或者查询图像要与检索到的图像进行局部特征级的匹配并进行位姿解算得到精细化的位姿,从这个意义上讲非实例级的匹配是没有意义的

图片

接下来详细对目前图像检索策略进行介绍,上图展示了IIR的发展脉络。整体而言,目前基于深度学习的IIR方法可以分为Off-the-shelf models(网络参数固定)以及Fine-tuned Models(网络参数调整)两个领域(后文进行简介),各自领域内衍生出诸多具有代表性的算法。例如,off-the shelf models中MAC系列(MAC/R-MAC等),fine-tuned models中的NetVLADDELGHOW等。IIR的趋势在fine-tined models方向发展,主干网络从传统的CNN网络转向Transformer,注意力机制可进一步提升网络性能,面向大规模图像召回任务的无监督学习将会成为以后的主流。

自从2012年 AlexNet问世以来,深度学习便在各研究方向进行探索,迄今为止,不少于百篇在IIR领域的优秀研究工作纷纷涌现。值得说明的是,虽然论文中的方法很多,但其大体上可以总结为如下图像召回流程。

图片

整体上看,图像召回任务可以分为三个主要步骤:深度特征提取(deep feature extraction)、特征嵌入与聚合(Feature Embedding and Aggregation)以及特征匹配(Feature Matching)或者叫做候选重排序(Re-ranking)

  • 深度特征提取

该步骤主要利用神经网络强大的特征提取能力提取图像的特征,将RGB/灰度图映射为一个多维张量。此处的网络可以直接在原始图像上提取特征,这种方式称为single-pass feedforward;也可以在原始图像的patches上进行提取,此处涉及多种如上图所示的patches的设计方式,这种方式称为multi-pass feedforward。常用的特征提取网络(作为backbone)有AlexNet, VGGNetGoogLeNetResNet等。 对于single-pass feedforward,网络的输入是一张图像,输出是一个高维张量 $C×H×W$ ,若将 $H$ 和 $W$ 维度展开,可得到$C\times(H \times W)$,即 $C$ 个长度为 $H×W$ 的向量; 对于multi-pass feedforward,网络的输入是M个patches,输出是M个高维张量集合; 值得说明的是,这里的特征提取网络根据其权重是否进行调整可以分划分为无参数调整网络(off-the-shelf models)以及参数调整网络(fine-tune models)。

  • 特征嵌入与聚合

该步骤主要目的是进一步提升特征的可辨别性以及获得最终的全局或者局部特征。

如选定特征嵌入方式为BoW,对于single-pass feedforward的输出的数据特征根据预先训练好的字典可以分配到 $K$ 个类别,之后统计每个类别出现的频次构建基于词袋的全局特征;我们将这个过程公式化,令局部特征为 $X = { x_1, x_2, x_3, x_T}$ ,字典(或者码本)为 $C = { c_1,c_2, c_3, c_K}$ ,则每个聚类中心的聚合特征为 $g(c_k) = \frac{1}{T} \Sigma_{t = 1}^{T}$ ,则全局描述子为所有类别中数量的集合: $G_{bow} = [g(c_1), g(c_2), g(c_3), g(c_K)]$,其维度为 $K$ 。对于VLAD,只是在计算的 产生了差异,VLAD统计了局部特征距离聚类中心的$L1$距离(计算残差),将类内特征的所有残差累加并归一化得到 ,所有的类别 组合起来得到 ,维度为 $D×K$ ,其中 $D$ 为每个局部特征的维度, $K$ 为聚类类别数量。

图片

上图展示了如何将网络得到高维特征图转换成一维向量的过程。以 GeM 41为例,其具体形式如下表示:

\[\mathbf{f}^{(g)}=\left[\mathrm{f}_1^{(g)} \ldots \mathrm{f}_k^{(g)} \ldots \mathrm{f}_K^{(g)}\right]^{\top}, \quad \mathrm{f}_k^{(g)}=\left(\frac{1}{\left|\mathcal{X}_k\right|} \sum_{x \in \mathcal{X}_k} x^{p_k}\right)^{\frac{1}{p_k}}\]

其中 $\mathbf{f}^{(g)}$ 维度为 $K \times 1$, $\mathcal{X}_k$ 表示第 $k \in [1,C]$ 层特征图, $p_k$ 表示常量系数( $p$ 范数),不同的 $p$ 会导致网络关注区域的差异,下图展示了这种差异。

此外,注意力机制可以被视作一种特征聚合,核心在于使用attention map强调最为相关的特征。而注意力机制中根据得到注意力图的差异可以分为无参数(non-parametric下图ab)与有参数注意力(parametric下图cd)。

图片

对于无参数的注意力,这种注意力机制较为直接地使用了DCNN输出层的feature maps,随后采用channel-wise(上图a)或者spatial-wise pooling(上图b)得到attention vector或者attention map; 对于有参数的注意力,通过网络学习得到注意力向量(上图c)或者注意力图(上图d)。 对于特征嵌入,hashing提供了一种新的思路,它可以将冗长的深度学习特征变换为紧凑的数据表示形式,这对于全局召回任务非常友好。

  • 特征匹配/候选重排序 得到图像的全局或者局部描述之后,需要找到其在database中对应的match-lists。对于全局特征,可以使用欧氏距离、汉明距离或者其他距离度量对全局特征的相似度进行度量。对于局部特征,可以使用特征匹配+RANSAC或者ASMK的方式判定相似度。通常情况下,为了提升效率,首先使用全局描述子获得候选的match-lists之后,再使用re-ranking调整lists。

参考两篇综述文章:

BoW

VLAD

NetVLAD

http://cmp.felk.cvut.cz/cnnimageretrieval/

ASMK

DELF & DELG

基于位姿回归的方案(Pose regression-based)

最近,随着深度学习在图像分类,语义分割,图像召回以及其他视觉任务的成功应用,那么基于深度学习的视觉定位也成为了可能。方式比较粗暴,输入一张RGB图像,网络端到端回归出拍摄这张图像的相机位姿。基于low level特征可用于一些较为通用的视觉任务(如图像分类)的假设,一些研究者认为这些特征中同样也encode着位姿的某些信息,所以他们建议使用预训练模型通过迁移学习的的方式进行位姿估计任务。

图片

例如,大名鼎鼎的PoseNet42 修改了分类任务CNN网络结构的任务头,如将VGG或者ResNet的softmax层替换成全联接(FC)层。如上图所示,网络对平移量与旋转量分别进行回归。

直接通过端到端的方式的进行绝对位姿回归的拥有诸多益处。首先,位姿回归并不需要复杂的特征工程,它仅依赖于深度网络的强大的编码能力,能够有效应对光照变化以及视角变化。其次,与基于3D特征的定位方法相比,位姿回归需要更小的内存并且拥有常数级的推理时间(查询图像尺寸固定)。最后,迁移学习能够使得网络能在中等规模数据集中高效训练。但是,PoseNet精度低是硬伤,相比于基于3D结构信息定位的方式的误差大了一个数量级。

为降低定位误差,一些算法针对PoseNet存在的问题进行改进,如使用新的损失函数38, 新增长短期记忆层(LSTM),新增数据集或者信息其他传感器观测43等。为了进一步提升性能,VLocNet44提出了一种同时学习绝对位姿以及相对位姿的算法, VLocNet++45通过语义分割辅助进一步的提升精度。

然而,端到端的学习位姿通常会使结果陷入局部最优,因为它与场景坐标紧密耦合,网络可以看作是地图(场景)的一种压缩,并不具备泛化能力。

目前也有一些混合位姿估计算法将学习的目标转向视觉定位中的某个环节,而非使用端到端的方式,并将其与传统的图像检索和基于结构信息定位的算法结合。例如DSAC46 集合约束,它的目标聚焦在局部的视觉任务中,如2D-3D数据关联。虽然这种方式可以较大幅度提升位姿精度,但学习的模型仍然是场景相关的,并不具备泛化能力。为了提升泛化能力,SANet47提出了一种场景无关的视觉定位算法,该模型利用图像召回 top k 图像稠密MVS获得的三维点云的几何结构进行相机位姿回归。

其他

辅助位姿结算 pixloc / BANET

NeRF based

秦通博士写的这篇NeRF-base SLAM综述值得一读,其中列举了自从2020年以来nerf用于位姿估计的几篇工作,如inerf,ba

结论展望

  • 最近的基准测试和定位挑战结果表明,基于几何的方法仍然优于端到端方法。然而,值得注意的是,为了达到最佳性能,纯几何学流程中的几个模块被深度学习的方案所取代,如局部和全局特征提取。事实上,基于深度网络的表征比手工制作的特征更有优势,能够较好地应对各种变化;
  • 当我们的目的只是为了获得一个粗略的位置时,存粹的基于图像召回(检索)的方式是一个低成本的解决方案,例如geo-localization
  • 当三维模型或点云都不可用时,位姿回归的方式仍然有效;
  • 为了应对的视觉定位中的挑战,使用场景的语义信息(物体、建筑或景观)是一种较好的手段。例如,人们可以使用语义类别(如树、建筑、街道)来改善局部特征的匹配48 49,或者使用物体进行定位50 51 52。Weinzaepfel等人53提出建立一个感兴趣区域物体的数据库,并直接回归查询图像中检测到的物体与它们在三维空间表征的局部特征匹配。由于汽车、人甚至树木等动态区域给视觉定位带来了挑战,人们也可以在视觉定位中忽略这些区域9 3
  • 此外,未来方向还包括:改进局部和全局特征,利用多相机系统和图像序列,以及为绝对和相对相机姿势回归增加更好的泛化能力。

参考

  1. Laurent Kneip, Davide Scaramuzza, and Roland Siegwart. A Novel Parametrization of the Perspective-three-point Problem for a Direct Computation of Absolute Camera Position and Orientation. In CVPR, 2011.  2

  2. T. Sattler, B. Leibe, and L. Kobbelt. Fast image-based localization using direct 2d-to-3d matching. In ICCV, 2011. 

  3. Pierre Moulon, Pascal Monasse, and Renaud Marlet. Global Fusion of Relative Motions for Robust, Accurate and Scalable Structure from Motion. In ICCV, 2013.  2 3

  4. Torsten Sattler, Bastian Leibe, and Leif Kobbelt. Efficient & Effective Prioritized Matching for Large-Scale Image-Based Localization. PAMI, 39(9):1744–1756, 2017. 

  5. Liu Liu, Hongdong Li, and Yuchao Dai. Efficient Global 2D-3D Matching for CameraLocalization in a Large-Scale 3D Map. In ICCV, 2017. 

  6. H. Taira, M. Okutomi, T. Sattler, M. Cimpoi, M. Pollefeys, J. Sivic, T. Pajdla, and A. Torii. InLoc: Indoor Visual Localization with Dense Matching and View Synthesis. PAMI, 2019. 

  7. Johannes L. Schonberger and Jan-Michael Frahm. Structure-from-motion Revisited. In CVPR, 2016.  2 3

  8. Gabriela Csurka, Christopher R. Dance, and Martin Humenberger. From Handcrafted to Deep Local Invariant Features. arXiv, 1807.10254, 2018.  2

  9. Revaud Jerome, Philippe Weinzaepfel, Cesar De Souza, and Martin Humenberger.R2D2: Reliable and Repeatable Detectors and Descriptors. In NeurIPS, 2019.  2 3

  10. David G. Lowe. Distinctive Image Features from Scale-invariant Keypoints. IJCV, 60(2):91–110, 2004. 

  11. Mihai Dusmanu, Ignacio Rocco, Tomas Pajdla, Marc Pollefeys, Josef Sivic, Akihiko Torii, and Torsten Sattler. D2-Net: a Trainable CNN for Joint Description and Detection of Local Features. In CVPR, 2019. 

  12. Daniel DeTone, Tomasz Malisiewicz, and Andrew Rabinovich. SuperPoint: Self-Supervised Interest Point Detection and Description. In CVPR Workshops, 2018. 

  13. Axel Barroso-Laguna, Edgar Riba, Daniel Ponsa, Krystian Mikolajczyk. Key.Net: Keypoint detection by handcrafted and learned cnn filters. ICCV 2019. PDF, Code 

  14. Paul-Edouard Sarlin, Daniel DeTone, Tomasz Malisiewicz, and Andrew Rabinovich. SuperGlue: Learning Feature Matching with Graph Neural Networks. In CVPR, 2020. 

  15. Johannes Lutz Schonberger, Hans Hardmeier, Torsten Sattler, and Marc Pollefeys. Comparative Evaluation of Hand-Crafted and Learned Local Features. In CVPR, 2017. 

  16. Ma Jiayi et.al. Image Matching from Handcrafted to Deep Features: A Survey. International Journal of Computer Vision (IJCV 2020) 

  17. M. Fischler and R. Bolles. Random Sampling Consensus: A Paradigm for Model Fitting with Application to Image Analysis and Automated Cartography. Communications of the ACM, 24:381–395, 1981. 

  18. O. Chum and J. Matas. Optimal Randomized RANSAC. PAMI, 30(8):1472 –1482, 2008. 

  19. Barath Daniel, Matas Jiri, Noskova Jana. MAGSAC: marginalizing sample consensus, CVPR 2019. 

  20. Barath Daniel, Noskova Jana, Ivashechkin Maksym, Matas Jiri. MAGSAC++: a fast, reliable and accurate robust estimator, CVPR 2020. 

  21. Torsten Sattler, Will Maddern, Carl Toft, Akihiko Torii, Lars Hammarstrand, Erik Stenborg, Daniel Safari, Masatoshi Okutomi, Marc Pollefeys, Josef Sivic, Fredrik Kahl, and Tomas Pajdla. Benchmarking 6DoF Outdoor Visual Localization in Changing Conditions. In CVPR, 2018. 

  22. Sattler, Torsten, Bastian Leibe, and Leif Kobbelt. Improving image-based localization by active correspondence search. ECCV 2012. PDF 

  23. Image-Based Localization, https://www.graphics.rwth-aachen.de/software/image-localization 

  24. Martin Humenberger, Yohann Cabon, Nicolas Guerin, Julien Morat, Jerome Revaud, Philippe Rerole, Noe Pion, Cesar de Souza, Vincent Leroy, and Gabriela Csurka. Robust Image Retrieval-based Visual Localization using Kapture. arXiv:2007.13867, 2020. 

  25. Paul-Edouard Sarlin, Cesar Cadena, Roland Siegwart, and Marcin Dymczyk. From Coarse to Fine: Robust Hierarchical Localization at Large Scale. In CVPR, 2019. 

  26. Eric Brachmann and Carsten Rother. Learning less is more – 6d camera localization via 3d surface regression. In CVPR, 2018. 

  27. Eric Brachmann and Carsten Rother. Expert sample consensus applied to camera re-localization. In ICCV, 2019. 

  28. Xiaotian Li, Shuzhe Wang, Yi Zhao, Jakob Verbeek, and Juho Kannala. Hierarchical scene coordinate classification and regression for visual localization. In CVPR, 2020. 

  29. Eric Brachmann and Carsten Rother. Visual camera re-localization from rgb and rgb-d images using dsac, arXiv, 2020. 

  30. Jamie Shotton, Ben Glocker, Christopher Zach, Shahram Izadi, Antonio Criminisi, and Andrew Fitzgibbon. Scene Coordinate Regression Forests for Camera Relocalization in RGB-D Images. In CVPR, 2013. 

  31. Akihiko Torii, Josef Sivic, and Tomas Pajdla. Visual Localization by Linear Combination of Image Descriptors. In ICCV Workshops , 2011. 

  32. Torsten Sattler, Qunjie Zhou, Marc Pollefeys, and Laura Leal-Taixe. Understanding the Limitations of CNN-based Absolute Camera Pose Regression. In CVPR, 2019. 

  33. Wei Zhang and Jana Kosecka. Image Based Localization in Urban Environments. In 3DPVT, 2006. 

  34. Qunjie Zhou, Torsten Sattler, Marc Pollefeys, and Laura Leal-Taixe. To Learn or not to Learn: Visual Localization from Essential Matrices. ICRA, 2020. 

  35. Relja Arandjelovic, Petr Gronat, Akihiko Torii, Tomas Pajdla, and Josef Sivic. NetVLAD: CNN Architecture for Weakly Supervised Place Recognition. In CVPR, 2016. 

  36. Akihiko Torii, Relja Arandjelovic, Josef Sivic, Masatoshi Okutomi, and Tomas Pajdla. 24/7 Place Recognition by View Synthesis. In CVPR, 2015. 

  37. Albert Gordo, Jon Almazan, Jerome Revaud, and Diane Larlus. End-to-End Learning of Deep Visual Representations for Image Retrieval. IJCV, 124:237—-254, 2017. 

  38. Alex Kendall and Roberto Cipolla. Geometric Loss Functions for Camera Pose Regression with Deep Learning. In CVPR, 2017.  2

  39. Jerome Revaud, Jon Almazan, Rafael Sampaio de Rezende, and Cesar Roberto de Souza. Learning with Average Precision: Training Image Retrieval with a Listwise Loss. In ICCV, 2019. 

  40. Noé Pion, Martin Humenberger, Gabriela Csurka, Yohann Cabon, and Torsten Sattler. Benchmarking Image Retrieval for Visual Localization. In 3DV, 2020

  41. Filip Radenovic, Giorgos Tolias, and Ondrej Chum. Fine-Tuning CNN Image Retrieval with no Human Annotation. PAMI, 41(7):1655–1668, 2019. PDF, Code 

  42. Alex Kendall, Matthew Grimes, and Roberto Cipolla. PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization. In ICCV, 2015. 

  43. Samarth Brahmbhatt, Jinwei Gu, Kihwan Kim, James Hays, and Jan Kautz. Geometry aware learning of maps for camera localization. In CVPR, 2018. 

  44. Abhinav Valada, Noha Radwan, and Wolfram Burgard. Deep auxiliary learning for visual localization and odometry. In ICRA, 2018. 

  45. N. Radwan, A. Valada, and W. Burgard. Vlocnet++: Deep multitask learning for semantic visual localization and odometry. RA-L, 3(4):4407–4414, 2018. 

  46. Eric Brachmann, Alexander Krull, Sebastian Nowozin, Jamie Shotton, Frank Michel, Stefan Gumhold, and Carsten Rother. DSAC – differentiable RANSAC for camera localization. In CVPR, 2017. 

  47. Luwei Yang, Ziqian Bai, Chengzhou Tang, Honghua Li, Yasutaka Furukawa, and Ping Tan. Sanet: Scene agnostic network for camera localization. In ECCV, 2019. 

  48. Carl Toft, Erik Stenborg, Lars Hammarstrand, Lucas Brynte, Marc Pollefeys, Torsten Sattler, and Fredrik Kahl. Semantic match consistency for long-term visual localization. In ECCV, 2018. 

  49. Nikolay Kobyshev, Hayko Riemenschneider, and Luc Van Gool. Matching features correctly through semantic understanding. In 3DV, 2014. 

  50. Renato F Salas-Moreno, Richard A Newcombe, Hauke Strasdat, Paul HJ Kelly, and Andrew J Davison. Slam++: Simultaneous localisation and mapping at the level of objects. In CVPR, 2013. 

  51. Andrea Cohen, Johannes L Schonberger, Pablo Speciale, Torsten Sattler, Jan-Michael Frahm, and Marc Pollefeys. Indoor-outdoor 3d reconstruction alignment. In ECCV, 2016. 

  52. Shervin Ardeshir, Amir Roshan Zamir, Alejandro Torroella, and Mubarak Shah. Gis-assisted object detection and geospatial localization. In ECCV, 2014. 

  53. Philippe Weinzaepfel, Gabriela Csurka, Yohann Cabon, and Martin Humenberger. Visual localization by learning objects-of-interest dense match regression. In CVPR, June 2019.