[AdaLAM: Revisiting Handcrafted Outlier Detection](https://arxiv.org/pdf/2006.04250.pdf)
简介
- 是一个图片空间相关性的验证算法
- 与Ransac 类似,可以用于剔除图片特征匹配的外点
- 不需要训练模型
- 效果拔群
Main Contributions
- 结合过去的空间匹配算法,提出一种快速、鲁棒、高并行的空间匹配算法
- 提出一种比较新颖的算法,可以自适应放宽匹配算法的各种假设,以尽可能利用到可获取的图像信息
在此之前的几种外点剔除流派
- Simple filter(启发式方法)
ratio-test
邻近检测(nearest check)
汉明距离计算,利用汉明距离剔除非常明显的外点 - Local neighborhoods
该方法假设邻近区域的匹配点应该与其周围的匹配点具有一致的关系(几何关系,或者其他关系)这里的一致性可以是
co-neighboring constraint或者是强制设定一个局部变换关系(我这里理解成是E,F,H矩阵) - Geometric verification
几何校验是基于全局转变矩阵(Global Transformation),认为两张图片上的所有点都满足一种变换关系(相似变换,仿射变换,单应性变换,基础变换)
这里变换关系的计算一般采用RANSAC以及基于RANSAC各种改进算法(从概率角度进行采样改进,加入Sequential probability Ratio test 使得迭代更加有效,加入局部优化 等等 这里是一个大坑,有待挖掘,有兴趣可以看原文的引用) - learned methods
从 图像数据集中提取出一个潜在一致的模型(参考文献有点多,应该是基于深度学习的一系列方法)
AdaLAM算法流程
核心步骤:
- 输入假设匹配对(包含大量外点)
- 选择一定数量的种子点(seed points),这些种子点分布较好,且置信度较高
- 以种子点为中心,画圆,圆内的所有匹配点认为是局部一致的
- 对于每一个圆,用局部仿射变换验证一致性,最后输出一组内点
这里截个图:
具体的细节
对应文中(Hierarchical Adaptive Affine Verification)
局限和核心假设
两张图片观测同一平面会使得 落在同一平面上的特征点具有单应性,可以在图像空间中利用仿射变换进行很好的近似。该仿射变换提供了较强的几何约束,通过这个几何约束可以滤除外点。
上述假设往往因为以下原因不成立:
- 3D点所在的平面可能不平坦
- 检测到的点可能并不邻近
- 匹配关键点可能实际上并非是完全相同的3D点投影过来的
- 错误的去畸变模型会引入非线性性
3. Hierarchical Adaptive Affine Verification
3.2. Seed point selection
目标: 选择一组置信度较高且分布较好的关键点作为种子点
选择方法: 首先给关键点分配一个置信度分数(confident score),对于置信分数较低的点做半径R为圆内的局部非极大值抑制(local non-maximum suppression),如果该点为极大值,那么将会被人为是种子点(seed point)。其中分数由 ratio-test给出(PS: 计算匹配时其实时从1对多的点对匹配中找到描述子距离最小的作为最终匹配结果,而ratio-test给的分数指的是 score = 最小距离/次小距离 这个分数越小,说明这个点没有其他模棱两可的备胎,也就时置信度越高)
ratio-test 需要了解
3.3. Local neighborhood selection and filtering
文中用 correspondence描述 匹配关系,下文翻译成 匹配对
令:
S
i
=
(
X
1
S
i
,
X
2
S
i
)
S_i = (X_1^{S_i},X_2^{S_i})
Si=(X1Si,X2Si)
表示种子点对的相似关系,包含一个相似变换(similarity transformation)
a
S
i
=
a
1
s
i
−
a
2
S
i
σ
S
i
=
σ
1
S
i
/
σ
2
S
i
其
中
a
S
i
表
示
o
r
i
e
n
t
a
t
i
o
n
,
σ
S
i
表
示
S
c
a
l
e
a^{S_i} = a_1^{s_i}-a_2^{S_i} \\ \sigma^{S_i} = \sigma_1^{S_i}/\sigma_2^{S_i}\\其中a^{S_i}表示orientation ,\sigma^{S_i} 表示Scale
aSi=a1si−a2SiσSi=σ1Si/σ2Si其中aSi表示orientation,σSi表示Scale
同时:
N
i
∈
M
\mathcal{N_i}\in \mathcal{M}
Ni∈M
表示落在种子点i附近的匹配关键点, 当满足以下关系时:
∥
X
i
S
i
−
X
1
∥
≤
λ
R
1
∧
∥
X
2
S
i
−
X
2
∥
≤
λ
R
2
∣
a
S
i
−
a
p
∣
≤
t
a
∧
∣
l
n
(
σ
S
i
σ
p
)
∣
≤
t
σ
\Vert X_i^{S_i}-X_1\Vert \le \lambda{R_1} \land \Vert X_2^{S_i}-X_2\Vert\le \lambda{R_{2}}\\ \lvert a^{S_i}-a^{p}\rvert \le t_a\land\lvert ln(\frac{\sigma^{S_i}}{\sigma^p})\rvert \le t_{\sigma}
∥XiSi−X1∥≤λR1∧∥X2Si−X2∥≤λR2∣aSi−ap∣≤ta∧∣ln(σpσSi)∣≤tσ
其中:
(
p
1
,
p
2
)
=
(
(
X
1
,
d
1
,
a
1
,
σ
1
)
,
(
X
2
,
d
2
,
a
2
,
σ
2
)
)
∈
M
a
p
=
a
2
−
a
1
,
σ
p
=
σ
2
/
σ
1
t
a
,
t
σ
表
示
o
r
i
e
n
t
a
t
i
o
n
和
s
c
a
l
e
的
置
信
阈
R
1
,
R
2
为
寻
找
与
种
子
点
相
关
关
键
点
的
半
径
,
λ
是
一
个
超
参
数
(p_1,p_2) = ((X_1,d_1,a_1,\sigma_1),(X_2,d_2,a_2,\sigma_2))\in \mathcal{M}\\ a^p = a_2-a_1, \sigma^p = \sigma_2/\sigma_1\\ t_a,t_{\sigma}表示orientation和scale的置信阈\\ R_1,R_2为寻找与种子点相关关键点的半径,\lambda是一个超参数
(p1,p2)=((X1,d1,a1,σ1),(X2,d2,a2,σ2))∈Map=a2−a1,σp=σ2/σ1ta,tσ表示orientation和scale的置信阈R1,R2为寻找与种子点相关关键点的半径,λ是一个超参数
上述公式的逻辑是,根据seed point及其对应半径,查找一组临近点
N
\mathcal{N}
N,对于
N
\mathcal{N}
N内的所有匹配点进行orientation和scale的验证,从而确定该点是否与seed point是一致的,进而过滤掉一部分不一致点.
3.4. Adaptive Affine Verification
对于每组邻近点
N
i
∈
M
\mathcal{N_i}\in \mathcal{M}
Ni∈M,采用RANSAC算法来找到一个仿射变换矩阵
A
i
j
A_i^{j}
Aij其中j表示第k次迭代。残差方程如下:
r
k
(
A
i
j
)
=
∥
A
i
j
X
1
k
−
X
2
k
∥
r_k(A^j_i) = \lVert A^j_iX_1^k-X_2^k\rVert
rk(Aij)=∥AijX1k−X2k∥
文中提到,仿射矩阵指示描述两帧之间位姿关系的一部分,因此没法给残差项设定一个固定阈值去判断这些点是否为内点,受到这篇论文 的启发。
如果
H
o
\mathcal{H_o}
Ho是一个包含统一外点的假设,我们将
r
k
r_k
rk映射到一个 confidence measure
c
k
c_k
ck 上 <–看不懂,要看引用文献:
c
k
(
R
)
=
P
E
H
o
[
P
]
=
P
∣
R
∣
r
k
2
R
2
2
c_k(\mathcal{R}) = \frac{P}{\Bbb{E}_{\mathcal{H}_o}[P]}=\frac{P}{\lvert\mathcal{R}\rvert \frac{r^2_k}{R^2_2}}
ck(R)=EHo[P]P=∣R∣R22rk2P
其中
P
P
P是当假设匹配对
k
k
k为最坏匹配点对时,内点的数量,
R
\mathcal{R}
R是一组残差,如果从0开始对k进行标序,那么
P
=
k
+
1
P=k+1
P=k+1
这部分算是本论文比较核心的部分,需要细看引用文献
3.5. Implementation details
这里给出一些实现的细节,首先说了利用GPU对每个种子点及其附近点
N
\mathcal{N}
N计算RANSAC,并且由于在邻近点选择的时候不受其他种子点的影响,因此也会用GPU做并行计算加速。
R
=
w
h
π
r
a
R = \sqrt{\frac{wh}{\pi r_a}}
R=πrawh
其中
r
a
=
100
,
w
h
为
图
像
面
积
,
超
参
数
λ
=
4
ra=100, wh为图像面积,超参数\lambda = 4
ra=100,wh为图像面积,超参数λ=4,RANSAC迭代次数被固定为128,对于SIFT关键点,
t
σ
=
1.5
,
t
a
=
3
0
o
另
外
,
t
c
=
200
t_\sigma=1.5,t_a = 30^{\mathrm{o}}另外,t_c=200
tσ=1.5,ta=30o另外,tc=200<–暂不清楚