视觉定位概念_召回率_Top-K Recall,Loop Closure Recall(回环召回率),Localization Recall(定位召回率)

SLAM(Simultaneous Localization and Mapping)Visual Localization(视觉定位)图像检索(Image Retrieval) 中,召回率(Recall) 是衡量有多少应该匹配成功的样本最终被成功匹配的重要指标。

很多人容易把它和定位精度(Accuracy)、**匹配准确率(Precision)**混淆,其实它们关注的问题完全不同。


一、什么是召回率(Recall)

一句话:

所有真正可以匹配成功的图片(或位置)中,有多少最终被系统找出来了。

数学定义:

其中

  • TP(True Positive)

    • 正确找到的匹配
  • FN(False Negative)

    • 本来应该找到,但是漏掉了

因此

Recall = 找到了多少 / 应该找到多少


二、放到图像定位里面理解

假设一个地图中有100张关键帧。

当前相机来到一个位置。

实际上:

这一位置对应地图中的

复制代码
Frame 20
Frame 21
Frame 22
Frame 23
Frame 24

这5张都是正确匹配。

也就是说

Ground Truth:

复制代码
应该匹配:
20
21
22
23
24

现在你的Place Recognition算法(例如:

  • DBoW2
  • NetVLAD
  • SuperGlue
  • LightGlue
  • ORB匹配

返回:

复制代码
20
22
40

真正正确的是:

复制代码
20
22

漏掉的是

复制代码
21
23
24

因此

TP = 2

FN = 3

Recall

Recall=\\frac{2}{2+3}=40%

说明:

本来有5个正确位置,只找回了2个。


三、Recall为什么重要?

因为定位第一步通常都是:

复制代码
Query Image
        │
        ▼
Image Retrieval
        │
找到Top K候选帧
        │
Feature Matching
        │
PnP
        │
定位成功

如果第一步没找到真正的位置:

后面全部失败。

所以:

Retrieval Recall决定了定位成功率上限。


例如:

数据库

复制代码
10000 张图片

真正位置:

复制代码
Image 8765

你的Retrieval返回:

Top10

复制代码
123
8765
555
...

说明Recall成功。

如果返回:

复制代码
123
555
222

真正位置根本没出现。

那么:

PnP根本没有机会。

定位失败。


四、Top-K Recall

视觉定位最常用的是

复制代码
Recall@K

意思:

正确位置是否出现在前K个候选里面。

例如:

Top1

复制代码
8765

正确

Recall@1

成功


Top5

复制代码
12
35
8765
100
44

正确

Recall@5

成功


Top20

复制代码
...
8765
...

也成功。

所以一般论文都会写

复制代码
Recall@1

Recall@5

Recall@10

例如

算法 Recall@1 Recall@5
DBoW2 65% 81%
NetVLAD 84% 95%
MixVPR 92% 98%

意思就是:

例如

Recall@5 =95%

表示:

95%的查询图片,

真正位置都出现在前5个候选里面。


五、SLAM中的Recall

SLAM里面通常有两个Recall。


① Loop Closure Recall(回环召回率)

例如机器人:

复制代码
A → B → C → D → A

实际上:

存在一次回环。

Ground Truth:

复制代码
有1个Loop

算法检测:

复制代码
检测到了

Recall

100%

如果没有检测到

Recall

0%

如果100个回环,

找到90个

Recall

90%


② Localization Recall(定位召回率)

例如:

1000张Query图片

其中:

900张理论可以定位。

算法:

成功定位

850张。

Recall

很多定位论文都会写:

复制代码
Localization Recall

或者

复制代码
Pose Recall

六、Recall 和 Precision 区别

这是最容易混淆的。

假设返回:

复制代码
Top10

20
21
22
500
600
700
800
900
1000
1100

真正正确只有

复制代码
20
21
22

那么

TP=3

FP=7

Precision

Recall

假设真实只有

复制代码
20
21
22

全部找到了。

Recall

100%

说明:

虽然找回来全部正确图片,

但是混进很多错误图片。


另一种情况:

返回

复制代码
20

Precision

100%

因为只有一个,

还是正确。

Recall

只有

33%

因为另外两个漏掉了。

所以:

  • Precision:返回的结果有多"准",即返回的候选中有多少是真正正确的。
  • Recall:真正正确的目标找回了多少,即是否漏检。

七、视觉定位为什么更关心Recall?

定位一般流程:

复制代码
Image Retrieval
       ↓
Top100
       ↓
Feature Matching
       ↓
RANSAC
       ↓
PnP

只要真正位置进入:

复制代码
Top100

后面的几何验证(Feature Matching、RANSAC、PnP)就可以把错误候选逐步剔除。

因此定位系统更希望:

宁可多返回一些候选(Recall高),也不要漏掉真正的位置。

也就是说:

复制代码
高 Recall
        ↓
保证真正位置进入候选集
        ↓
几何验证负责去掉FP
        ↓
最终定位成功

因此在视觉定位论文中,经常看到:

复制代码
High Recall Retrieval

而不是

复制代码
High Precision Retrieval

八、SLAM/视觉定位中几个容易混淆的指标

指标 定义 越高越好 作用
Recall(召回率) 所有正确目标中找回多少 衡量漏检情况,是图像检索和回环检测最重要的指标之一
Precision(准确率) 返回结果中有多少是正确的 衡量误检情况,通常由后续几何验证进一步改善
Localization Success Rate(定位成功率) 成功估计位姿的查询占比 反映整个定位系统端到端性能
Pose Accuracy(位姿精度) 估计位姿与真实位姿的误差(平移、旋转) ✔(误差越小越好) 衡量定位结果是否足够精确
Inlier Ratio(内点率) 匹配点中通过几何一致性验证(如RANSAC)的比例 反映特征匹配质量

总结: 在图像匹配和 SLAM 中,Recall 的核心是"不漏掉正确位置" 。对于视觉定位来说,检索阶段通常以 Recall@K 为主要评价指标,因为只要真实位置进入 Top-K 候选,后续的特征匹配、RANSAC 和 PnP 就有机会完成准确定位;而如果真实位置在检索阶段就被漏掉(Recall 低),后续算法再优秀也无法恢复正确位姿。