Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SLAMチュートリアル大会資料(ORB-SLAM)

13,898 views

Published on

2017.05.27, 3D勉強会@関東 発表資料
論文紹介:ORB-SLAM

Published in: Technology
  • Login to see the comments

SLAMチュートリアル大会資料(ORB-SLAM)

  1. 1. 第1回 3D勉強会@関東 (2018/05/27) (SLAMチュートリアル大会) 論文紹介: ORB-SLAM 東京大学 相澤研究室所属 M1 金子 真也 (@syinari0123)
  2. 2. 1 自己紹介 • 氏名 – 金子 真也 (かねこ まさや) • 所属 – 東京大学大学院 学際情報学府 相澤研 M1 • 興味 – Visual SLAM/SfM, 深層学習 – 「乃木坂46メンバーを動画から三次元へ復元する」 (https://qiita.com/syinari0123/items/f8b8ae08a80002361855)
  3. 3. 2 本発表の目標 • 画像から三次元復元を行うVisual SLAMの話 – 入力は「画像」, 今回は単眼カメラ画像 – リアルタイム版SfM • Visual SLAMの代表例としてのORB-SLAM – リアルタイムなSfMを実現する機構の大雑把な理解 • 高速化?効率化? – 詳しい内容は論文 or 以下のメモスライド • 「ORB-SLAMの手法解説」 (https://www.slideshare.net/MasayaKaneko/orbslam-84842802)
  4. 4. 3 SfMのおさらい • SfM (Structure from Motion) – 問題設定 • 入力:様々な視点で撮影された画像群 • 出力:カメラ姿勢推定 + 三次元構造復元 画像群 カメラ姿勢推定 + 三次元構造復元
  5. 5. 4 SfM vs Visual SLAM • Visual SLAM (Simultaneous Localization and Mapping) – リアルタイムにSfMを解く問題 • 画像が入力される度にカメラ姿勢を推定 映像 カメラ姿勢推定 + 三次元構造復元
  6. 6. 5 SfM vs Visual SLAM • 問題設定の違い 手法 SfM Visual SLAM 主な目的 物体の三次元構造の復元 リアルタイムなカメラ姿勢推定 データの 与え方 画像群全て使える 逐次的に画像が挿入 問題設定 正確性 >>> 速度 正確性 < 速度 結果例
  7. 7. 6 逐次的な姿勢推定 • 逐次的なカメラ姿勢推定をどのように行うか? • 自己位置推定と地図作成を交互に行い実現 (Simultaneous Localization and Mapping) Tracking Local Mapping 地図に登録する 画像を選択 地図の提供 現在のカメラ姿勢を求める 地図の作成/修正
  8. 8. 7 逐次的な姿勢推定 • 逐次的なカメラ姿勢推定をどのように行うか? • 自己位置推定と地図作成を交互に行い実現 (Simultaneous Localization and Mapping) 時刻 t-1 過去の カメラの軌跡 現在時刻 t ? 地図 復元した 三次元構造 Tracking Local Mapping 地図に登録する 画像を選択 地図の提供 現在のカメラ姿勢を求める 地図の作成/修正
  9. 9. 8 逐次的な姿勢推定 • 逐次的なカメラ姿勢推定をどのように行うか? • 自己位置推定と地図作成を交互に行い実現 (Simultaneous Localization and Mapping) Tracking Local Mapping 地図に登録する 画像を選択 地図の提供 現在のカメラ姿勢を求める 地図の作成/修正 時刻 t-1 過去の カメラの軌跡 現在時刻 t ? 地図 復元した 三次元構造
  10. 10. 9 逐次的な姿勢推定 • 逐次的なカメラ姿勢推定をどのように行うか? • 自己位置推定と地図作成を交互に行い実現 (Simultaneous Localization and Mapping) 時刻 t-1 過去の カメラの軌跡 現在時刻 t ? 地図 復元した 三次元構造 局所的な最適化 Tracking Local Mapping 地図に登録する 画像を選択 地図の提供 現在のカメラ姿勢を求める 地図の作成/修正
  11. 11. 10 逐次的な姿勢推定 • 逐次的なカメラ姿勢推定をどのように行うか? • 自己位置推定と地図作成を交互に行い実現 (Simultaneous Localization and Mapping) 時刻 t-1 過去の カメラの軌跡 現在時刻 t 地図 復元した 三次元構造 Tracking Local Mapping 地図に登録する 画像を選択 地図の提供 現在のカメラ姿勢を求める 地図の作成/修正
  12. 12. • 逐次的なカメラ姿勢推定をどのように行うか? • 自己位置推定と地図作成を交互に行い実現 (Simultaneous Localization and Mapping) 11 逐次的な姿勢推定 Tracking Local Mapping 地図に登録する 画像を選択 地図の提供 現在のカメラ姿勢を求める 地図の作成/修正 時刻 t-1 過去の カメラの軌跡 現在時刻 t 地図 復元した 三次元構造
  13. 13. • 逐次的なカメラ姿勢推定をどのように行うか? • 自己位置推定と地図作成を交互に行い実現 (Simultaneous Localization and Mapping) 12 逐次的な姿勢推定 時刻 t-1 過去の カメラの軌跡 現在時刻 t 地図 復元した 三次元構造 Tracking Local Mapping 地図に登録する 画像を選択 地図の提供 現在のカメラ姿勢を求める 地図の作成/修正
  14. 14. 13 逐次的な姿勢推定 • 逐次的なカメラ姿勢推定をどのように行うか? • 自己位置推定と地図作成を交互に行い実現 (Simultaneous Localization and Mapping) 時刻 t-1 過去の カメラの軌跡 地図 復元した 三次元構造 ? 時刻 t 現在時刻 t+1 … Tracking Local Mapping 地図に登録する 画像を選択 地図の提供 現在のカメラ姿勢を求める 地図の作成/修正
  15. 15. 14 全体的な最適化 • 逐次的な姿勢推定では局所的な最適化のみしか 行わないため, 歪みが生じる – Loop Closingによる全体の軌跡の歪み修正 Loop Closing 歪み
  16. 16. 15 Visual SLAM まとめ • リアルタイムなカメラ姿勢推定の実現 – 局所的な最適化:Tracking + Local Mapping – 全体的な最適化:Loop Closing • 局所的な最適化だけ行う Visual Odometry (VO) • 全体的な最適化も考慮 Visual SLAM – Visual SLAM = VO + Loop Closing • ORB SLAMではどのようになっているか?
  17. 17. 16 ORB-SLAM • 局所的な最適化 + 全体的な最適化
  18. 18. 17 ORB-SLAM • 局所的な最適化 + 全体的な最適化 全体的な最適化 局所的な最適化
  19. 19. 18 1. 地図の定義1 • 構成要素 – 得られたカメラの画像𝐼𝐼𝑡𝑡と姿勢𝑇𝑇𝑡𝑡 – 三次元点群の復元結果 𝒙𝒙𝑖𝑖 • 対応する画像𝐼𝐼𝑡𝑡のORB特徴点 𝒖𝒖𝑡𝑡𝑡𝑡 • ORB特徴量 𝒃𝒃𝑡𝑡𝑡𝑡 • ORB特徴点(特徴量) : FAST corner + rBRIEF descriptor – 画像のcorner点, 回転/スケール不変な特徴量を持つ 𝑇𝑇𝑡𝑡 𝐼𝐼𝑡𝑡 𝒖𝒖𝑡𝑡𝑡𝑡 𝒙𝒙𝑖𝑖 … (特徴量𝒃𝒃𝑡𝑡𝑖𝑖)
  20. 20. 19 1. 地図の定義2 • Covisibility Graph – 三次元位置𝒙𝒙𝑖𝑖は基本的には複数の画像で共有 – 共有する点の数を可視化したGraphを定義 • 効率の良い最適化 (Local Mapping/Loop Closingで利用) • 共有点が多いnode同士のみ: Essential Graph Covisibility Graph Essential Graphカメラの姿勢 三次元点群 点の共有度(共有する点の数) を重みとしたedge
  21. 21. 20 2. Tracking [仕事1] 現在のカメラ姿勢を求める 1. 画像から特徴点抽出 2. 前の画像との点の対応を求める 3. 対応点を投影することでカメラ姿勢の最適化 画像 𝐼𝐼𝑡𝑡−1 画像 𝐼𝐼𝑡𝑡 (現在時刻) 𝒖𝒖𝑡𝑡−1,𝑖𝑖 𝐼𝐼𝑡𝑡−1 𝒖𝒖𝑡𝑡−1,𝑖𝑖 𝒙𝒙𝑖𝑖 𝐼𝐼𝑡𝑡 ? 地図
  22. 22. 21 2. Tracking [仕事1] 現在のカメラ姿勢を求める 1. 画像から特徴点抽出 2. 前の画像との点の対応を求める 3. 対応点を投影することでカメラ姿勢の最適化 画像 𝐼𝐼𝑡𝑡−1 画像 𝐼𝐼𝑡𝑡 (現在時刻) 𝒖𝒖𝑡𝑡−1,𝑖𝑖 𝐼𝐼𝑡𝑡−1 𝒖𝒖𝑡𝑡−1,𝑖𝑖 𝒙𝒙𝑖𝑖 𝐼𝐼𝑡𝑡 ? 地図 𝒖𝒖𝑡𝑡,𝑖𝑖
  23. 23. 22 2. Tracking [仕事1] 現在のカメラ姿勢を求める 1. 画像から特徴点抽出 2. 前の画像との点の対応を求める 3. 対応点を投影することでカメラ姿勢の最適化 画像 𝐼𝐼𝑡𝑡−1 画像 𝐼𝐼𝑡𝑡 (現在時刻) 𝒖𝒖𝑡𝑡−1,𝑖𝑖 𝐼𝐼𝑡𝑡−1 𝒖𝒖𝑡𝑡−1,𝑖𝑖 𝒙𝒙𝑖𝑖 𝐼𝐼𝑡𝑡 ? 地図 𝒖𝒖𝑡𝑡,𝑖𝑖
  24. 24. 23 2. Tracking [仕事1] 現在のカメラ姿勢を求める 1. 画像から特徴点抽出 2. 前の画像との点の対応を求める 3. 対応点を投影することでカメラ姿勢の最適化 画像 𝐼𝐼𝑡𝑡−1 画像 𝐼𝐼𝑡𝑡 (現在時刻) 𝒖𝒖𝑡𝑡−1,𝑖𝑖 𝐼𝐼𝑡𝑡−1 𝒖𝒖𝑡𝑡−1,𝑖𝑖 𝒙𝒙𝑖𝑖 𝐼𝐼𝑡𝑡 地図 𝒖𝒖𝑡𝑡,𝑖𝑖 𝑇𝑇𝑡𝑡−1,𝑡𝑡
  25. 25. 24 2. Tracking [仕事1] 現在のカメラ姿勢を求める 1. 画像から特徴点抽出 2. 前の画像との点の対応を求める 3. 対応点を投影することでカメラ姿勢の最適化 画像 𝐼𝐼𝑡𝑡−1 画像 𝐼𝐼𝑡𝑡 (現在時刻) 𝒖𝒖𝑡𝑡−1,𝑖𝑖 𝐼𝐼𝑡𝑡−1 𝒖𝒖𝑡𝑡−1,𝑖𝑖 𝒙𝒙𝑖𝑖 𝐼𝐼𝑡𝑡 地図 𝒖𝒖𝑡𝑡,𝑖𝑖 𝑇𝑇𝑡𝑡−1,𝑡𝑡
  26. 26. 25 2. Tracking [仕事1] 現在のカメラ姿勢を求める 1. 画像から特徴点抽出 2. 前の画像との点の対応を求める 3. 対応点を投影することでカメラ姿勢の最適化 [仕事2] 地図に保存するかの決定 – 毎時刻の画像を保存するとメモリ/計算量的に発散す るため, 冗長にならないように画像を選択(緩く) • KeyFrame (KF)
  27. 27. 26 3. Local Mapping [仕事1] 地図の作成 Trackingから渡された画像(KFnew)を地図に追加する 1. Covisibility Graphの更新 2. Graph上で隣接するKF群との比較で新しい点を追加 3. この範囲で点とカメラ姿勢の最適化(Local BA) Covisibility Graph ?
  28. 28. 27 3. Local Mapping [仕事1] 地図の作成 Trackingから渡された画像(KFnew)を地図に追加する 1. Covisibility Graphの更新 2. Graph上で隣接するKF群との比較で新しい点を追加 3. この範囲で点とカメラ姿勢の最適化(Local BA) Covisibility Graph更新!
  29. 29. 28 3. Local Mapping [仕事1] 地図の作成 Trackingから渡された画像(KFnew)を地図に追加する 1. Covisibility Graphの更新 2. Graph上で隣接するKF群との比較で新しい点を追加 3. この範囲で点とカメラ姿勢の最適化(Local BA) Covisibility Graph 隣接するKF群
  30. 30. 29 3. Local Mapping [仕事1] 地図の作成 Trackingから渡された画像(KFnew)を地図に追加する 1. Covisibility Graphの更新 2. Graph上で隣接するKF群との比較で新しい点を追加 3. この範囲で点とカメラ姿勢の最適化(Local BA) Covisibility Graph 追加! 隣接するKF群
  31. 31. 30 3. Local Mapping [仕事1] 地図の作成 Trackingから渡された画像(KFnew)を地図に追加する 1. Covisibility Graphの更新 2. Graph上で隣接するKF群との比較で新しい点を追加 3. この範囲で点とカメラ姿勢の最適化 (Local BA) Covisibility Graph Localな最適化 隣接するKF群
  32. 32. 31 3. Local Mapping [仕事1] 地図の作成 Trackingから渡された画像(KFnew)を地図に追加する 1. Covisibility Graphの更新 2. Graph上で隣接するKF群との比較で新しい点を追加 3. この範囲で点とカメラ姿勢の最適化(Local BA) [仕事2] 地図の修正 – KFを監視し,冗長なKFを除外する(厳しく) • Arrival of the fittest
  33. 33. 32 4. Loop Closing [仕事] Loop closingによる全体最適化 1. 地図に挿入されたKFが既に見たことがあるか? • ORB特徴量から構成したBag of Words (BoW) 画像特徴量同士の比較 2. Loopを検知したらそれらを結ぶように最適化 • Essential Graphによるスケールを含めた最適化 ? Covisibility Graph
  34. 34. 33 4. Loop Closing [仕事] Loop closingによる全体最適化 1. 地図に挿入されたKFが既に見たことがあるか? • ORB特徴量から構成したBag of Words (BoW) 画像特徴量同士の比較 2. Loopを検知したらそれらを結ぶように最適化 • Essential Graphによるスケールを含めた最適化 ? Essential Graph
  35. 35. 34 4. Loop Closing [仕事] Loop closingによる全体最適化 1. 地図に挿入されたKFが既に見たことがあるか? • ORB特徴量から構成したBag of Words (BoW) 画像特徴量同士の比較 2. Loopを検知したらそれらを結ぶように最適化 • Essential Graphによるスケールを含めた最適化 Essential Graph Loop Closed! Sim(3) 全体最適化
  36. 36. 35 まとめ • Visual SLAM – Tracking + Local Mapping + Loop Closing • ORB-SLAM – ORB特徴量で画像間の対応を決定し三次元復元 – Trackingが地図にすべき画像(KeyFrame)を選択, Local Mappingがそれを地図に追加/修正する • Covisibility GraphによるLocal BA – Loop ClosingはBoW画像特徴量で画像間の特徴量の 近さを計算し, Loopを閉じるようにSim(3)最適化 • Essential Graphの利用
  37. 37. 36 ORB-SLAMの立ち位置 • Visual SLAMの分類 Direct vs Feature, Dense vs Sparse 手法 Direct (画素値を直接利用) Feature (特徴量を抽出し利用) Sparse (画像から疎に抽出 された点のみ利用) Direct Sparse Odometry [Engel+, 2016] ORB-SLAM [Mur-Artal+, 2015] Dense/ Semi-Dense (画像全体/ 輝度勾配の高い 領域の点を密に利用) LSD-SLAM [Engel+, 2014] SLAMでは特になし (Optical Flow等)

×