在 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 低),后续算法再优秀也无法恢复正确位姿。