摘要
在三维重建过程中,得到三维点与相机内外参数之后,需要同时对三维点位置和相机参数进行非线性优化,得到更精确的相机参数与三维点坐标数据,常用的非线性优化方法有:梯度下降法,牛顿法,高斯牛顿法,LM算法
优化问题描述:
捆绑调整是一个无约束非线性最小优化问题
前提知识
梯度下降法
梯度下降法是在当前点进行一阶展开,在展开点处进行局部平面拟合
其中
▽
g
(
θ
t
)
=
J
(
θ
t
)
\bigtriangledown g(\theta_{t})=J(\theta_{t})
▽g(θt)=J(θt),则有
δ
θ
=
−
λ
J
(
θ
t
)
\delta\theta=-\lambda J(\theta_{t})
δθ=−λJ(θt)
式中
δ
θ
\delta\theta
δθ为参数
θ
\theta
θ的偏移量,
λ
\lambda
λ为学习率,
J
(
θ
t
)
J(\theta_{t})
J(θt)为雅可比矩阵.
牛顿法
高斯牛顿法
牛顿法在每次迭代都需计算Hessien矩阵的逆矩阵,计算量大,高斯牛顿法使用雅可比矩阵来计算近似Hessien矩阵,减少计算量(只有最小二乘问题才能使用高斯牛顿法)
优化目标简单记为:
min
θ
g
(
θ
)
=
∑
i
=
0
n
∣
∣
u
i
^
−
μ
θ
i
∣
∣
2
\min \limits_{\theta}g(\theta) = \sum_{i=0}^n ||\hat{u_{i}}-\mu_{\theta_{i}}||^{2}
θming(θ)=i=0∑n∣∣ui^−μθi∣∣2
其中
u
i
^
是像平面上图像特征匹配的点坐标
\hat{u_{i}}是像平面上图像特征匹配的点坐标
ui^是像平面上图像特征匹配的点坐标,
μ
θ
i
\mu_{\theta_{i}}
μθi表示投影到像平面的点坐标,投影点坐标参数
θ
i
\theta_{i}
θi决定,
θ
i
\theta_{i}
θi包含三维点坐标和相机参数。
记
r
i
=
μ
θ
i
−
u
i
^
r_{i}=\mu_{\theta_{i}}-\hat{u_{i}}
ri=μθi−ui^
记
r
=
[
r
1
,
r
2
.
.
.
r
n
]
T
r=[r_{1},r_{2}...r_{n}]^{T}
r=[r1,r2...rn]T
则有:
g
(
θ
)
=
r
T
r
g(\theta) = r^{T}r
g(θ)=rTr
对上式两边对当前的参数
θ
\theta
θ求偏导:
▽
g
(
θ
)
=
[
∂
g
∂
θ
1
,
∂
g
∂
θ
2
.
.
.
∂
g
∂
θ
m
]
T
.
∂
g
∂
θ
j
=
2
∑
i
=
0
m
r
i
∂
r
i
∂
θ
j
\bigtriangledown g(\theta)=[\frac{\partial g}{\partial \theta_{1}}, \frac{\partial g}{\partial \theta_{2}}... \frac{\partial g}{\partial \theta_{m}}]^{T}\\.\\\frac{\partial g}{\partial \theta_{j}}= 2\sum_{i=0}^m r_{i}\frac{\partial r_{i}}{\partial \theta_{j}}
▽g(θ)=[∂θ1∂g,∂θ2∂g...∂θm∂g]T.∂θj∂g=2i=0∑mri∂θj∂ri
则上式可以转换成雅可比矩阵的形式:
▽
g
(
θ
)
=
2
J
T
r
\bigtriangledown g(\theta)=2J^{T}r
▽g(θ)=2JTr
由雅克比矩阵求Hession矩阵:
上式表明Hession矩阵可以用J矩阵来近似
由牛顿法的表达式:
将
H
=
2
(
J
T
J
+
O
)
H=2(J^{T}J+O)
H=2(JTJ+O)和
▽
g
(
θ
)
=
2
J
T
r
\bigtriangledown g(\theta)=2J^{T}r
▽g(θ)=2JTr代入得:
δ
θ
=
−
(
J
T
J
+
O
)
−
1
J
T
r
\delta\theta=-(J^{T}J+O)^{-1}J^{T}r
δθ=−(JTJ+O)−1JTr
一般而言,O表达式中的
r
i
j
r_{ij}
rij≈0,可以将O近似舍弃得:
δ
θ
=
−
(
J
T
J
)
−
1
J
T
r
\delta\theta=-(J^{T}J)^{-1}J^{T}r
δθ=−(JTJ)−1JTr
由于
J
T
J
J^{T}J
JTJ有可能是非正定,所以要引入Levenberg-Marquart修正
LM算法特点与优势
LM算法是一种“信赖阈”的方法,当收敛速度较快时,增大信赖域,使算法趋向于牛顿法;当收敛速度较慢时,减小信赖域,使算法趋向于最速梯度法
LM针对高斯牛顿算法的改进:
1.求解
δ
θ
\delta\theta
δθ时,对其设置了信赖域
2.求得
δ
θ
\delta\theta
δθ之后对其近似效果进行量化,并根据量化结果对信赖域进行调整,从而重新计算增量
δ
θ
\delta\theta
δθ,直到近似效果量化结果达到了阈值
LM修订牛顿法:
其中
α
k
\alpha_{k}
αk可以视为线性搜索的步长,后面的代表搜索的方向,可以设置信赖域,在信赖域内,可以增大步长,信赖域外可以减小步长。
θ
k
=
θ
k
+
1
−
α
k
H
(
θ
k
−
1
)
−
1
▽
g
(
θ
k
−
1
)
\theta_{k} = \theta_{k+1}-\alpha_{k} H(\theta_{k-1})^{-1}\bigtriangledown g(\theta_{k-1})
θk=θk+1−αkH(θk−1)−1▽g(θk−1)
Hession矩阵可能为非正定矩阵,需要进行修正,对Hession矩阵加上
μ
I
\mu I
μI即:
θ
k
=
θ
k
+
1
−
α
k
(
H
(
θ
k
−
1
)
+
μ
I
)
−
1
▽
g
(
θ
k
−
1
)
\theta_{k} = \theta_{k+1}-\alpha_{k} (H(\theta_{k-1})+\mu I)^{-1}\bigtriangledown g(\theta_{k-1})
θk=θk+1−αk(H(θk−1)+μI)−1▽g(θk−1)
如果
μ
\mu
μ为0,那就退化为牛顿法,如果
μ
\mu
μ为∞,则H失去贡献意义,退化成梯度下降法。
将
H
=
2
(
J
T
J
+
O
)
H=2(J^{T}J+O)
H=2(JTJ+O)和
▽
g
(
θ
)
=
2
J
T
r
\bigtriangledown g(\theta)=2J^{T}r
▽g(θ)=2JTr,
r
=
u
^
−
μ
θ
r=\hat{u}-\mu_{\theta}
r=u^−μθ代入得:
θ
k
=
θ
k
+
1
−
α
k
(
J
T
J
+
μ
I
)
−
1
J
T
(
u
^
−
μ
θ
)
\theta_{k} = \theta_{k+1}-\alpha_{k} (J^{T}J+\mu I)^{-1}J^{T}(\hat{u}-\mu_{\theta})
θk=θk+1−αk(JTJ+μI)−1JT(u^−μθ)