前言: 前端提取数据,后端优化数据,但误差会累计,需要回环检测构建全局一致的地图;
以下是几种做法:
感知偏差(假阳性),感知变异(假阴性)

准确率(检测正确的数量 / 检测的总数量): P r e c i s i o n = T P / ( T P + F P ) Precision = TP/(TP+FP) Precision=TP/(TP+FP)
召回率(实际检测出来的数量 / 理应检测出来的数量): R e c a l l = T P / ( T P + F N ) Recall = TP/(TP+FN) Recall=TP/(TP+FN)
一般这两个数据呈矛盾,不取极端,只说在recall为多少,pre为多少时候效果最好,一般我们对P的要求更高。这是回环检测的严格性导致的。
比如现在有一本4个特征的字典:
D
=
[
x
1
,
x
2
,
x
3
,
x
4
]
D = [x_1,x_2,x_3,x_4]
D=[x1,x2,x3,x4]
而我们有两个
x
1
x_1
x1 一个
x
3
x_3
x3 特征的图像,那用词袋可以记为:
A
=
2
⋅
x
1
+
0
⋅
x
2
+
1
⋅
x
3
+
0
⋅
x
4
A = 2\cdot x_1 + 0\cdot x_2 + 1\cdot x_3 + 0\cdot x_4
A=2⋅x1+0⋅x2+1⋅x3+0⋅x4
它的向量就是
A
=
[
2
,
1
,
0
,
0
]
A = [2,1,0,0]
A=[2,1,0,0]
那么检测两个图像,则举例可以用
s ( a , b ) = 1 − 1 W ∣ ∣ a − b ∣ ∣ 1 s(a,b) = 1 - \frac{1}{W}||a-b||_1 s(a,b)=1−W1∣∣a−b∣∣1
L1范数,各元素绝对值之和,向量完全一样则得到1,是回环。
字典里的单词是某一类特征的组合,类似于一个聚类问题,UML(无监督学习常见问题)。

字典规模大,要在字典中查找单词属于哪个,逐个查找复杂度
O
(
n
)
O(n)
O(n),参考数据结构,这里有很多优化方法,这里以最简单的K叉树为例去优化字典结构:

又很像K-D树,聚类类中类,聚中聚哈哈。一棵深度为
d
d
d , 分支为
k
k
k 的树,可以容纳,
k
d
k^d
kd 单词。
两个概念:
在做字典时候,用IDF,假设所有特征总数为
n
n
n, 当前要统计的单词特征
w
i
w_i
wi 的数量为
n
i
n_i
ni, 则此单词的IDF为:
I
D
F
i
=
l
o
g
n
n
i
IDF_i = log \frac{n}{n_i}
IDFi=lognin
对一副图像而言,假设特征/单词
w
i
w_i
wi 出现了
n
i
n_i
ni 次,而这幅图一共出现的单词数量为
n
n
n,则TF为:
T
F
i
=
n
i
n
TF_i = \frac{n_i}{n}
TFi=nni
基于以上知识,一个图像的特征点可以对应到很多单词,则它的词袋(BOW)为:
A
=
(
w
1
,
η
1
)
,
(
w
2
,
η
2
)
,
.
.
.
,
(
w
N
,
η
N
)
⟺
v
A
A = {(w_1, \eta _1), (w_2, \eta _2), ... , (w_N, \eta _N)} \iff v_A
A=(w1,η1),(w2,η2),...,(wN,ηN)⟺vA
词袋中有很多0值,因为它不能包含字典中所有词。
计算两图词袋的差异(匹配度),给出一种方式(一范数),还有很多:
s
(
v
A
−
v
B
)
=
2
∑
i
=
1
N
∣
v
A
i
∣
+
∣
v
B
i
∣
−
∣
v
A
i
−
v
B
i
∣
s(v_A - v_B) = 2\sum^N_{i=1}|v_{Ai}| +|v_{Bi}|-|v_{Ai}-v_{Bi}|
s(vA−vB)=2i=1∑N∣vAi∣+∣vBi∣−∣vAi−vBi∣
对于回环检测,有几点可以提升的部分:
对于环境外观相似,比如教室同款椅子很多,利用先验的相似度(某时刻关键帧图像与上一时刻关键帧的相似性)进行归一化:
s ( v t , v t j ) ′ = s ( v t , v t j ) / s ( v t , v t − Δ t ) s(v_t,v_{tj})' = s(v_t,v_{tj})/s(v_t,v_{t-\Delta t}) s(vt,vtj)′=s(vt,vtj)/s(vt,vt−Δt)
- 相邻帧肯定满足回环检测条件,因为变化太小,所以回环检测的帧一般稀疏;
- 检测到的回环相邻帧意义不大,一帧就可以优化轨迹,因此会把相近的回环聚类成一类,使算法不会反复检测同一类。
词袋没有顺序,相机颠倒也是回环,如何验证?
回环缓存机制是一种,单词检测到的回环不足以构成约束,在一段时间内一直检测到的回环才是正确的回环(时间上的一致性检测)
图像连续变化产生不同类别,甚至可以认为是连续的;
图像间相似性可以利用深度学习方法;
词袋方法的物体识别能力不如神经网络,回环检测类似。