视觉位置识别(VPR)

**视觉位置识别(Visual Place Recognition)**回答一个问题:相机是否曾经到过这里? 给定当前图像和一个由此前访问过的地点组成的数据库,VPR检索出最可能的匹配项——这是回环检测中感知的那一半。它必须在视角变化、光照变化、天气变化以及适度场景变化的情况下依然成功,同时不能对看起来相似但实际上是不同地点的场景产生误判(感知混叠——第二条看起来一样的走廊是VPR的经典克星)。

经典方法是视觉词袋(Bag of Visual Words, BoVW)

  1. 离线阶段,使用k-means对大量局部描述子(例如ORB)进行聚类,构建一个包含 KK 个单词的视觉词汇表
  2. 将每张图像表示为在各视觉单词上的直方图,并用TF-IDF加权,使得普遍存在、信息量低的单词权重降低。
  3. 通过倒排索引(单词到包含它的图像的映射)检索候选项,即使有数千个关键帧,查找速度依然很快。

TF-IDF加权值得明确展示。若单词 kkNN 个数据库图像中的 nkn_k 个中出现,则其逆文档频率为 idfk=log(N/nk)\mathrm{idf}_k = \log(N / n_k):一个出现在每张走廊图像中的单词的 idf0\mathrm{idf} \approx 0,对相似度没有任何贡献,而一个稀有单词(一张独特的海报、一个不寻常的角落结构)则会主导得分。每张图像的加权直方图会被归一化,并用L1/L2或余弦相似度进行比较;由于有倒排索引,只有与查询图像至少共享一个单词的图像才会被处理。DBoW2/DBoW3通过分层词汇树(借助粗到细的下降过程以 O(logK)O(\log K) 而非 O(K)O(K) 的线性搜索完成单词分配)实现了这一思路,并被ORB-SLAM、VINS-Mono及许多其他系统所使用。FAB-MAP则是同一检索思想的经典概率化表述。

现代方法用学习得到的全局描述子取代了手工设计的直方图。NetVLAD的核心是对上述量化步骤的一种可微推广:它不再将每个局部特征 xi\mathbf{x}_i 硬性分配给最近的聚类中心,而是用权重 aˉk(xi)\bar{a}_k(\mathbf{x}_i) 进行软分配,并针对每个聚类中心 ck\mathbf{c}_k 累加残差

V(j,k)=iaˉk(xi)(xi(j)ck(j)),V(j, k) = \sum_i \bar{a}_k(\mathbf{x}_i)\, \left( x_i^{(j)} - c_k^{(j)} \right),

由此产生一个固定大小的描述子,经过归一化后,用带GPS标签的街景图像(“同一地点、不同外观”作为正样本)通过三元组损失进行端到端训练。Patch-NetVLAD增加了patch级别的重排序;HF-Net在一个网络中同时预测全局和局部特征,形成完整的识别加定位层级结构;而当前系统越来越多地使用基础模型特征(例如基于DINO的描述子)以获得对极端外观变化的鲁棒性。对于同一路线的重复穿越场景(配送机器人、轨道交通),基于序列的匹配——对描述子的短序列而非单张图像进行打分——可以免费获得巨大的鲁棒性提升。

无论是由什么方法产生候选项,SLAM系统都不会仅仅信任检索结果。标准流程是:检索出前k个候选项,然后进行几何验证——将局部特征与候选项进行匹配,在本质矩阵/PnP模型上运行RANSAC,并要求足够多的内点(ORB-SLAM还额外要求在共视关键帧之间保持一致性)。只有经过验证的匹配才会成为回环检测的边,因为一次误检就可能使地图折叠变形。

评估VPR:精确率优先于召回率

对于回环检测而言,这两类错误的代价极不对称。漏检回环(假阴性)只会造成一定的漂移校正损失——地图保持略微弯曲。而通过验证的错误回环(假阳性)则可能摧毁整个地图。因此用于SLAM的VPR被调优为几乎不惜任何召回率代价换取精确率:通常的做法是,系统只对一小部分真实的重访地点做出响应,但几乎从不对错误的地点做出响应,正因如此,论文中经常报告”100%精确率下的召回率”这一指标。这也是为什么多层防御机制(检索分数阈值 → 连续多次匹配上的时间/共视一致性 → 几何验证 → 鲁棒后端)不是过度谨慎,而是标准架构。

常见陷阱

对SLAM的意义

VPR是将视觉里程计升级为完整SLAM的关键:如果不能识别此前访问过的地点,漂移就永远无法被校正。同样的机制还提供了跟踪丢失后的重定位、“绑架机器人”问题的恢复、多会话地图融合,以及协作SLAM中机器人间的回环检测——SLAM系统几乎所有的”全局”能力都依赖于位置识别的可靠工作。

相关条目