SlideShare a Scribd company logo
Direct Sparse Odometry
東京大学 相澤山崎研究室
Qoncept Internship
2018/01/13 B4 金子 真也
1
What is this?
• 現在, 株式会社Qoncept(http://qoncept.jp/)でのInternshipに参
加しており, その成果の一つとして作成した資料です.
• 近年VOとしてかなり精度が高いと話題のDirect Sparse Odometry
(https://vision.in.tum.de/research/vslam/dso)の論文を翻訳し
まとめました.
• DSOに関する日本語の文献は現在かなり少ないので, 参考になると
思い公開しました.
• 私自身, 勉強中の身で理解が甘い箇所が多々あると思うので, 何かコ
メント等あれば気軽にお願いします.
• 本スライド中の数式番号は元論文に対応した番号を付けています
(違う論文の数式の場合は番号に引用を付けています)
Demo, Abstract, Motivation, ...
3
Demo-Video (YouTube)
4
Abstract
• SLAMやVOは特徴点ベース(indirect)の手法が長い間主流だったが,
近年はdirectでdenseな手法が人気。
• Direct vs Indirect, Dense vs Sparseの2軸で方法を分類できる
• 本論文はDirect + Sparseという部分の方法を提案する
手法 Direct Indirect
Sparse DSO(本手法)
monoSLAM(2007)
PTAM(2007)
ORB-SLAM(2015)
Dense/
Semi-Dense
DTAM(2011)
LSD-SLAM(2014)
3D geometry
Estimation ...
5
Motivation
• Direct
– 特徴点ベース(Indirect)の手法の利点としては画像中の幾何学的
歪みに対して頑強性を持つ
– 一方, Directな手法では点がそれ自身認識する必要がないため,
より細かい幾何学表現が可能 + 輝度の微弱な変化を含めたデー
タ全体からサンプリングできるのでテクスチャがまばらな環境
でも頑強な性能を持つ
• Sparse
– Sparseな場合にはgeo-geoが対角行列(青)なので, Schur補元を
使って簡単にBAができる
– 一方, Directな場合にはgeo-geo
の相関関係が生じるため(橙), 上
の方法では足りずBAが難しい
(工夫が必要)
6
Contribution
• 全てのモデルパラメータの完全尤度の最適化は一般的にDirectな手
法で行われているため, Direct + Sparseな手法を提案
– Cameraの位置, 内部パラメータ, および幾何学パラメータ等
• 最適化はsliding windowベースで行い, 古いカメラの位置は除外
• 既存の手法と異なり, カメラのphotometric calibrationを十分に
活用することで正確さと頑強性を向上させる
• CPUベースの実装であり, かつLSD-SLAM[1]と同じ密度のモデルを
作りながら, 既存の手法を上回る精度と頑強性 + 5倍の速さ
[1] J. Engel, T. Schops, and D. Cremers. LSD-SLAM: Largescale direct monocular SLAM. In European Conference on Computer Vision (E
CCV), 2014.
Methods
8
Method
以下の手順で解説する
1. Direct-Sparse Modelの解説
1. Camera Calibration
Geometric Calibration + Photometric Calibration
2. Modelの定式化
3. Windowベースの最適化
2. DSOのFront-End部分の解説
1. Frameの操作手順
2. Pointの操作手順
1. Direct-Sparse Modelの解説
10
1. Camera Calibration
• Directな手法ではこの部分がかなり大事
– Indirectな手法では特徴抽出器・記述子は測光の変動に頑強性を
持つのでこの操作の大部分は無視することができる
– Geometric CalibrationとPhotometric Calibrationの2種類で
モデル化する
• Geometric Calibration
– よく知られたピンホールカメラモデル
– 3D点 𝑥, 𝑦, 𝑧 ∈ ℝ3
から画像点 𝑢 𝑑, 𝑣 𝑑 ∈ Ωへ
(投影関数であり, Π 𝑐 ∶ ℝ3 → Ω と表記)
(1)[1]
[1] J. Engel, V. Usenko, D. Cremers. A Photometrically Calibrated Benchmark For Monocular Visual Odometry, In arXiv:1607.02555, 2016.
11
1. Camera Calibration
– 今回は歪みあり画像点 𝑢 𝑑, 𝑣 𝑑 から歪みなし画像点 𝑢 𝑢, 𝑣 𝑢 へ変換
– この点を三次元へ変換する際には以下の変換を行う
(逆投影関数であり, Π 𝑐
−1 ∶ ℝ × Ω → ℝ3 と表記)
– 今回のcalibrationはPTAM[2]の実装を使い,チェックボードを用
いることで [𝑓𝑥, 𝑓𝑦, 𝑐 𝑥, 𝑐 𝑦, 𝜔]を推定
[1] J. Engel, V. Usenko, D. Cremers. A Photometrically Calibrated Benchmark For Monocular Visual Odometry, In arXiv:1607.02555, 2016.
[2] G. Klein and D. Murray. Parallel tracking and mapping for small AR workspaces. In International Symposium on Mixed and Augmented Reality (ISMAR), 2007.
(2,3) [1]
12
• Photometric Calibration
– 非線形反応関数𝐺 + レンズ減衰𝑉でモデル化
– フレーム𝑖において, これらを組み合わせたモデルは以下で定義
𝐵𝑖は放射照度, 𝐼𝑖は観測されたピクセル強度, 𝑡𝑖は露光時間
– フレーム𝐼𝑖を測光修正し, 修正フレーム𝐼′𝑖を得るには上の式から
反応関数𝐺 レンズ減衰𝑉 露光時間𝑡
(2)
(3)
1. Camera Calibration
13
2. Modelの定式化
• 参照フレーム𝐼𝑖上の点𝒑 ∈ Ω𝑖が, 対象のフレーム𝐼𝑗で観測された時の
測光誤差を定義
– ピクセル近傍のパターン𝒩𝑝の重み付きSSDにより計算
• モーションブラーに頑強に
• フレーム𝑰𝒊, 𝑰𝒋間の測光誤差
– 𝒩𝑝は近傍パターン, 𝑡𝑖, 𝑡𝑗は露光時間, ∙ 𝛾はHuberノルム
– 𝒑′は逆深度𝑑 𝒑による𝒑の投影点
パターン𝒩𝑝の例
参照フレーム𝐼𝑖
(位置𝐓𝑖)
対象フレーム𝐼𝑗
(位置𝐓𝑗)
𝒑 𝓝 𝒑
𝒑′
深度1/𝑑 𝒑
逆投影関数 Π 𝑐
−1
投影関数 Π 𝑐
:相対的なカメラの動き
(4)
(5,6)
14
2. Modelの定式化
– 露光時間が未知の場合のためにもアフィン輝度変換関数として,
𝑒−𝑎 𝑖(𝐼𝑖 − 𝑏𝑖)を含めている
– Huber損失に加えて, 画素勾配に依存した重み𝑤 𝒑を定義
• 勾配が高いピクセルに関しては重み小に(ノイズを抑える)
– まとめると測光誤差𝐸 𝒑𝑗は以下の要素に依存している
1. 点の逆深度値𝑑 𝒑
2. カメラの内部パラメータ𝑐
3. フレームの位置𝐓𝑖, 𝐓𝑗
4. 輝度変換関数のパラメータ𝑎𝑖, 𝑏𝑖, 𝑎𝑗, 𝑏𝑗
(7)
15
2. Modelの定式化
• 全体の測光誤差
– 全てのフレーム番号の集合ℱにおいて, 𝑖番目のフレーム
– フレーム𝑖上の全ての点集合𝓟𝑖の中で点𝒑
– 点𝒑が観測されたフレーム集合obs(𝒑)の中で, 𝑗番目のフレーム
• 古典的な再投影誤差との違いは1枚だけでなく, それぞれの項が2枚
のフレームに依存されていること
• KF毎の測光誤差の依存関係グラフの例
は右のようになる
(8)
16
2. Modelの定式化
• 点の持つパラメータ数に関して
– Directな手法では点の持つパラメータ数を抑えられる
• 点利用の一貫性
– 今回は観測点をひたすら何度も使い, 使わない点は全く使わない
• 画像から点を取得する際に重複を許しているため
– 空間内に点を分布させ, テクスチャが少ないシーンでもうまく推
定できるようにする
手法 点の次元数 理由
Direct
1
(depth)
逆深度値の推定のみ
Indirect
3
(X,Y,Z)
コーナー位置の推定(特徴点抽出)
+ 深さの推定
17
3. Windowベースの最適化
• 式(8)をsliding windowでGauss-Newton法を使うことで最適化
– 速度と柔軟さで良い性能を持つ
• [定義] 表記としてLie代数 𝔰𝔢 3 とLie群 SE(3)を用いる(詳細は[3])
– パラメータ 𝒙 ∈ 𝔰𝔢 3 𝑛 × ℝ 𝑚 とその行列表記 𝜁 ∈ SE 3 𝑛 × ℝ 𝑚
互いの空間の写像は
exp: 𝔰𝔢 3 ↦ SE 3 , log: SE(3) ↦ 𝔰𝔢(3)
– 演算子⊞: 𝔰𝔢 3 × SE(3) → SE(3)
直接パラメータから行列表記を更新する演算子
𝜁 = 𝒙 ⊞ 𝜁0 ≡ 𝑒 𝑥 ⋅ 𝜁0
• 接ベクトル空間(パラメータ空間)を動かし最適化
– Gauss-Newton法で𝛿ずつ動かす
[3] B. Jose-Luis. A tutorial on se (3) transformation parameterizations and on-manifold optimization. University of Malaga, 2010.
18
3. Windowベースの最適化
• 今回最適化したいのは式(8)だが, 総和でなく残差ベクトル𝐫として
考えるっぽい?(論文の表記から見る感じ)
• 残差ベクトル𝐫の要素𝑟𝑘の定義
– 各画素は 𝒩𝑝 = 8として誤差を計算
– 今回, 最適化すべきパラメータはLie代数𝔰𝔢 3 を使って定義
(𝒙を動かすことで最適化パラメータも動かす)
(11)
19
3. Windowベースの最適化
• Jacob行列𝐽 𝑘の定義
– Gauss-Newton法において𝒙を動かす方向(勾配を降りる)となる
– Jacob行列は𝛿geo = 𝐓𝑖, 𝐓𝑗, 𝑑, 𝒄 , 𝛿photo = (𝑎𝑖, 𝑎𝑗, 𝑏𝑖, 𝑏𝑗)で分割
– これにより以下2つの近似を行うことができる
• First Estimate Jacobians [4]による安定性の確保?
– 𝐽geo, 𝐽photoは𝒙に対してsmoothな空間になっている
• 𝐽geoは𝒩𝑝全体で等しくなるので中央画素だけ計算する(削減)
(12)
(13)
[4] G. P. Huang, A. I. Mourikis, and S. I. Roumeliotis. A first-estimates Jacobian EKF for improving SLAM consistency. In International Symposium on Experimental Robotics, 2008.
6
20
3. Windowベースの最適化
• Gauss-Newton法による最適化
1. パラメータ𝒙の更新(何をやっているかは[5]が参考になる)
1. First Estimate Jacobiansにより𝒙 = 0からスタート
2. 式(11),式(12)からパラメータ𝒙における以下の要素を計算
3. 上式から𝒙から勾配を降りる幅𝜹を計算
4. パラメータ𝒙を更新する
(式(12)を 𝜹 + 𝒙 ⊞ 𝜻0 ⟶ 𝜹 ⊞ (𝒙 ⊞ 𝜻0)にした場合は次式)
2. 行列表記𝜻0の更新
上の1iterationが終わったら, Marginalizationの項でない変数
を更新し, 𝒙 = 0からスタートできるようにする
(10)
(14)
[5] E. Ethan. Gauss-Newton / Levenberg-Marquardt optimization. 2013.
21
3. Windowベースの最適化
• Marginalizationの方法
– 変数が増加し過ぎるとヤバいのでHessianの疎な構造に影響を与
える古い変数を除外する
– フレーム𝑖を除外する時にはまず最新の2枚のKFで観測されない
点を除外してから, 残りの点を除外する
– 手順としては以下(何をやっているかは[6]が参考になる)
1. Marginalizeする変数を全て含んだ誤差関数𝐸′を展開
– 𝐇 や bに関しては前ページで定義したもの.
(15)
[6] 岡谷貴之, et al. バンドルアジャストメント. 研究報告コンピュータビジョンとイメージメディア (CVIM), 2009, 2009.37: 1-16.
22
3. Windowベースの最適化
2. 式(15)の右辺を最小化するので, 微分して0を取ると
– この時, 𝛽がMarginalizeする変数ブロック
3. Schurの補行列によって𝛼ブロックのみを取り出して
4. 最終的に𝛼ブロックのみの誤差関数は以下となり, 𝐸photoに
足し合わせることで𝛼ブロックの変数のみ最適化される
𝐇𝒙 = 𝐛′ ⇔ (16)
(17,18)
(19)
2. DSOのFront-End部分の解説
24
Front-Endの概要
大きく分けて以下のアルゴリズムで構成される
• 𝑬 𝐩𝐡𝐨𝐭𝐨の以下の構成要素の決定(outlier, occlusionの決定)
– フレーム番号の集合ℱ
– フレーム𝑖上の全ての点集合𝓟𝑖
– 点𝒑が観測されたフレーム集合obs(𝒑)
• 𝑬 𝐩𝐡𝐨𝐭𝐨の計算に用いる, 新しいパラメータに対する初期化
– 近似のため, 画像𝐼の線形化は1-2pixel半径の間だけ有効に
• 点とフレームに関するMarginalizationをいつ行うか?の決定
indirectな手法におけるKF detectorやRANSACによる初期化手順関連
のいろいろな部分を書き換えて達成される(今回は単眼を想定)
(8)
25
1. Frameの操作手順
1. Frame追跡の初期化
– 常に最大𝑁𝑓(= 7)個のKFを保持(参照フレーム)
– 新しいKFが作成されると, 参照フレーム中の全ての点が投影+僅
かに拡張され, semi-denseな深さマップが作られる
– 新しいFrameはこれらのKFだけを参照してTracking.
(Multi-scale Image Pyramid + 定速度モデル)
26
1. Frameの操作手順
– RMSEが前フレームの2倍になった場合には失敗と見なし, 最大
27の異なる方向で小さく回転を加えてrecovery-trackingをする
• Pyramid levelが一番高い(画質が粗い)スケールでのみ行う
• 1試行に約0.5msかかる
• この手順はほとんど起こらないし(cameraをぶん回した時),
IMUを使えば不要になると言っている
2. KFの作成
– ORB-SLAMと同様にできるだけ多くのKFを取って(5~10 KF/s),
後でMarginalizationで除去するという戦略
– 以下の基準でKFを採用する
1. 新しいKFは見える範囲で作成
– Mean square optical flowを計算 (最新KFとFrame間)
2. カメラの並進運動でocclusionができた場合
– Mean flowを計算 (𝒑 𝑡
′
は𝐑 = 𝐈3×3として計算した点)
3. カメラの露光時間が急激に変化した時
– 2フレーム間の輝度パラメータで計算
27
1. Frameの操作手順
– 以上での計算結果の値から以下の不等式を満たす場合にKFが作
成される. (𝑇kfの値でKFの数を調節できる)
(𝑤𝑓, 𝑤𝑓𝑡
, 𝑤 𝑎は相対的な重み, デフォルトで𝑇kf = 1)
28
1. Frameの操作手順
3. KFに対するMarginalization
– 𝐼1, … 𝐼 𝑛を時系列順のアクティブなKFとする(𝐼1が最新)
– Hessianの疎な構造を保つため, 以下の手順に従う
1. 常に最新の2枚のKFを保持(𝐼1と𝐼2)
2. 𝐼1の観測点の5%以下の点しか持たないFrameを除外する
3. 𝑁𝑓枚以上のフレームがアクティブな場合, 𝐼1と𝐼2を除いた中
で距離スコア𝑠(𝐼𝑖)を最大化するものを除外する
– KFが良く分布するようにヒューリスティックに設計
(𝑑 𝑖, 𝑗 は𝐼𝑖と𝐼𝑗間のユークリッド距離, 𝜖は小さい定数)
– 準最適な手法だが, 効率的にエネルギー関数を最適化できる?
29
1. Frameの操作手順
(20)
– 過去6枚のKFの一覧が以下. 黒点が既にMarginalizedされた点
– 点群全体を可視化した結果が以下. 右下が新しいKFの様子.
30
1. Frameの操作手順
31
2. Pointの操作手順
• 既存のdirectな手法ではできる限り画像を使っているが, 実時間で行
うには, 線形近似や深度三角測量は準最適化+パラメータ間の相関の
無視が必要
• 我々はデータを大幅にサンプリングし, 共同最適化を行う戦略
– データはかなり冗長であり, 単純に多くのデータポイントを使用
する利点はあまりないことが実験で分かった
– 弱テクスチャ領域, 繰り返される領域, エッジ領域などの全ての
データからサンプリングできることが強み
32
2. Pointの操作手順
1. 候補点の選択
– 空間やフレーム内で均等に分布するアクティブな𝑁𝑝(=2000)個
の点を常に保持することを目指す.
– 具体的には以下の戦略で選ばれる.
1. 画像中で良い感じに分布している
2. 環境毎に十分高い画素勾配の強度を持つ
– Region-adaptiveな勾配の閾値を得るために画像を32 × 32に分
割し, 閾値を 𝑔 + 𝑔𝑡ℎと定める
( 𝑔はブロック中の輝度勾配の絶対値の中央値, 𝑔𝑡ℎ(= 7)は定数)
– 均一な分布のために画像を𝑑 × 𝑑に分割し, それぞれで閾値を超
えた最大勾配の画素を選択
– 取れなかった場合, 閾値を減らすのとブロックサイズを2𝑑,
4𝑑にすることで調節し, 点を取得する
– Photometric修正をしていない元画像を用いる
33
2. Pointの操作手順
– 候補点を選択する様子
• 上段が元画像, 下段が2000点の候補点が選択された様子
• 1回目に選ばれた点が緑, 2回目3回目が赤, 青
• 2回目以降で画素強度が弱い, 疎な領域の点を追加している
34
2. Pointの操作手順
2. 候補点のTracking
– 候補点のTrackingは連続するフレームで, 式(4)を最小化しなが
らエピポーラ線上で離散的に探索
– 最良の一致点で深度と分散を計算し, フレーム間の探索間隔を
制限する
– 計算された深度は点がアクティブになった時の初期化に使う
– LSD-SLAMから発想を得ている
35
2. Pointの操作手順
3. 候補点のアクティブ化
– 古い点がmarginalizedされた時に, 交代で新しい候補点をアク
ティブ化するが, この時に画像で分布が均一になるように点を
選ぶ
– 全てのアクティブな点を最新のKFに投影した状態で, 残りの候
補点を投影し, その中で既存のアクティブな点との距離が最大
となるような点をアクティブ化する
– 以下は最終的に得られたアクティブな点の分布例
36
2. Pointの操作手順
• OutlierとOcclusionの検知
– 画像に含まれがちなOutlierを早く特定し, 除去する
1. 候補点のTrackingの時にエピポーラ線上を探索する時に,
絶対に最小点にならない点を永久に破棄する
– 繰り返し模様の領域ではかなり間違いを減らせる
2. 式(4)の測光誤差が閾値を超えた観測点を除外する
– 閾値はフレームの残差の中央値で連続的に調節
– 悪いフレーム(モーションブラーがある等)では閾値が高
くなり, 全ての観測点が除外される
– 良いフレームでは逆に閾値が下がって取りやすくなる
Results
38
Results
• 用いたデータセット
– TUM-monoVO dataset : 屋内および屋外の数十の異なる環境
で記録された105分のビデオを含む、50本の測光較正済映像
• Alignment誤差 (𝑒align)で評価(Loop Close GTを含む)
– EuRoC MAV dataset : 3つの異なる室内環境で記録された19
分のビデオからなる11本のステレオ映像
• 測光較正または露光時間は利用できない(𝜆 𝑎 = 𝜆 𝑏 = 0)
• 並進RMSEである絶対軌跡誤差(𝑒ate)で評価
• 最初の方は不安定なのでトリミング
– ICL-NUIM dataset : 2つの室内環境から4.5分のビデオを含む
8本のレイトレース映像
• 測光画像補正は不要であり, 全ての露光時間を𝑡 = 1と設定
• 絶対軌跡誤差(𝑒ate)で評価
39
Results
• TUM-monoVO datasetの例
– DSOの深度推定結果を重ね合わせた単眼映像の一例
– 105分の映像(190,000 frames)
40
Results
• 評価の方法
– 全ての映像列を順方向, 逆方向それぞれ5回ずつ計10回実験
• TUM-monoVO datasetは500回、EuRoC MAV datasetは2
20回、ICR-NUIM datasetは80回実験
– ORB-SLAMでは映像を20%の速度で再生しているが、DSOはシ
ングルスレッドで実行するので実時間よりも4倍かかる
• リアルタイムと同じパラメータで評価
– 結果は累積エラー(dataset全体でエラー値の累積和)で評価
– LSD-SLAMとSVOは途中で失敗しがちだったので, 単眼ORB-SL
AM(loop closureとrelocalization無効化)と比較
– 全部のdatasetでパラメータは同じだが, 例外としてICL-NUIM
datasetではDSOで𝑔𝑡ℎ = 3, ORB-SLAMのFAST閾値を2に調整
41
性能の比較
• EuRoC MAV dataset(左)とICL-NUIM dataset(右)
– RT:無理やりリアルタイムにした評価(Intel i7-4910MQ CPU)
– LQ:DSOでリアルタイムの5倍の速さでの評価
(𝑁𝑝 = 800, 𝑁𝑓 = 6, 解像度 420 × 320, GN法のiteration≤ 4)
– 𝑡 𝑚𝑎𝑥 = 10𝑠:ORB-SLAMでLoop Closureのタイミングを調節
– EuRoCでは微妙にORBの方が良い(photo calibなし+loop可)
精度が悪い
42
性能の比較
• EuRoC MAV dataset(左)とICL-NUIM dataset(右)
– 絶対軌跡誤差𝑒ate を映像列毎に全ての結果を可視化
• 順方向と逆方向それぞれ10回ずつ
43
性能の比較
• TUM-monoVO dataset
– Alignment誤差(𝑒align)に加えて, 回転誤差(𝑒r)とスケールドリフ
ト誤差(𝑒s)を可視化
– 𝑒sに関しては𝑒′s = max(𝑒𝑠, 𝑒𝑠
−1)で評価
精度が悪い
44
性能の比較
• TUM-monoVO dataset
– Alignment誤差(𝑒align)を全ての結果を可視化
• 順方向と逆方向それぞれ10回ずつ
45
パラメータの比較
• Photometric Calibrationの有無
– TUM-monoVO datasetで以下を徐々に無効化することで比較
1. 露光時間(𝑡𝑖 = 1, 𝜆 𝑎 = 𝜆 𝑏 = 0)
2. レンズ減衰(𝑉 𝐱 = 1)
3. 反応関数(𝐺−1
= 1. ~2.)
4. 輝度定数(𝜆 𝑎 = 𝜆 𝑏 = ∞, アフィン輝度修正なし)
精度が悪い
46
パラメータの比較
• 利用するデータの数(点とフレームの数)
– TUM-monoVO datasetで𝑁𝑝と𝑁𝑓を変化させて比較
精度が悪い
47
パラメータの比較
• 利用するデータの選び方(点選択の閾値)
– TUM-monoVO datasetで以下を比較
• 点選択の閾値𝑔thを変化させた場合(左)
• 点としてFASTコーナーのみを利用した場合(右)
精度が悪い
48
パラメータの比較
• KFの数
– TUM-monoVO datasetでKF作成時の閾値𝑇kfを変化させて比較
• KFの数を減らすとocclusionが多い状況でロバスト性低下
• KFの数を増え過ぎるとmarginalizationがすぐに起こり, 線
形近似された点のエラーが積み重なっていく?
精度が悪い
49
パラメータの比較
• Residual pattern
– TUM-monoVO datasetでパターン𝒩𝑝を変化させて比較
精度が悪い
50
ノイズの比較
• Indirect vs directの間での根本的な違いはノイズの仮定方法
– Geometric Noise:特徴点検出器による𝑢, 𝑣方向の位置に関す
る誤差(Indirectな手法で仮定される)
– Photometric Noise:ピクセル単位での測光強度の誤差(Direc
tな手法で仮定される)
• TUM-monoVO datasetにこれらのノイズを加えて評価する
• Geometric Noise
– −𝛿 𝑔, 𝛿 𝑔
2
の一様分布のFlow-map 𝑁𝑔: Ω → ℝ2
– ORB-SLAMの方がロバスト性能が高い
51
ノイズの比較
精度が悪い
52
ノイズの比較
• Photometric Noise
– −𝛿 𝑔, 𝛿 𝑔
2
の一様分布のblur-map 𝑁𝑔: Ω → ℝ2
– DSOの方がロバスト性能が高い
精度が悪い
53
ノイズの比較
• 考察
– よくcalibrationされたデータに対してはdirectな手法はかなり強
いが, Rolling shutterや内部パラメータが不正確な時には不向き
– スマホやweb cameraなどではindirectな手法が優れている
• 解像度や光感度を重視する傾向にあるため
– Machine Vision用のカメラではdirectで優れた性能を出せる
• 幾何学的な精度を重視するため
54
3D復元の結果
• 点の推定密度の比較
– 点の数𝑁𝑝を変化させた時の可視化結果
𝑁 𝑝=500
𝑁 𝑝=2,000
𝑁 𝑝=10,000
55
3D復元の結果
• 最終的な3D復元結果
– 評価に用いたdatasetそれぞれの3D復元結果を可視化
56
まとめ
• リアルタイムで動作可能なDirectでsparseな手法を提示
– Direct:コーナーだけでない全ての点を利用できる
– Sparse:全てのモデルパラメータを効率的に共同最適化
• 既存の3つのDatasetで評価すると既存のindirectな手法に勝った
1. より多くのデータを使用するだけでは追跡精度は上がらず
2. コーナーのみでなく全ての点の使用で正確性が大幅に向上
3. Photometric Calibrationを組み込むことで性能が向上
• Directな手法では測光誤差に対して強いので, Machine Vision用の
カメラを使えば優れた性能を出せる
– 一般のカメラやWeb cameraではindirectな手法の方が強い
• 今回はVOだが, BAやincremental smoothing & mapping等の最適
化ライブラリと統合できる
57
参考文献
• J. Engel, V. Koltun, D. Cremers. Direct sparse odometry. IEEE Transactions on
Pattern Analysis and Machine Intelligence, 2017.
- 本論文
• J. Engel, V. Usenko, D. Cremers. A Photometrically Calibrated Benchmark For
Monocular Visual Odometry, In arXiv:1607.02555, 2016.
- Photometric Calibrationの詳細(本スライド引用[1])
• E. Ethan. Gauss-Newton / Levenberg-Marquardt optimization. 2013.
- Gauss-Newton法の説明資料(本スライド引用[5])
• B. Jose-Luis. A tutorial on se (3) transformation parameterizations and on-m
anifold optimization. University of Malaga, 2010.
- CVにおけるLie代数の説明資料(本スライド引用[3])
• 岡谷貴之, et al. バンドルアジャストメント. 研究報告コンピュータビジョンとイ
メージメディア (CVIM), 2009, 2009.37: 1-16.
- BAの最適化に関する入門資料(本スライド引用[6])
• B. Simon, I. MATTHEWS. Lucas-Kanade 20 Years On: A Unifying Framewor
k. International journal of computer vision, 2004, 56.3: 221-255.
- DirectなSLAMの最適化に使われるLucas-Kanade法の説明資料(Gauss-Ne
wton法, Levenberg-Marquardt法の部分が参考になった)

More Related Content

PDF
SLAMチュートリアル大会資料(ORB-SLAM)
PDF
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
PDF
相関と因果について考える:統計的因果推論、その(不)可能性の中心
PDF
深層学習によるHuman Pose Estimationの基礎
PDF
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
PDF
LiDAR-SLAM チュートリアル資料
PDF
Lucas kanade法について
PDF
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SLAMチュートリアル大会資料(ORB-SLAM)
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
相関と因果について考える:統計的因果推論、その(不)可能性の中心
深層学習によるHuman Pose Estimationの基礎
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
LiDAR-SLAM チュートリアル資料
Lucas kanade法について
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~

What's hot (20)

PDF
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
PPTX
SLAM勉強会(PTAM)
PDF
20190307 visualslam summary
PPTX
ORB-SLAMの手法解説
PPTX
Structure from Motion
PPTX
SLAM勉強会(3) LSD-SLAM
PDF
オープンソース SLAM の分類
PDF
Visual slam
PDF
20190825 vins mono
PDF
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
PDF
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
PDF
SLAM入門 第2章 SLAMの基礎
PPTX
CNN-SLAMざっくり
PDF
ORB-SLAMを動かしてみた
PDF
30th コンピュータビジョン勉強会@関東 DynamicFusion
PPTX
SuperGlue; Learning Feature Matching with Graph Neural Networks (CVPR'20)
PDF
SLAMチュートリアル大会 Direct Sparse Odometry 紹介
PDF
SLAM開発における課題と対策の一例の紹介
PDF
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
PDF
20090924 姿勢推定と回転行列
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
SLAM勉強会(PTAM)
20190307 visualslam summary
ORB-SLAMの手法解説
Structure from Motion
SLAM勉強会(3) LSD-SLAM
オープンソース SLAM の分類
Visual slam
20190825 vins mono
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
SLAM入門 第2章 SLAMの基礎
CNN-SLAMざっくり
ORB-SLAMを動かしてみた
30th コンピュータビジョン勉強会@関東 DynamicFusion
SuperGlue; Learning Feature Matching with Graph Neural Networks (CVPR'20)
SLAMチュートリアル大会 Direct Sparse Odometry 紹介
SLAM開発における課題と対策の一例の紹介
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
20090924 姿勢推定と回転行列
Ad

Similar to Direct Sparse Odometryの解説 (20)

PPTX
猫でも分かるVariational AutoEncoder
PPTX
Eccv2018 report day3
PDF
CVPR2019 読み会「Understanding the Limitations of CNN-based Absolute Camera Pose ...
PDF
虹彩認証 - Introduction to Biometrics
PDF
A Brief Survey of Schrödinger Bridge (Part I)
PDF
ハイブリッドロケットエンジンによる多段式打ち上げ機
PDF
信号処理・画像処理における凸最適化
PDF
(文献紹介)Deep Unrolling: Learned ISTA (LISTA)
PDF
Sparse Codingをなるべく数式を使わず理解する(PCAやICAとの関係)
PDF
ランダムフォレスト
PPTX
MIRU MIRU わかる GAN
PPTX
[DL輪読会]SOLAR: Deep Structured Representations for Model-Based Reinforcement L...
PPTX
UE4のレイトレで出来ること/出来ないこと
PDF
コンピューテーショナルフォトグラフィ
PDF
[DL輪読会] Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
PDF
AI2: Safety and Robustness Certification of Neural Networks with Abstract Int...
 
PDF
大規模地震シミュレーション1
PPTX
関東CV勉強会20140802(Face Alignment at 3000fps)
PDF
attention_is_all_you_need_nips17_論文紹介
PDF
時系列解析の使い方 - TokyoWebMining #17
猫でも分かるVariational AutoEncoder
Eccv2018 report day3
CVPR2019 読み会「Understanding the Limitations of CNN-based Absolute Camera Pose ...
虹彩認証 - Introduction to Biometrics
A Brief Survey of Schrödinger Bridge (Part I)
ハイブリッドロケットエンジンによる多段式打ち上げ機
信号処理・画像処理における凸最適化
(文献紹介)Deep Unrolling: Learned ISTA (LISTA)
Sparse Codingをなるべく数式を使わず理解する(PCAやICAとの関係)
ランダムフォレスト
MIRU MIRU わかる GAN
[DL輪読会]SOLAR: Deep Structured Representations for Model-Based Reinforcement L...
UE4のレイトレで出来ること/出来ないこと
コンピューテーショナルフォトグラフィ
[DL輪読会] Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
AI2: Safety and Robustness Certification of Neural Networks with Abstract Int...
 
大規模地震シミュレーション1
関東CV勉強会20140802(Face Alignment at 3000fps)
attention_is_all_you_need_nips17_論文紹介
時系列解析の使い方 - TokyoWebMining #17
Ad

More from Masaya Kaneko (8)

PDF
Unsupervised Collaborative Learning of Keyframe Detection and Visual Odometry...
PPTX
GN-Net: The Gauss-Newton Loss for Deep Direct SLAMの解説
PPTX
論文読み会@AIST (Deep Virtual Stereo Odometry [ECCV2018])
PDF
Neural scene representation and rendering の解説(第3回3D勉強会@関東)
PPTX
論文読み会2018 (CodeSLAM)
PPTX
Dynamic Routing Between Capsules
PDF
論文読み会(DeMoN;CVPR2017)
PDF
コンピュータ先端ガイド2巻3章勉強会(SVM)
Unsupervised Collaborative Learning of Keyframe Detection and Visual Odometry...
GN-Net: The Gauss-Newton Loss for Deep Direct SLAMの解説
論文読み会@AIST (Deep Virtual Stereo Odometry [ECCV2018])
Neural scene representation and rendering の解説(第3回3D勉強会@関東)
論文読み会2018 (CodeSLAM)
Dynamic Routing Between Capsules
論文読み会(DeMoN;CVPR2017)
コンピュータ先端ガイド2巻3章勉強会(SVM)

Direct Sparse Odometryの解説

  • 1. Direct Sparse Odometry 東京大学 相澤山崎研究室 Qoncept Internship 2018/01/13 B4 金子 真也
  • 2. 1 What is this? • 現在, 株式会社Qoncept(http://qoncept.jp/)でのInternshipに参 加しており, その成果の一つとして作成した資料です. • 近年VOとしてかなり精度が高いと話題のDirect Sparse Odometry (https://vision.in.tum.de/research/vslam/dso)の論文を翻訳し まとめました. • DSOに関する日本語の文献は現在かなり少ないので, 参考になると 思い公開しました. • 私自身, 勉強中の身で理解が甘い箇所が多々あると思うので, 何かコ メント等あれば気軽にお願いします. • 本スライド中の数式番号は元論文に対応した番号を付けています (違う論文の数式の場合は番号に引用を付けています)
  • 5. 4 Abstract • SLAMやVOは特徴点ベース(indirect)の手法が長い間主流だったが, 近年はdirectでdenseな手法が人気。 • Direct vs Indirect, Dense vs Sparseの2軸で方法を分類できる • 本論文はDirect + Sparseという部分の方法を提案する 手法 Direct Indirect Sparse DSO(本手法) monoSLAM(2007) PTAM(2007) ORB-SLAM(2015) Dense/ Semi-Dense DTAM(2011) LSD-SLAM(2014) 3D geometry Estimation ...
  • 6. 5 Motivation • Direct – 特徴点ベース(Indirect)の手法の利点としては画像中の幾何学的 歪みに対して頑強性を持つ – 一方, Directな手法では点がそれ自身認識する必要がないため, より細かい幾何学表現が可能 + 輝度の微弱な変化を含めたデー タ全体からサンプリングできるのでテクスチャがまばらな環境 でも頑強な性能を持つ • Sparse – Sparseな場合にはgeo-geoが対角行列(青)なので, Schur補元を 使って簡単にBAができる – 一方, Directな場合にはgeo-geo の相関関係が生じるため(橙), 上 の方法では足りずBAが難しい (工夫が必要)
  • 7. 6 Contribution • 全てのモデルパラメータの完全尤度の最適化は一般的にDirectな手 法で行われているため, Direct + Sparseな手法を提案 – Cameraの位置, 内部パラメータ, および幾何学パラメータ等 • 最適化はsliding windowベースで行い, 古いカメラの位置は除外 • 既存の手法と異なり, カメラのphotometric calibrationを十分に 活用することで正確さと頑強性を向上させる • CPUベースの実装であり, かつLSD-SLAM[1]と同じ密度のモデルを 作りながら, 既存の手法を上回る精度と頑強性 + 5倍の速さ [1] J. Engel, T. Schops, and D. Cremers. LSD-SLAM: Largescale direct monocular SLAM. In European Conference on Computer Vision (E CCV), 2014.
  • 9. 8 Method 以下の手順で解説する 1. Direct-Sparse Modelの解説 1. Camera Calibration Geometric Calibration + Photometric Calibration 2. Modelの定式化 3. Windowベースの最適化 2. DSOのFront-End部分の解説 1. Frameの操作手順 2. Pointの操作手順
  • 11. 10 1. Camera Calibration • Directな手法ではこの部分がかなり大事 – Indirectな手法では特徴抽出器・記述子は測光の変動に頑強性を 持つのでこの操作の大部分は無視することができる – Geometric CalibrationとPhotometric Calibrationの2種類で モデル化する • Geometric Calibration – よく知られたピンホールカメラモデル – 3D点 𝑥, 𝑦, 𝑧 ∈ ℝ3 から画像点 𝑢 𝑑, 𝑣 𝑑 ∈ Ωへ (投影関数であり, Π 𝑐 ∶ ℝ3 → Ω と表記) (1)[1] [1] J. Engel, V. Usenko, D. Cremers. A Photometrically Calibrated Benchmark For Monocular Visual Odometry, In arXiv:1607.02555, 2016.
  • 12. 11 1. Camera Calibration – 今回は歪みあり画像点 𝑢 𝑑, 𝑣 𝑑 から歪みなし画像点 𝑢 𝑢, 𝑣 𝑢 へ変換 – この点を三次元へ変換する際には以下の変換を行う (逆投影関数であり, Π 𝑐 −1 ∶ ℝ × Ω → ℝ3 と表記) – 今回のcalibrationはPTAM[2]の実装を使い,チェックボードを用 いることで [𝑓𝑥, 𝑓𝑦, 𝑐 𝑥, 𝑐 𝑦, 𝜔]を推定 [1] J. Engel, V. Usenko, D. Cremers. A Photometrically Calibrated Benchmark For Monocular Visual Odometry, In arXiv:1607.02555, 2016. [2] G. Klein and D. Murray. Parallel tracking and mapping for small AR workspaces. In International Symposium on Mixed and Augmented Reality (ISMAR), 2007. (2,3) [1]
  • 13. 12 • Photometric Calibration – 非線形反応関数𝐺 + レンズ減衰𝑉でモデル化 – フレーム𝑖において, これらを組み合わせたモデルは以下で定義 𝐵𝑖は放射照度, 𝐼𝑖は観測されたピクセル強度, 𝑡𝑖は露光時間 – フレーム𝐼𝑖を測光修正し, 修正フレーム𝐼′𝑖を得るには上の式から 反応関数𝐺 レンズ減衰𝑉 露光時間𝑡 (2) (3) 1. Camera Calibration
  • 14. 13 2. Modelの定式化 • 参照フレーム𝐼𝑖上の点𝒑 ∈ Ω𝑖が, 対象のフレーム𝐼𝑗で観測された時の 測光誤差を定義 – ピクセル近傍のパターン𝒩𝑝の重み付きSSDにより計算 • モーションブラーに頑強に • フレーム𝑰𝒊, 𝑰𝒋間の測光誤差 – 𝒩𝑝は近傍パターン, 𝑡𝑖, 𝑡𝑗は露光時間, ∙ 𝛾はHuberノルム – 𝒑′は逆深度𝑑 𝒑による𝒑の投影点 パターン𝒩𝑝の例 参照フレーム𝐼𝑖 (位置𝐓𝑖) 対象フレーム𝐼𝑗 (位置𝐓𝑗) 𝒑 𝓝 𝒑 𝒑′ 深度1/𝑑 𝒑 逆投影関数 Π 𝑐 −1 投影関数 Π 𝑐 :相対的なカメラの動き (4) (5,6)
  • 15. 14 2. Modelの定式化 – 露光時間が未知の場合のためにもアフィン輝度変換関数として, 𝑒−𝑎 𝑖(𝐼𝑖 − 𝑏𝑖)を含めている – Huber損失に加えて, 画素勾配に依存した重み𝑤 𝒑を定義 • 勾配が高いピクセルに関しては重み小に(ノイズを抑える) – まとめると測光誤差𝐸 𝒑𝑗は以下の要素に依存している 1. 点の逆深度値𝑑 𝒑 2. カメラの内部パラメータ𝑐 3. フレームの位置𝐓𝑖, 𝐓𝑗 4. 輝度変換関数のパラメータ𝑎𝑖, 𝑏𝑖, 𝑎𝑗, 𝑏𝑗 (7)
  • 16. 15 2. Modelの定式化 • 全体の測光誤差 – 全てのフレーム番号の集合ℱにおいて, 𝑖番目のフレーム – フレーム𝑖上の全ての点集合𝓟𝑖の中で点𝒑 – 点𝒑が観測されたフレーム集合obs(𝒑)の中で, 𝑗番目のフレーム • 古典的な再投影誤差との違いは1枚だけでなく, それぞれの項が2枚 のフレームに依存されていること • KF毎の測光誤差の依存関係グラフの例 は右のようになる (8)
  • 17. 16 2. Modelの定式化 • 点の持つパラメータ数に関して – Directな手法では点の持つパラメータ数を抑えられる • 点利用の一貫性 – 今回は観測点をひたすら何度も使い, 使わない点は全く使わない • 画像から点を取得する際に重複を許しているため – 空間内に点を分布させ, テクスチャが少ないシーンでもうまく推 定できるようにする 手法 点の次元数 理由 Direct 1 (depth) 逆深度値の推定のみ Indirect 3 (X,Y,Z) コーナー位置の推定(特徴点抽出) + 深さの推定
  • 18. 17 3. Windowベースの最適化 • 式(8)をsliding windowでGauss-Newton法を使うことで最適化 – 速度と柔軟さで良い性能を持つ • [定義] 表記としてLie代数 𝔰𝔢 3 とLie群 SE(3)を用いる(詳細は[3]) – パラメータ 𝒙 ∈ 𝔰𝔢 3 𝑛 × ℝ 𝑚 とその行列表記 𝜁 ∈ SE 3 𝑛 × ℝ 𝑚 互いの空間の写像は exp: 𝔰𝔢 3 ↦ SE 3 , log: SE(3) ↦ 𝔰𝔢(3) – 演算子⊞: 𝔰𝔢 3 × SE(3) → SE(3) 直接パラメータから行列表記を更新する演算子 𝜁 = 𝒙 ⊞ 𝜁0 ≡ 𝑒 𝑥 ⋅ 𝜁0 • 接ベクトル空間(パラメータ空間)を動かし最適化 – Gauss-Newton法で𝛿ずつ動かす [3] B. Jose-Luis. A tutorial on se (3) transformation parameterizations and on-manifold optimization. University of Malaga, 2010.
  • 19. 18 3. Windowベースの最適化 • 今回最適化したいのは式(8)だが, 総和でなく残差ベクトル𝐫として 考えるっぽい?(論文の表記から見る感じ) • 残差ベクトル𝐫の要素𝑟𝑘の定義 – 各画素は 𝒩𝑝 = 8として誤差を計算 – 今回, 最適化すべきパラメータはLie代数𝔰𝔢 3 を使って定義 (𝒙を動かすことで最適化パラメータも動かす) (11)
  • 20. 19 3. Windowベースの最適化 • Jacob行列𝐽 𝑘の定義 – Gauss-Newton法において𝒙を動かす方向(勾配を降りる)となる – Jacob行列は𝛿geo = 𝐓𝑖, 𝐓𝑗, 𝑑, 𝒄 , 𝛿photo = (𝑎𝑖, 𝑎𝑗, 𝑏𝑖, 𝑏𝑗)で分割 – これにより以下2つの近似を行うことができる • First Estimate Jacobians [4]による安定性の確保? – 𝐽geo, 𝐽photoは𝒙に対してsmoothな空間になっている • 𝐽geoは𝒩𝑝全体で等しくなるので中央画素だけ計算する(削減) (12) (13) [4] G. P. Huang, A. I. Mourikis, and S. I. Roumeliotis. A first-estimates Jacobian EKF for improving SLAM consistency. In International Symposium on Experimental Robotics, 2008. 6
  • 21. 20 3. Windowベースの最適化 • Gauss-Newton法による最適化 1. パラメータ𝒙の更新(何をやっているかは[5]が参考になる) 1. First Estimate Jacobiansにより𝒙 = 0からスタート 2. 式(11),式(12)からパラメータ𝒙における以下の要素を計算 3. 上式から𝒙から勾配を降りる幅𝜹を計算 4. パラメータ𝒙を更新する (式(12)を 𝜹 + 𝒙 ⊞ 𝜻0 ⟶ 𝜹 ⊞ (𝒙 ⊞ 𝜻0)にした場合は次式) 2. 行列表記𝜻0の更新 上の1iterationが終わったら, Marginalizationの項でない変数 を更新し, 𝒙 = 0からスタートできるようにする (10) (14) [5] E. Ethan. Gauss-Newton / Levenberg-Marquardt optimization. 2013.
  • 22. 21 3. Windowベースの最適化 • Marginalizationの方法 – 変数が増加し過ぎるとヤバいのでHessianの疎な構造に影響を与 える古い変数を除外する – フレーム𝑖を除外する時にはまず最新の2枚のKFで観測されない 点を除外してから, 残りの点を除外する – 手順としては以下(何をやっているかは[6]が参考になる) 1. Marginalizeする変数を全て含んだ誤差関数𝐸′を展開 – 𝐇 や bに関しては前ページで定義したもの. (15) [6] 岡谷貴之, et al. バンドルアジャストメント. 研究報告コンピュータビジョンとイメージメディア (CVIM), 2009, 2009.37: 1-16.
  • 23. 22 3. Windowベースの最適化 2. 式(15)の右辺を最小化するので, 微分して0を取ると – この時, 𝛽がMarginalizeする変数ブロック 3. Schurの補行列によって𝛼ブロックのみを取り出して 4. 最終的に𝛼ブロックのみの誤差関数は以下となり, 𝐸photoに 足し合わせることで𝛼ブロックの変数のみ最適化される 𝐇𝒙 = 𝐛′ ⇔ (16) (17,18) (19)
  • 25. 24 Front-Endの概要 大きく分けて以下のアルゴリズムで構成される • 𝑬 𝐩𝐡𝐨𝐭𝐨の以下の構成要素の決定(outlier, occlusionの決定) – フレーム番号の集合ℱ – フレーム𝑖上の全ての点集合𝓟𝑖 – 点𝒑が観測されたフレーム集合obs(𝒑) • 𝑬 𝐩𝐡𝐨𝐭𝐨の計算に用いる, 新しいパラメータに対する初期化 – 近似のため, 画像𝐼の線形化は1-2pixel半径の間だけ有効に • 点とフレームに関するMarginalizationをいつ行うか?の決定 indirectな手法におけるKF detectorやRANSACによる初期化手順関連 のいろいろな部分を書き換えて達成される(今回は単眼を想定) (8)
  • 26. 25 1. Frameの操作手順 1. Frame追跡の初期化 – 常に最大𝑁𝑓(= 7)個のKFを保持(参照フレーム) – 新しいKFが作成されると, 参照フレーム中の全ての点が投影+僅 かに拡張され, semi-denseな深さマップが作られる – 新しいFrameはこれらのKFだけを参照してTracking. (Multi-scale Image Pyramid + 定速度モデル)
  • 27. 26 1. Frameの操作手順 – RMSEが前フレームの2倍になった場合には失敗と見なし, 最大 27の異なる方向で小さく回転を加えてrecovery-trackingをする • Pyramid levelが一番高い(画質が粗い)スケールでのみ行う • 1試行に約0.5msかかる • この手順はほとんど起こらないし(cameraをぶん回した時), IMUを使えば不要になると言っている
  • 28. 2. KFの作成 – ORB-SLAMと同様にできるだけ多くのKFを取って(5~10 KF/s), 後でMarginalizationで除去するという戦略 – 以下の基準でKFを採用する 1. 新しいKFは見える範囲で作成 – Mean square optical flowを計算 (最新KFとFrame間) 2. カメラの並進運動でocclusionができた場合 – Mean flowを計算 (𝒑 𝑡 ′ は𝐑 = 𝐈3×3として計算した点) 3. カメラの露光時間が急激に変化した時 – 2フレーム間の輝度パラメータで計算 27 1. Frameの操作手順
  • 29. – 以上での計算結果の値から以下の不等式を満たす場合にKFが作 成される. (𝑇kfの値でKFの数を調節できる) (𝑤𝑓, 𝑤𝑓𝑡 , 𝑤 𝑎は相対的な重み, デフォルトで𝑇kf = 1) 28 1. Frameの操作手順
  • 30. 3. KFに対するMarginalization – 𝐼1, … 𝐼 𝑛を時系列順のアクティブなKFとする(𝐼1が最新) – Hessianの疎な構造を保つため, 以下の手順に従う 1. 常に最新の2枚のKFを保持(𝐼1と𝐼2) 2. 𝐼1の観測点の5%以下の点しか持たないFrameを除外する 3. 𝑁𝑓枚以上のフレームがアクティブな場合, 𝐼1と𝐼2を除いた中 で距離スコア𝑠(𝐼𝑖)を最大化するものを除外する – KFが良く分布するようにヒューリスティックに設計 (𝑑 𝑖, 𝑗 は𝐼𝑖と𝐼𝑗間のユークリッド距離, 𝜖は小さい定数) – 準最適な手法だが, 効率的にエネルギー関数を最適化できる? 29 1. Frameの操作手順 (20)
  • 31. – 過去6枚のKFの一覧が以下. 黒点が既にMarginalizedされた点 – 点群全体を可視化した結果が以下. 右下が新しいKFの様子. 30 1. Frameの操作手順
  • 32. 31 2. Pointの操作手順 • 既存のdirectな手法ではできる限り画像を使っているが, 実時間で行 うには, 線形近似や深度三角測量は準最適化+パラメータ間の相関の 無視が必要 • 我々はデータを大幅にサンプリングし, 共同最適化を行う戦略 – データはかなり冗長であり, 単純に多くのデータポイントを使用 する利点はあまりないことが実験で分かった – 弱テクスチャ領域, 繰り返される領域, エッジ領域などの全ての データからサンプリングできることが強み
  • 33. 32 2. Pointの操作手順 1. 候補点の選択 – 空間やフレーム内で均等に分布するアクティブな𝑁𝑝(=2000)個 の点を常に保持することを目指す. – 具体的には以下の戦略で選ばれる. 1. 画像中で良い感じに分布している 2. 環境毎に十分高い画素勾配の強度を持つ – Region-adaptiveな勾配の閾値を得るために画像を32 × 32に分 割し, 閾値を 𝑔 + 𝑔𝑡ℎと定める ( 𝑔はブロック中の輝度勾配の絶対値の中央値, 𝑔𝑡ℎ(= 7)は定数) – 均一な分布のために画像を𝑑 × 𝑑に分割し, それぞれで閾値を超 えた最大勾配の画素を選択 – 取れなかった場合, 閾値を減らすのとブロックサイズを2𝑑, 4𝑑にすることで調節し, 点を取得する – Photometric修正をしていない元画像を用いる
  • 34. 33 2. Pointの操作手順 – 候補点を選択する様子 • 上段が元画像, 下段が2000点の候補点が選択された様子 • 1回目に選ばれた点が緑, 2回目3回目が赤, 青 • 2回目以降で画素強度が弱い, 疎な領域の点を追加している
  • 35. 34 2. Pointの操作手順 2. 候補点のTracking – 候補点のTrackingは連続するフレームで, 式(4)を最小化しなが らエピポーラ線上で離散的に探索 – 最良の一致点で深度と分散を計算し, フレーム間の探索間隔を 制限する – 計算された深度は点がアクティブになった時の初期化に使う – LSD-SLAMから発想を得ている
  • 36. 35 2. Pointの操作手順 3. 候補点のアクティブ化 – 古い点がmarginalizedされた時に, 交代で新しい候補点をアク ティブ化するが, この時に画像で分布が均一になるように点を 選ぶ – 全てのアクティブな点を最新のKFに投影した状態で, 残りの候 補点を投影し, その中で既存のアクティブな点との距離が最大 となるような点をアクティブ化する – 以下は最終的に得られたアクティブな点の分布例
  • 37. 36 2. Pointの操作手順 • OutlierとOcclusionの検知 – 画像に含まれがちなOutlierを早く特定し, 除去する 1. 候補点のTrackingの時にエピポーラ線上を探索する時に, 絶対に最小点にならない点を永久に破棄する – 繰り返し模様の領域ではかなり間違いを減らせる 2. 式(4)の測光誤差が閾値を超えた観測点を除外する – 閾値はフレームの残差の中央値で連続的に調節 – 悪いフレーム(モーションブラーがある等)では閾値が高 くなり, 全ての観測点が除外される – 良いフレームでは逆に閾値が下がって取りやすくなる
  • 39. 38 Results • 用いたデータセット – TUM-monoVO dataset : 屋内および屋外の数十の異なる環境 で記録された105分のビデオを含む、50本の測光較正済映像 • Alignment誤差 (𝑒align)で評価(Loop Close GTを含む) – EuRoC MAV dataset : 3つの異なる室内環境で記録された19 分のビデオからなる11本のステレオ映像 • 測光較正または露光時間は利用できない(𝜆 𝑎 = 𝜆 𝑏 = 0) • 並進RMSEである絶対軌跡誤差(𝑒ate)で評価 • 最初の方は不安定なのでトリミング – ICL-NUIM dataset : 2つの室内環境から4.5分のビデオを含む 8本のレイトレース映像 • 測光画像補正は不要であり, 全ての露光時間を𝑡 = 1と設定 • 絶対軌跡誤差(𝑒ate)で評価
  • 40. 39 Results • TUM-monoVO datasetの例 – DSOの深度推定結果を重ね合わせた単眼映像の一例 – 105分の映像(190,000 frames)
  • 41. 40 Results • 評価の方法 – 全ての映像列を順方向, 逆方向それぞれ5回ずつ計10回実験 • TUM-monoVO datasetは500回、EuRoC MAV datasetは2 20回、ICR-NUIM datasetは80回実験 – ORB-SLAMでは映像を20%の速度で再生しているが、DSOはシ ングルスレッドで実行するので実時間よりも4倍かかる • リアルタイムと同じパラメータで評価 – 結果は累積エラー(dataset全体でエラー値の累積和)で評価 – LSD-SLAMとSVOは途中で失敗しがちだったので, 単眼ORB-SL AM(loop closureとrelocalization無効化)と比較 – 全部のdatasetでパラメータは同じだが, 例外としてICL-NUIM datasetではDSOで𝑔𝑡ℎ = 3, ORB-SLAMのFAST閾値を2に調整
  • 42. 41 性能の比較 • EuRoC MAV dataset(左)とICL-NUIM dataset(右) – RT:無理やりリアルタイムにした評価(Intel i7-4910MQ CPU) – LQ:DSOでリアルタイムの5倍の速さでの評価 (𝑁𝑝 = 800, 𝑁𝑓 = 6, 解像度 420 × 320, GN法のiteration≤ 4) – 𝑡 𝑚𝑎𝑥 = 10𝑠:ORB-SLAMでLoop Closureのタイミングを調節 – EuRoCでは微妙にORBの方が良い(photo calibなし+loop可) 精度が悪い
  • 43. 42 性能の比較 • EuRoC MAV dataset(左)とICL-NUIM dataset(右) – 絶対軌跡誤差𝑒ate を映像列毎に全ての結果を可視化 • 順方向と逆方向それぞれ10回ずつ
  • 44. 43 性能の比較 • TUM-monoVO dataset – Alignment誤差(𝑒align)に加えて, 回転誤差(𝑒r)とスケールドリフ ト誤差(𝑒s)を可視化 – 𝑒sに関しては𝑒′s = max(𝑒𝑠, 𝑒𝑠 −1)で評価 精度が悪い
  • 45. 44 性能の比較 • TUM-monoVO dataset – Alignment誤差(𝑒align)を全ての結果を可視化 • 順方向と逆方向それぞれ10回ずつ
  • 46. 45 パラメータの比較 • Photometric Calibrationの有無 – TUM-monoVO datasetで以下を徐々に無効化することで比較 1. 露光時間(𝑡𝑖 = 1, 𝜆 𝑎 = 𝜆 𝑏 = 0) 2. レンズ減衰(𝑉 𝐱 = 1) 3. 反応関数(𝐺−1 = 1. ~2.) 4. 輝度定数(𝜆 𝑎 = 𝜆 𝑏 = ∞, アフィン輝度修正なし) 精度が悪い
  • 47. 46 パラメータの比較 • 利用するデータの数(点とフレームの数) – TUM-monoVO datasetで𝑁𝑝と𝑁𝑓を変化させて比較 精度が悪い
  • 48. 47 パラメータの比較 • 利用するデータの選び方(点選択の閾値) – TUM-monoVO datasetで以下を比較 • 点選択の閾値𝑔thを変化させた場合(左) • 点としてFASTコーナーのみを利用した場合(右) 精度が悪い
  • 49. 48 パラメータの比較 • KFの数 – TUM-monoVO datasetでKF作成時の閾値𝑇kfを変化させて比較 • KFの数を減らすとocclusionが多い状況でロバスト性低下 • KFの数を増え過ぎるとmarginalizationがすぐに起こり, 線 形近似された点のエラーが積み重なっていく? 精度が悪い
  • 50. 49 パラメータの比較 • Residual pattern – TUM-monoVO datasetでパターン𝒩𝑝を変化させて比較 精度が悪い
  • 51. 50 ノイズの比較 • Indirect vs directの間での根本的な違いはノイズの仮定方法 – Geometric Noise:特徴点検出器による𝑢, 𝑣方向の位置に関す る誤差(Indirectな手法で仮定される) – Photometric Noise:ピクセル単位での測光強度の誤差(Direc tな手法で仮定される) • TUM-monoVO datasetにこれらのノイズを加えて評価する
  • 52. • Geometric Noise – −𝛿 𝑔, 𝛿 𝑔 2 の一様分布のFlow-map 𝑁𝑔: Ω → ℝ2 – ORB-SLAMの方がロバスト性能が高い 51 ノイズの比較 精度が悪い
  • 53. 52 ノイズの比較 • Photometric Noise – −𝛿 𝑔, 𝛿 𝑔 2 の一様分布のblur-map 𝑁𝑔: Ω → ℝ2 – DSOの方がロバスト性能が高い 精度が悪い
  • 54. 53 ノイズの比較 • 考察 – よくcalibrationされたデータに対してはdirectな手法はかなり強 いが, Rolling shutterや内部パラメータが不正確な時には不向き – スマホやweb cameraなどではindirectな手法が優れている • 解像度や光感度を重視する傾向にあるため – Machine Vision用のカメラではdirectで優れた性能を出せる • 幾何学的な精度を重視するため
  • 57. 56 まとめ • リアルタイムで動作可能なDirectでsparseな手法を提示 – Direct:コーナーだけでない全ての点を利用できる – Sparse:全てのモデルパラメータを効率的に共同最適化 • 既存の3つのDatasetで評価すると既存のindirectな手法に勝った 1. より多くのデータを使用するだけでは追跡精度は上がらず 2. コーナーのみでなく全ての点の使用で正確性が大幅に向上 3. Photometric Calibrationを組み込むことで性能が向上 • Directな手法では測光誤差に対して強いので, Machine Vision用の カメラを使えば優れた性能を出せる – 一般のカメラやWeb cameraではindirectな手法の方が強い • 今回はVOだが, BAやincremental smoothing & mapping等の最適 化ライブラリと統合できる
  • 58. 57 参考文献 • J. Engel, V. Koltun, D. Cremers. Direct sparse odometry. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017. - 本論文 • J. Engel, V. Usenko, D. Cremers. A Photometrically Calibrated Benchmark For Monocular Visual Odometry, In arXiv:1607.02555, 2016. - Photometric Calibrationの詳細(本スライド引用[1]) • E. Ethan. Gauss-Newton / Levenberg-Marquardt optimization. 2013. - Gauss-Newton法の説明資料(本スライド引用[5]) • B. Jose-Luis. A tutorial on se (3) transformation parameterizations and on-m anifold optimization. University of Malaga, 2010. - CVにおけるLie代数の説明資料(本スライド引用[3]) • 岡谷貴之, et al. バンドルアジャストメント. 研究報告コンピュータビジョンとイ メージメディア (CVIM), 2009, 2009.37: 1-16. - BAの最適化に関する入門資料(本スライド引用[6]) • B. Simon, I. MATTHEWS. Lucas-Kanade 20 Years On: A Unifying Framewor k. International journal of computer vision, 2004, 56.3: 221-255. - DirectなSLAMの最適化に使われるLucas-Kanade法の説明資料(Gauss-Ne wton法, Levenberg-Marquardt法の部分が参考になった)