SLAM における非線形最適化と BA の概要
1. 非線形最小二乗問題
まず単純な問題を考えてみましょう: min x 1 2 ∣ ∣ f ( x ) ∣ ∣ 2 2 \underset{x}{\min} \frac{1}{2}||f(x)||_{2} ^{2}バツ分21∣ ∣ f ( x ) ∣ ∣221. ffの場合fが非常に単純な場合:dfdx = 0 \frac{df}{dx}=0dx _ドフ_=0 の場合、極値点または鞍点が取得されます。これらの解を比較するだけです。
2.fffが複素数の場合 (fffは n 項関数です):dfdx \frac{df}{dx}dx _ドフ_見つけるのが難しい、またはdfdx = 0 \frac{df}{dx}=0dx _ドフ_=0を解くのは難しく、反復法を使用して解決します。
反復する方法は次のとおりです。
- 初期値x 0 x_{0}を指定すると、バツ0。
- k 回目の反復では、デルタΔ xk \Delta x_{k}を見つけます。Δx_ _k,from ∣ ∣ f ( xk + Δ xk ) ∣ ∣ 2 2 ||f(x_{k}+\Delta x_{k})||_{2}^{2}∣ ∣ f ( xk+Δx_ _k) ∣ ∣22最小値に達します。
- 若Δ xk \Delta x_{k}Δx_ _k十分に小さい場合は停止します。
- それ以外の場合は、xk + 1 = xk + Δ xk x_{k+1}=x_{k}+\Delta x_{k} とします。バツk + 1=バツk+Δx_ _k、2を返します。
ここでは、増分法 (つまり、勾配降下法)、つまり 1 次か 2 次かを決定する必要があります。まず、テイラー展開して次を得る必要があります: ∣ ∣ f ( xk + Δ xk ) ∣ ∣ 2 2 ≈ ∣ ∣ f ( x ) ∣ ∣ 2 2 + J ( x ) Δ x + 1 2 Δ x TH Δ x || f(x_{k}+\デルタ x_{k})||_{2}^{2} \およそ ||f(x)||_{2}^{2} +J(x)\デルタ x+ \frac{1}{2} \デルタ x^{T}H\デルタ x∣ ∣ f ( xk+Δx_ _k) ∣ ∣22≈∣ ∣ f ( x ) ∣ ∣22+J ( x ) Δ x+21Δx_ _T HΔx if一次勾配のみを維持する:min Δ x ∣ ∣ f ( x ) ∣ ∣ 2 2 + J Δ x \underset{\Delta x}{\min} ||f(x)||_{2}^{2} +J\DeltaバツΔx_ _分∣ ∣ f ( x ) ∣ ∣22+J Δ x、増分方向は次のとおりです:Δ x ∗ = − JT ( x ) \Delta x^{\ast} =-J^{T}(x)Δx_ _∗=− JT (x). (通常、ステップ サイズを計算する必要もあります)、メソッドが呼び出されます。最急降下。
好き2次勾配を維持する:Δ x ∗ = arg min ∣ ∣ f ( x ) ∣ ∣ 2 2 + J ( x ) Δ x + 1 2 Δ x TH Δ x \Delta x^{\ast} =arg\min ||f(x )||_{2}^{2} +J(x)\デルタ x+\frac{1}{2} \デルタ x^{T}H\デルタ xΔx_ _∗=a r g分∣ ∣ f ( x ) ∣ ∣22+J ( x ) Δ x+21Δx_ _T HΔxΔ x \Delta xについて上記の式を作成します)Δ x導関数はゼロです): H Δ x = − JTH \Delta x=-J^{T}H Δ x=− Jメソッドは次のように呼ばれますニュートン法。
最急降下法とニュートン法は直感的ですが、使用にはいくつかの欠点があります。
- 最急降下法は欲張りすぎるため反復回数が増加する可能性があります
- ニュートン法の反復回数は少ないですが、複雑なヘッセ行列を計算する必要があります。
したがって、ヘッセ行列の計算は、ガウス ニュートンとレーベンバーグ マルコートによって回避できます。
2. ガウス・ニュートン、レーベンブルク・マルカート、その他の下降戦略を理解する
ガウスニュートン
一次近似f ( x ) f(x)f ( x ):f ( x + Δ x ) ≈ f ( x ) + J ( x ) Δ xf(x+\Delta x)\およそ f(x)+J(x)\Delta xf ( x+Δ × )≈f ( x )+J ( x ) Δ x
平方误差变: 1 2 ∣ ∣ f ( x ) + J ( x ) Δ x ∣ ∣ 2 = 1 2 ( f ( x ) + J ( x ) Δ x ) T ( f ( x ) ) + J ( x ) Δ x ) = 1 2 ( ∣ ∣ f ( x ) ∣ ∣ 2 2 + 2 f ( x ) TJ ( x ) Δ x + Δ x TJ ( x ) TJ ( x ) Δ x ) \ frac{1}{2} ||f(x)+J(x)\デルタ x||^{2}=\frac{1}{2}(f(x)+J(x)\デルタ x) ^{T}(f(x)+J(x)\デルタ x) =\frac{1}{2}(||f(x)||_{2}^{2} +2f(x)^ {T}J(x)\デルタ x+\デルタ x^{T}J(x)^{T}J(x)\デルタ x)21∣ ∣ f ( x )+J ( x ) Δ x ∣ ∣2=21( f ( x )+J ( x ) Δ x )T (f(x)+J ( x ) Δ x )=21( ∣ ∣ f ( x ) ∣ ∣22+2 f ( x )T J(x)Δx+Δx_ _T J(x)T J(x)Δx)Δ x \Delta xについて考えてみましょうΔ x微分値はゼロです:2 J ( x ) T f ( x ) + 2 J ( x ) TJ ( x ) Δ x = 0 2J(x)^{T}f(x)+2J(x)^{T }J(x)\デルタ x=02J ( × ) _T f(x)+2J ( × ) _T J(x)Δx=0 J ( x ) TJ ( x ) Δ x = − J ( x ) T f ( x ) J(x)^{T}J(x)\デルタ x=-J(x)^{T}f(x )J ( × )T J(x)Δx=− J ( x )T f(x)
は次のように書かれます:H Δ x = g H \Delta x=gH Δ x=g
GN は J の式で H を近似します。
次のように進めます。
- 与えられた初期値x 0 x_{0}バツ0。
- k 回目の反復では、現在のヤコビアン行列J ( xk ) J(x_{k})を見つけます。J ( ×k)とエラーf ( xk ) f(x_{k})f ( xk)。
- デルタ方程式を解きます: H Δ xk = g H \Delta x_{k}=gH Δ xk=g。
- 若Δ xk \Delta x_{k}Δx_ _k十分に小さい場合は停止します。それ以外の場合は、xk + 1 = xk + Δ xk x_{k+1}=x_{k}+ \Delta x_{k} とします。バツk + 1=バツk+Δx_ _k。
レーベンベルク=マルコート
ガウスニュートンはシンプルで実用的ですが、Δ xk = H − 1 g \Delta x_{k}=H^{-1}gΔx_ _k=H− H が1 g(二次近似は信頼できません)。
そして、レーベンバーグ・マルカート法はそれをある程度改善します。
GN はライン探索法に属し、最初に方向を見つけてから長さを決定します。LM は信頼領域法に属し、その領域内でのみ近似が信頼できると考えます。。LM ρ = f ( x + Δ x ) − f ( x ) J ( x ) Δ x \rho =\frac{f(x+\Delta x)-f(x)}{ での近似度の記述を考えてみましょう
。J( x)\デルタ x}r=J ( x ) Δ xf ( x + Δ x ) − f ( x )つまり、実際の低下/おおよその低下です。小さすぎる場合は近似範囲を小さくし、大きすぎる場合は近似範囲を大きくします。
LM のプロセスは次のとおりです。
- 与えられた初期値x 0 x_{0}バツ0、および初期最適半径μ \muメートル。
- k 回目の反復では、次を解きます: min Δ xk 1 2 ∣ ∣ f ( xk ) + J ( xk ) Δ xk ∣ ∣ 2 , s . t . ∣ ∣ D Δ xk ∣ ∣ 2 ≤ μ \underset{\Delta x_{k}}{\min} \frac{1}{2} ||f(x_{k})+J(x_{k}) \デルタ x_{k}||^{2},st|| D\デルタ x_{k}||^{2}\le \muΔx_ _k分21∣ ∣ f ( xk)+J ( ×k) Δ xk∣ ∣2、s 。と。∣ ∣ D Δ xk∣ ∣2≤μここで、μ \μμは信頼領域の半径です。
- ρ \rhoを計算するr。
- ρ > 3 4 \rho>\frac{3}{4}の場合r>43,则μ = 2 μ \mu = 2\μメートル=2メートル;
- 若ρ < 1 4 \rho<\frac{1}{4}r<41,则μ = 0.5μ \mu = 0.5\μメートル=0 。5メートル;
- ρ \rhoの場合ρ が特定のしきい値より大きい場合、ほぼ実行可能であると考えられます。xk + 1 = xk + Δ xk x_{k+1}=x_{k}+\Delta x_{k} としますバツk + 1=バツk+Δx_ _k。
- アルゴリズムが収束したかどうかを判断します。収束していない場合は 2 を返し、収束していない場合は終了します。
信頼領域での最適化の場合、ラグランジュ乗数を使用して制約なしに変換します。min Δ xk 1 2 ∣ ∣ f ( xk ) + J ( xk ) Δ xk ∣ ∣ 2 + λ 2 ∣ ∣ D Δ x ∣ ∣ 2 \underset {\Delta x_{k}}{\min} \frac{1}{2} ||f(x_{k})+J(x_{k}) \Delta x_{k}||^{ 2}+ \frac{\lambda }{2} ||D\デルタ x||^{2}Δx_ _k分21∣ ∣ f ( xk)+J ( ×k) Δ xk∣ ∣2+2私∣ ∣ D Δ x ∣ ∣2はガウス ニュートン法を参照してさらに拡張されており、増分方程式は次のとおりです:( H + λ DTD ) Δ x = g (H+\lambda D^{T}D)\Delta x=g( H+λD _T D)Δx=gレーベンバーグ法では、D=I とすると、( H + λ I ) Δ x = g (H+\lambda I)\Delta x=g となります。( H+λ I ) Δ x= GN と比較して、 g LM は増分方程式の正定性を保証できます。つまり、近似が特定の範囲内でのみ有効であると考えられ、近似が適切でない場合は範囲が縮小されます。増分方程式、パラメータλ \lambdaは、1 次と 2 次の混合として見ることができます。λ は両側の重みを制御します、λ \lambdaの場合λが 0 の場合、H Δ x = g H\Delta x=gH Δ x=g、つまり 2 次法ニュートン法; ifλ \lambdaλが非常に大きい場合は、一次法の最急降下法が使用されます。
三、BA
まず、エラーとは何でしょうか?表現の仕方。BA で最適化される変数はポーズとランドマーク点ですが、ポーズとランドマーク点に関する誤差関数の導関数を求めるにはどうすればよいでしょうか? リー代数摂動モデルとは何ですか? ヤコビアン行列とは何ですか? BAの具体的な形式は何ですか?
回転行列グループと変換行列グループ: SO ( 3 ) = R ∈ R 3 × 3 ∣ RRT = I , det ( R ) = 1 SO(3)={R\in \mathbb{R}^{3\times 3 }|RR^{T}=I,det(R)=1}ソ( 3 ) _=R∈R3 × 3 ∣RRT=私は、d e t ( R )=1 SE ( 3 ) = { T = [ RT 0 T 1 ] ∈ R 4 × 4 ∣ R ∈ SO ( 3 ) , t ∈ R 3 } SE(3)=\left \{ T=\begin{bmatrix} R & T\\ 0^{T} &1 \end{bmatrix} \in \mathbb{R}^{4\times 4} |R\in SO(3),t\in \mathbb{R}^{3} \右 \}SE ( 3 ) _={
T=[R0TT1】∈R4 × 4∣R __∈S O ( 3 ) 、t∈R3 }は連続した滑らかな特性の群はリー群と呼ばれますが、加算が閉じていないため導出できないという問題があります。
求める方法は2つあります:
- R に対応するリー代数に少量を追加し、その少量に対する変化率を求めます (微分モデル)。
- R に左または右の小さな量を乗算し、その小さな量に対するリー代数の変化率を求めます (外乱モデル):
外乱モデル (左の乗算) では、左の小さな量を乗算し、リー代数をゼロにして、次を取得します。
ポーズ変換の導関数モデルは次のとおりです。
4. グラフの最適化と g2o
再投影誤差:
誤差関数の最小二乗問題の構築:
行列形式: siui = K exp ( ξ ∧ ) P i s_{i}u_{i}=Kexp(\xi ^{\wedge})P_{i}s私はあなた私は=K e x p ( ξ∧ )P私は误差関数数:ξ ∗ = arg min ξ 1 2 ∑ i = 1 n ∣ ∣ ui − 1 si K exp ( ξ ∧ ) Pi ∣ ∣ 2 2 \xi^{*}=arg\underset{\xi }{ \min}\frac{1}{2}\sum_{i=1}^{n}||u_{i}-\frac{1}{s_{i}}Kexp(\xi ^{\wedge }) P_{i} ||_{2}^{2}バツ∗=a r gバツ分21i = 1∑ん∣ ∣う私は−s私は1K e x p ( ξ∧ )P私は∣ ∣22この誤差関数をe ( x ) e(x)と書きます。e ( x ): e ( x + Δ x ) = e ( x ) + J ( x ) Δ xe(x+ \Delta x)=e(x)+J(x)\Delta xそして( x+Δ × )=そして( x )+J ( x ) Δ x相機械モデル:u = fx X ′ Z ′ + cx , v = fy Y ′ Z ′ + cyu=f_{x}\frac{X'}{Z'}+c_{x},v =f_{y}\frac{Y'}{Z'}+c_{y}あなた=f×Z』バツ「+c×、v=fはいZ』Y「+cはい外乱モデルを使用して導出します。
取得した 2 つの導関数を乗算します。
この行列は取得したヤコビ行列であり、カメラの姿勢が最適化されるように、最適化中に反復の方向をガイドします。
最適化された特徴の空間点の位置:
この行列は、特徴点の空間位置を最適化する際のヤコビ行列であり、反復の方向を導きます。