RANSAC
摘自论文《Random Sample Consensus: A Paradigm for Model Fittign with Applications to Image Analysis and Automated Cartography》 1981
针对的问题
一种新的范例,RANSAC,用于将模型拟合到实验数据。
适用于处理有着较大比例误差的数据。
场景分析实际上是根据一组预定义的模型来解释测量数据。解释涉及两个步骤:首先,在可用模型中找到一个与数据的最佳匹配(分类问题);然后,为所选模型的参数计算最佳值(参数估计问题)。实际上,这两个问题不是独立的,通常需要解决参数估计问题才能解决分类问题。
场景分析,其数据来源于局部特征检测器,但它经常会出错: 1分类错误; 2测量错误。
当特征检测器错误地将图像的一部分识别为特征的出现时,就会发生分类错误。当特征检测器正确识别特征,但略微错误计算其参数之一(例如,其图像位置)时,就会发生测量错误。测量误差通常遵循正态分布,因此平滑假设适用于它们。但是,分类错误是严重错误,其影响要比测量错误大得多,并且不会平均。
算法过程
考虑一个模型至少需要
n
n
n个点以确定参数。一个数据点集合
P
P
P。从
P
P
P中随机选择一个含有n个点子集
S
1
S1
S1,实例化模型
M
1
M1
M1(计算出模型参数)。从
P
P
P中筛选出,在一定误差范围
e
e
e内满足模型
M
1
M1
M1的点集
S
1
∗
S1^*
S1∗,集合
S
1
∗
S1^*
S1∗被称为集合
S
1
S1
S1的consensus set(一致集?共识集?)。
如果点集
S
1
∗
S1^*
S1∗中点的数量高于阈值
t
t
t(阈值
t
t
t是
P
P
P中gross errors的函数),使用
S
1
∗
S1^*
S1∗计算新的模型
M
1
∗
M1^*
M1∗。
如果点集
S
1
∗
S1^*
S1∗不满足阈值
t
t
t,重选选择子集
S
2
S2
S2,重复上述过程,
N
N
N次尝试后仍未找到,模型失败。
然后论文的接下来部分讲述了如何计算:1数据点与模型的误差容忍
e
e
e。2 模型失败时的最大尝试次数
N
N
N。3 阈值
t
t
t。
DSAC
摘自论文:《DSAC - Differentiable RANSAC for Camera Localization》
RANSAC是鲁棒优化中的重要算法,并且是许多计算机视觉应用程序的重要组成部分。近年来,很多传统的手工算法已被深度学习算法所取代。但是,到目前为止,RANSAC都未能应用于深度学习中,关键在于它的假设选择过程不可微分。
背景
RANSAC的基本实现包括四个步骤:(i)通过对数据的最小子集进行采样来生成一组假设模型;(ii)测量 与假设模型一致的数据,作为假设模型的得分,例如,计算inliers数量;(iii)选择最佳评分的假设模型; (iv)使用其他数据点来完善所选假设,例如,使用所有inlier更新假设模型的参数。
我们将在相机定位的具体问题中符号化上述过程。
考虑RGB图像
I
I
I,包含由
i
i
i索引的像素,我们希望估计获得一个模型
h
~
\tilde{\mathbf{h}}
h~来解释
I
I
I。在相机定位问题中,这个
h
~
\tilde{\mathbf{h}}
h~就是六自由度的位姿。我们不会直接将模型
h
~
\tilde{\mathbf{h}}
h~拟合到图像
I
I
I上。而是利用一个有噪声、有离群值的观测——每个像素的2D-3D匹配关系\对应关系:
Y
(
I
)
=
{
y
(
I
,
i
)
∣
∀
i
}
Y(I)=\{y(I,i)|\forall i\}
Y(I)={y(I,i)∣∀i},其中
y
(
I
,
i
)
y(I,i)
y(I,i)即为与像素
i
i
i匹配的空间点。接下来,我们将使用记号
y
i
y_i
yi代替
y
(
I
,
i
)
y(I,i)
y(I,i)。
Y
(
I
)
Y(I)
Y(I)表示整个图像
I
I
I的所有匹配,并记为
Y
Y
Y。使用RANSAC算法估计模型
h
~
\tilde{\mathbf{h}}
h~。
1生成假设池
每一个假设模型都是由对应关系的最小子集生成。该最小子集包含用于计算唯一解的最小数量的对应关系。这样一个最小子集
Y
J
Y_J
YJ和其匹配关系索引
J
=
{
j
1
,
.
.
.
,
j
n
}
J=\{j_1,...,j_n\}
J={j1,...,jn},
n
n
n是最小子集大小。我们从所有对应关系中,均匀地采样获得
n
n
n个对应关系,获得最小子集
Y
J
:
=
{
y
j
1
,
.
.
.
,
y
j
n
}
Y_J:=\{y_{j1},...,y_{jn}\}
YJ:={yj1,...,yjn},其中
j
m
∈
[
1
,
.
.
.
,
∣
Y
∣
]
j_m \in [1,...,|Y|]
jm∈[1,...,∣Y∣]。假设函数
H
\mathbf{H}
H可以从最小子集中计算假设模型,即
h
J
=
H
(
Y
J
)
h_J=\mathbf{H}(Y_J)
hJ=H(YJ)。在相机定位问题中,
H
\mathbf{H}
H即为PNP算法,最小子集大小
n
n
n为4。
2 评估假设模型
评价函数
s
(
h
J
,
Y
)
s(\mathbf{h}_J,Y)
s(hJ,Y)用于测量假设模型
h
J
\mathbf{h}_J
hJ的consensus/quality,即inlier数量。为了定义lilier,我们需要定义对应关系
y
i
y_i
yi的重投影误差:
e
i
=
∥
p
i
−
C
h
J
y
i
∥
e_{i}=\left\|\mathbf{p}_{i}-C \mathbf{h}_{J \mathbf{y}_{i}}\right\|
ei=∥pi−ChJyi∥
p
i
\mathbf{p}_i
pi是像素
i
i
i的2D位置,
C
C
C是相机投影矩阵。如果误差
e
i
<
τ
e_i<\tau
ei<τ,那么
y
i
y_i
yi是一个iinlier,
τ
\tau
τ是inlier阈值。在我们的系统中,我们不会计算inlier数量,而是直接让网络学习
s
(
h
J
,
Y
)
s(\mathbf{h}J,Y)
s(hJ,Y)。
3 选择最佳假设模型
h
A
M
=
argmax
h
J
s
(
h
J
,
Y
)
\mathbf{h}_{\mathrm{AM}}=\underset{\mathbf{h}_{J}}{\operatorname{argmax}} s\left(\mathbf{h}_{J}, Y\right)
hAM=hJargmaxs(hJ,Y)
4 优化 最佳假设模型
我们使用所有inlier重新计算模型参数,记为
h
^
A
M
=
R
(
h
A
M
,
Y
)
\hat{\mathbf{h}}_{AM}=\mathbf{R}(\mathbf{h}_{AM},Y)
h^AM=R(hAM,Y),
R
\mathbf{R}
R为优化函数。
通过RANSAC Pipelline进行学习
我们的工作是为了,在RANSAC框架内,以端到端的方式,学习 scene coordinate prediction 和假设模型评分。即
y
(
I
,
i
;
w
)
y(I,i;w)
y(I,i;w),
s
(
h
J
,
Y
;
v
)
s(\mathbf{h}_J,Y;v)
s(hJ,Y;v),学习参数
w
w
w和
v
v
v,前者通过影响最小子集的选择过程,从而影响生成假设模型(预测位姿)的质量; 后者影响最佳假设模型的选择。我们希望训练获得参数
w
w
w和
v
v
v,使得在训练图像集
I
\mathcal{I}
I上的经过优化后的最佳模型的损失函数
ℓ
\ell
ℓ最小。
w
~
,
v
~
=
argmin
w
,
v
∑
I
∈
I
ℓ
(
R
(
h
A
M
w
,
v
,
Y
w
)
,
h
∗
)
\tilde{\mathbf{w}}, \tilde{\mathbf{v}}=\underset{\mathbf{w}, \mathbf{v}}{\operatorname{argmin}} \sum_{I \in \mathcal{I}} \ell\left(\mathbf{R}\left(\mathbf{h}_{\mathrm{AM}}^{\mathbf{w}, \mathbf{v}}, Y^{\mathbf{w}}\right), \mathbf{h}^{*}\right)
w~,v~=w,vargminI∈I∑ℓ(R(hAMw,v,Yw),h∗) 其中,
h
∗
h^*
h∗是图像
I
I
I的ground true模型。为了端到端地训练,我们需要对
w
w
w和
v
v
v进行微分。假设误差函数
ℓ
\ell
ℓ和优化函数
R
\mathbf{R}
R可微。但是在选择最佳假设模型阶段,选择结果依赖于参数
w
w
w与
v
v
v,但是无法用梯度表达。接下来介绍两种方法解决该问题。
Soft argmax Selection (softAM)
我们将放宽对argmax的限制,将
h
A
M
=
argmax
h
J
s
(
h
J
,
Y
)
\mathbf{h}_{\mathrm{AM}}=\underset{\mathbf{h}_{J}}{\operatorname{argmax}} s\left(\mathbf{h}_{J}, Y\right)
hAM=hJargmaxs(hJ,Y)替换为一个加权和:
h
S
o
f
t
A
M
w
,
v
=
∑
J
P
(
J
∣
v
,
w
)
h
J
w
\mathbf{h}_{\mathrm{Soft} \mathrm{AM}}^{\mathrm{w}, \mathrm{v}}=\sum_{J} P(J | \mathbf{v}, \mathbf{w}) \mathbf{h}_{J}^{\mathrm{w}}
hSoftAMw,v=J∑P(J∣v,w)hJw
其权值:
P
(
J
∣
v
,
w
)
=
exp
(
s
(
h
J
w
,
Y
w
;
v
)
)
∑
J
′
exp
(
s
(
h
J
′
w
Y
w
;
v
)
)
P(J | \mathbf{v}, \mathbf{w})=\frac{\exp \left(s\left(\mathbf{h}_{J}^{\mathbf{w}}, Y^{\mathbf{w}} ; \mathbf{v}\right)\right)}{\sum_{J^{\prime}} \exp \left(s\left(\mathbf{h}_{J^{\prime}}^{\mathbf{w}} Y^{\mathbf{w}} ; \mathbf{v}\right)\right)}
P(J∣v,w)=∑J′exp(s(hJ′wYw;v))exp(s(hJw,Yw;v))
即,采用所有假设模型的加权平均计算最终假设模型。
Probabilistic Selection (DSAC)
或者我们采用一个概率选择代替
h
A
M
=
argmax
h
J
s
(
h
J
,
Y
)
\mathbf{h}_{\mathrm{AM}}=\underset{\mathbf{h}_{J}}{\operatorname{argmax}} s\left(\mathbf{h}_{J}, Y\right)
hAM=hJargmaxs(hJ,Y)。即:
h
D
S
A
C
w
,
v
=
h
J
w
,
with
J
∼
P
(
J
∣
v
,
w
)
\mathbf{h}_{\mathrm{DSAC}}^{\mathbf{w}, \mathbf{v}}=\mathbf{h}_{J}^{\mathbf{w}}, \text { with } J \sim P(J | \mathbf{v}, \mathbf{w})
hDSACw,v=hJw, with J∼P(J∣v,w)
其中
P
(
J
∣
v
,
w
)
P(J|\mathbf{v},\mathbf{w})
P(J∣v,w)是由分数
s
(
h
J
w
,
Y
w
;
v
)
s\left(\mathbf{h}_{J}^{\mathbf{w}}, Y^{\mathbf{w}} ; \mathbf{v}\right)
s(hJw,Yw;v)确定的softmax分布。
该方法涉及到定义在随机过程上的损失函数最小化。即:
w
~
,
v
~
=
argmin
w
,
v
∑
I
∈
I
E
J
∼
P
(
J
∣
v
,
w
)
[
ℓ
(
R
(
h
J
w
,
Y
w
)
)
]
\tilde{\mathbf{w}}, \tilde{\mathbf{v}}=\underset{\mathbf{w}, \mathbf{v}}{\operatorname{argmin}} \sum_{I \in \mathcal{I}} \mathbb{E}_{J \sim P(J | \mathbf{v}, \mathbf{w})}\left[\ell\left(\mathbf{R}\left(\mathbf{h}_{J}^{\mathbf{w}}, Y^{\mathbf{w}}\right)\right)\right]
w~,v~=w,vargmin∑I∈IEJ∼P(J∣v,w)[ℓ(R(hJw,Yw))]
并计算导数如下:
∂
∂
w
E
J
∼
P
(
J
∣
v
,
w
)
[
ℓ
(
⋅
)
]
=
E
J
∼
P
(
J
∣
v
,
w
)
[
ℓ
(
⋅
)
∂
∂
w
log
P
(
J
∣
v
,
w
)
+
∂
∂
w
ℓ
(
⋅
)
]
\begin{array}{l} \frac{\partial}{\partial \mathbf{w}} \mathbb{E}_{J \sim P(J | \mathbf{v}, \mathbf{w})}[\ell(\cdot)]= \\ \mathbb{E}_{J \sim P(J | \mathbf{v}, \mathbf{w})}\left[\ell(\cdot) \frac{\partial}{\partial \mathbf{w}} \log P(J | \mathbf{v}, \mathbf{w})+\frac{\partial}{\partial \mathbf{w}} \ell(\cdot)\right] \end{array}
∂w∂EJ∼P(J∣v,w)[ℓ(⋅)]=EJ∼P(J∣v,w)[ℓ(⋅)∂w∂logP(J∣v,w)+∂w∂ℓ(⋅)]
我们称该方法为 DSAC(Differentiable Sample Consensus),该方法保护了hard假设选择(相对于Soft argmax Selection)。
NG-RANSAC
来自论文《Neural-Guided RANSAC: Learning Where to Sample Model Hypotheses》
RANSAC的主要局限性在于:它在具有许多异常值的任务中性能较差。随着离群值比率的增加,RANSAC需要成倍地进行增加迭代次数才能找到无离群值的最小集。
在这项工作中,我们将RANSAC与神经网络相结合,该神经网络可以预测每个观测值的权重。权重最终指导最小集的采样。
(i)学习权重以指导假设搜索,而不是使用手工制作的启发式方法;
(ii)将RANSAC本身集成到训练过程中,从而实现对预测权重的自校准。
准备工作
算法针对的问题是:将模型
h
\mathbf{h}
h拟合到观测集合
y
∈
Y
\mathbf{y}\in\mathcal{Y}
y∈Y中,获得模型的
h
\mathbf{h}
h参数。观测集合是有噪声且有离群值。
例如,
h
\mathbf{h}
h可以是描述两张图像对极几何的基本矩阵,观测
Y
\mathcal{Y}
Y是从图像对中提取的SIFT匹配关系。为了计算基本矩阵的参数,我们利用一个八点法求解器
f
f
f。但是,由于存在离群值,从所有观察值中计算
h
\mathbf{h}
h将导致估算不佳。我们可以通过一个观测的最小子集(大小为
N
N
N)来计算
h
=
f
(
y
1
,
.
.
.
,
y
N
)
\mathbf{h}=f(y_1,...,y_N)
h=f(y1,...,yN)。对八点法来说,只需要八个点即可确定基本矩阵,即
N
=
8
N=8
N=8。
RANSAC算法会随机选择
M
M
M个最小子集,创建假设模型池
H
=
(
h
1
,
.
.
.
,
h
M
)
\mathcal{H} =(\mathbf{h}_1,...,\mathbf{h}_M)
H=(h1,...,hM)。因为是为了获得无离群值的最小子集,所以,对于具有较大离群值比例的任务,
M
M
M的大小会呈指数级增长,但通常会设置最大值。RANSAC根据得分
s
s
s,从假设模型池中选择最佳假设模型
h
^
\hat{\mathbf{h}}
h^:
h
^
=
argmax
h
∈
H
s
(
h
,
Y
)
\hat{\mathbf{h}}=\underset{\mathbf{h} \in \mathcal{H}}{\operatorname{argmax}} s(\mathbf{h}, \mathcal{Y})
h^=h∈Hargmaxs(h,Y)
该得分
s
s
s是 所有观测中与假设模型
h
h
h一致的观测的数量,也即是inlier数量。
Neural Guidance
RANSAC是随机地选择最小子集,来创建假设模型池
H
\mathcal{H}
H。我们的目标是根据学习到的分布对观测进行采样。即,我们根据分布
y
〜
p
(
y
;
w
)
y〜p(\mathbf{y};\mathbf{w})
y〜p(y;w)选择观测值(最小子集)。而
p
(
y
;
w
)
p(\mathbf{y};\mathbf{w})
p(y;w)是观测值
Y
\mathcal{Y}
Y上的离散分类分布,而不是观测空间中的连续分布。
我们学习参数
w
w
w得目的是提高选择到无离群最小集得概率。
我们依据分布
p
(
H
;
w
)
p(\mathcal{H};\mathbf{w})
p(H;w),采样假设模型池
H
\mathcal{H}
H。
p
(
H
;
w
)
=
∏
j
=
1
M
p
(
h
j
;
w
)
p
(
h
;
w
)
=
∏
i
=
1
N
p
(
y
i
;
w
)
p(\mathcal{H} ; \mathbf{w})=\prod_{j=1}^{M} p\left(\mathbf{h}_{j} ; \mathbf{w}\right)\\ p(\mathbf{h} ; \mathbf{w})=\prod_{i=1}^{N} p\left(\mathbf{y}_{i} ; \mathbf{w}\right)
p(H;w)=j=1∏Mp(hj;w)p(h;w)=i=1∏Np(yi;w)
从假设模型池
H
\mathcal{H}
H中,我们获得最佳模型参数
h
^
\hat{\mathbf{h}}
h^。
对于网络得训练,我们假设我们可以使用一个task lose函数
ℓ
(
h
^
)
\ell(\hat{\mathbf{h}})
ℓ(h^)获得最佳模型的得分。该函数可以是当前最佳模型的内点数量相对于ground true模型的内点数量,或者直接是最佳模型内点数量的相反数,即
ℓ
(
h
^
)
=
−
s
(
h
^
,
Y
)
\ell(\hat{\mathbf{h}})=-s(\hat{\mathbf{h}}, \mathcal{Y})
ℓ(h^)=−s(h^,Y)。
我们希望学习分布
p
(
H
;
w
)
p(\mathcal{H};\mathbf{w})
p(H;w)以使得系统能以较高的概率获得更小的task loss。即,我们的训练目标是预期task loss的最小化:
L
(
w
)
=
E
H
∼
p
(
H
;
w
)
[
ℓ
(
h
^
)
]
\mathcal{L}(\mathbf{w})=\mathbb{E}_{\mathcal{H} \sim p(\mathcal{H} ; \mathbf{w})}[\ell(\hat{\mathbf{h}})]
L(w)=EH∼p(H;w)[ℓ(h^)]
然后通过推导获得损失函数相对于权值
w
w
w的导数:
∂
∂
w
L
(
w
)
≈
1
K
∑
k
=
1
K
[
[
ℓ
(
h
^
)
−
b
]
∂
∂
w
log
p
(
H
k
;
w
)
]
\frac{\partial}{\partial \mathbf{w}} \mathcal{L}(\mathbf{w}) \approx \frac{1}{K} \sum_{k=1}^{K}\left[[\ell(\hat{\mathbf{h}})-b] \frac{\partial}{\partial \mathbf{w}} \log p\left(\mathcal{H}_{k} ; \mathbf{w}\right)\right]
∂w∂L(w)≈K1k=1∑K[[ℓ(h^)−b]∂w∂logp(Hk;w)]
结合 DSAC
DSAC通过一个softmax概率分布选择最佳假设模型
h
^
\hat{\mathbf{h}}
h^:
h
^
D
S
A
C
=
h
j
∼
p
(
j
∣
H
)
=
exp
s
(
h
j
,
Y
(
w
)
)
∑
k
=
1
M
exp
s
(
h
k
,
Y
(
w
)
)
\hat{\mathbf{h}}_{\mathrm{DSAC}}=\mathbf{h}_{j} \sim p(j | \mathcal{H})=\frac{\exp s\left(\mathbf{h}_{j}, \mathcal{Y}(\mathbf{w})\right)}{\sum_{k=1}^{M} \exp s\left(\mathbf{h}_{k}, \mathcal{Y}(\mathbf{w})\right)}
h^DSAC=hj∼p(j∣H)=∑k=1Mexps(hk,Y(w))exps(hj,Y(w))
这样的可微分的RANSAC,使得最佳模型能够以更高的概率被选择到。其目标优化函数(task loss 函数):
L
D
S
A
C
(
w
)
=
E
j
∼
p
(
j
)
[
ℓ
(
h
j
)
]
\mathcal{L}_{\mathrm{DSAC}}(\mathbf{w})=\mathbb{E}_{j \sim p(j)}\left[\ell\left(\mathbf{h}_{j}\right)\right]
LDSAC(w)=Ej∼p(j)[ℓ(hj)]
将其与之前的
L
(
w
)
\mathcal{L}(\mathbf{w})
L(w)结合:
L
N
G
−
D
S
A
C
(
w
)
=
E
H
∼
p
(
H
;
w
)
E
j
∼
p
(
j
∣
H
)
[
ℓ
(
h
j
)
]
\mathcal{L}_{\mathrm{NG}-\mathrm{DSAC}}(\mathbf{w})=\mathbb{E}_{\mathcal{H} \sim p(\mathcal{H} ; \mathbf{w})} \mathbb{E}_{j \sim p(j | \mathcal{H})}\left[\ell\left(\mathbf{h}_{j}\right)\right]
LNG−DSAC(w)=EH∼p(H;w)Ej∼p(j∣H)[ℓ(hj)]
可以看出,NG-DSAC的培训目标包括两个期望。首先是期望根据神经网络预测的概率对假设模型池进行采样。其次,期望值从假设模型池中抽取最终假设模型。
最终我们给出近似梯度:
1
K
∑
k
=
1
K
[
[
E
j
[
ℓ
]
−
b
]
∂
∂
w
log
p
(
H
k
;
w
)
+
∂
∂
w
E
j
[
ℓ
]
]
\frac{1}{K} \sum_{k=1}^{K}\left[\left[\mathbb{E}_{j}[\ell]-b\right] \frac{\partial}{\partial \mathbf{w}} \log p\left(\mathcal{H}_{k} ; \mathbf{w}\right)+\frac{\partial}{\partial \mathbf{w}} \mathbb{E}_{j}[\ell]\right]
K1k=1∑K[[Ej[ℓ]−b]∂w∂logp(Hk;w)+∂w∂Ej[ℓ]]
/