SlideShare a Scribd company logo
2018/05/27 3D Vision勉強会@関東
ORB-SLAM Code Reading
takmin
自己紹介
2
株式会社ビジョン&ITラボ 代表取締役
皆川 卓也(みながわ たくや)
「コンピュータビジョン勉強会@関東」主催
博士(工学)
略歴:
1999-2003年
日本HP(後にアジレント・テクノロジーへ分社)にて、ITエンジニアとしてシステム構築、プリ
セールス、プロジェクトマネジメント、サポート等の業務に従事
2004-2009年
コンピュータビジョンを用いたシステム/アプリ/サービス開発等に従事
2007-2010年
慶應義塾大学大学院 後期博士課程にて、コンピュータビジョンを専攻
単位取得退学後、博士号取得(2014年)
2009年-現在
フリーランスとして、コンピュータビジョンのコンサル/研究/開発等に従事(2018年法人化)
http://visitlab.jp
コンピュータビジョン勉強会@関東
 こんなテーマでやってきました!
「コンピュータビジョン最
先端ガイド」の輪読会
ECCV読み会
強化学習縛り
論文読み会
AR/VRを支える
技術
ICCV読み会
CVPR読み会
CVでこんなもの作
りました大LT大会
CVの便利なツール/
ライブラリ
CVのお仕事
ハッカソン
OpenCV祭り
有名論文読み会
三次元形状計測・
認識
「CV勉強会」で検索!
https://sites.google.com/site/cvsaisentan/
ORB-SLAMとは?
4
 単眼カメラのVisual SLAM
 Mur-Artal, R., Montiel, J. M. M., & Tardos, J. D. (2015).
ORB-SLAM:AVersatile and Accurate Monocular
SLAM System. IEEETransactions on Robotics,
 ソースコード:
https://github.com/raulmur/ORB_SLAM2
 動画:
https://www.youtube.com/watch?v=ufvPS5wJAx0
ORB-SLAMコードリーディング
5
 ORB SLAM2
 https://github.com/raulmur/ORB_SLAM2
 ORB_SLAM2はORB_SLAMをステレオカメラと
RGBD向けに拡張したもの
 元のORB_SLAMのソースコードもあるが、単眼カメ
ラの機能もORB_SLAM2に統合しているので、2を
使うのが望ましい
 ここでは主に単眼カメラ部分についてのみ解説
 アルゴリズムについてはsyinari0123さんの解
説があったので割愛
ORB-SLAMを動かす
6
 githubからソースコードを入手
 C++11コンパイラが必要
 Visual Studio2015では無理だった(2017では?)
 必要なライブラリをインストールしてbuild.shと
いうシェルを起動すればビルドできる。
 KITTI等の既存データセットを動かす場合
 リアルタイムで動作させたいときはROSをセット
アップした後、build_ros.shでビルド
ORB-SLAMの依存ライブラリ
7
 Pangolin
 ビジュアライゼーションに必要
 https://github.com/stevenlovegrove/Pangolin
 OpenCV (2.4.11と3.2でテスト)
 画像の操作と特徴量の抽出
 http://opencv.org
 Eigen3
 g2oを動かすのに必要
 http://eigen.tuxfamily.org
 DBoW2
 Place Recognitionに使用。ORB-SLAM2に同梱
 g2o
 幾何学的な最適化に使用。ORB-SLAM2に同梱
 ROS (Hydro or Newer)
 リアルタイムで動かす時、カメラ出力をROSのトピックとして動かす必要
 http://ros.org
ORB-SLAMのサンプル
8
 あらかじめ、以下のサンプルコードが用意されており、コ
ンパイルすれば使える。
 Examples/Monocular/mono_euroc.cc
 EuRoCデータセット用サンプル
 Examples/Monocular/mono_kitti.cc
 KITTIデータセット用サンプル
 Examples/Monocular/mono_tum.cc
 TUMデータセット用サンプル
 Examples/ROS/ORB_SLAM2/src/ros_mono.cc
 外部接続したカメラで動かすためのサンプル
 Examples/ROS/ORB_SLAM2/src/AR/ros_mono_ar.cc
 外部接続したカメラ映像にキューブを重畳表示するサンプル
外部接続カメラでORB-SLAMを動かす
9
 外部接続カメラを使用するのはROS (Robot
Operating System)とROS上でカメラを動かす
ためのモジュールをインストールする必要が
ある。
 例えば、 https://github.com/bosch-ros-pkg/usb_cam
 カメラから映像を取得するトピック名を
/camera/image_rawとして実行した状態で、
ORB-SLAMのros_monoやros_mono_arを動
かす
ORB-SLAMのコード構成
10
メインのコード群
ビルドのスクリプト
リアルタイムカメラ入力を扱うためのビルドス
クリプト
各データセットのための試験コードやAR等の実
行ファイル
DBoW2とg2o
Place Recognitionを行うための学習済み辞書
データ
ORB-SLAMコードの特徴
11
 実装は論文通り
 論文とコードの対応を見つけやすい
 論文と実装が違うというケースも割とあるので
 MonoとStereoとRGB-Dが一緒になっているので、それぞ
れを分離して読み解く必要
 ほとんど全てのパラメータがメンバ変数になっており、関
数の引数として渡されることがないため、各関数がどの
ようなパラメータに依存してるかが非常にわかりにくい。
 そのため、カスタマイズの影響範囲を見積もるのがツライ
 リアルタイム/マルチスレッドのため、デバッグがツライ。。。
 例えばLocal Mappingがデバッグ処理で遅れたらTrackingも止
まる
ORB-SLAMのコード
12
System.h
main()からcv::Mat形式の画像
を一枚一枚
System::TrackMonocular()で
Systemに渡す
Examplesフォルダにサンプル
ORB-SLAMのコード
13
System.h
Tracking.h
LocalMapping.h
LoopClosing.h
Map.hORBVocabulary.h
KeyFrameDatabase.h
Frame.h
KeyFrame.h
ORB-SLAMのコード
14
Read
Read/
Write
Read/Write
共有メモリ
Read/Write
Read
ORB-SLAMコードリーディング
15
本日お話しする範囲
 Systemの使い方
 Systemクラスの処理概要
 Trackingスレッドの処理概要
 LocalMappingスレッドの処理概要
 LoopClosingスレッドの処理概要
ORB-SLAMコードリーディング
16
本日お話しする範囲
 Systemの使い方
 Systemクラスの処理概要
 Trackingスレッドの処理概要
 LocalMappingスレッドの処理概要
 LoopClosingスレッドの処理概要
ライブラリ使用方法流れ
17
using namespace ORB_SLAM2;
System SLAM(voc_file, setting_file, System::MONOCULAR, true);
cv::VideoCapture cap(0);
cv::Mat frame;
while(true){
cap >> frame;
double time_stamp = (double)clock();
if(frame.empty())
break;
SLAM.TrackMonocular(frame, time_stamp);
}
SLAM.Shutdown();
SLAM.SaveKeyFrameTrajectoryTUM(“KeyFrameTrajectory.txt”);
ライブラリ使用方法流れ
18
using namespace ORB_SLAM2;
System SLAM(voc_file, setting_file, System::MONOCULAR, true);
cv::VideoCapture cap(0);
cv::Mat frame;
while(true){
cap >> frame;
double time_stamp = (double)clock();
if(frame.empty())
break;
SLAM.TrackMonocular(frame, time_stamp);
}
SLAM.Shutdown();
SLAM.SaveKeyFrameTrajectoryTUM(“KeyFrameTrajectory.txt”);
using namespace ORB_SLAM2;
/*VisualWordファイル、カメラパラメータファ
イル、モノクロ/ステレオ/RGBD、画面表示の
順で引数を与える */
System SLAM(voc_file, setting_file,
System::MONOCULAR, true);
ライブラリ使用方法流れ
19
using namespace ORB_SLAM2;
System SLAM(voc_file, setting_file, System::MONOCULAR, true);
cv::VideoCapture cap(0);
cv::Mat frame;
while(true){
cap >> frame;
double time_stamp = (double)clock();
if(frame.empty())
break;
SLAM.TrackMonocular(frame, time_stamp);
}
SLAM.Shutdown();
SLAM.SaveKeyFrameTrajectoryTUM(“KeyFrameTrajectory.txt”);
動画ファイルやカメラ等から画像のキャプ
チャ(cv::Mat)およびタイムスタンプ(double)を
取得
ライブラリ使用方法流れ
20
using namespace ORB_SLAM2;
System SLAM(voc_file, setting_file, System::MONOCULAR, true);
cv::VideoCapture cap(0);
cv::Mat frame;
while(true){
cap >> frame;
double time_stamp = (double)clock();
if(frame.empty())
break;
SLAM.TrackMonocular(frame, time_stamp);
}
SLAM.Shutdown();
SLAM.SaveKeyFrameTrajectoryTUM(“KeyFrameTrajectory.txt”);
/*Systemインスタンスに画像とタイムスタンプ
を渡す*/
SLAM.TrackMonocular(frame, time_stamp);
ライブラリ使用方法流れ
21
using namespace ORB_SLAM2;
System SLAM(voc_file, setting_file, System::MONOCULAR, true);
cv::VideoCapture cap(0);
cv::Mat frame;
while(true){
cap >> frame;
double time_stamp = (double)clock();
if(frame.empty())
break;
SLAM.TrackMonocular(frame, time_stamp);
}
SLAM.Shutdown();
SLAM.SaveKeyFrameTrajectoryTUM(“KeyFrameTrajectory.txt”);
/*SLAMを修了後、キーフレームの姿勢を
ファイルに保存*/
SLAM.Shutdown();
SLAM.SaveKeyFrameTrajectoryTUM(“KeyFra
meTrajectory.txt”);
ORB-SLAMコードリーディング
22
本日お話しする範囲
 Systemの使い方
 Systemクラスの処理概要
 Trackingスレッドの処理概要
 LocalMappingスレッドの処理概要
 LoopClosingスレッドの処理概要
System::System()
23
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
System::System()
24
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
mpVocabulary = new ORBVocabulary();
bool bVocLoad = mpVocabulary->loadFromTextFile(strVocFile);
System::System()
25
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
// 引数にVisualVocabularyを与えてDB生成
mpKeyFrameDatabase = new KeyFrameDatabase(*mpVocabulary);
System::System()
26
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
mpMap = new Map();
System::System()
27
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
// カメラからの映像にORBを描画する画面
mpFrameDrawer = new FrameDrawer(mpMap);
// 点群とカメラ位置を描画する画面
mpMapDrawer = new MapDrawer(mpMap, strSettingsFile);
System::System()
28
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
/* 描画画面、VisualVocabulary、KeyFrame DB、Map、カメラパラ
メータ、などを引数に与える*/
mpTracker = new Tracking(this, mpVocabulary, mpFrameDrawer,
mpMapDrawer, mpMap, mpKeyFrameDatabase,
strSettingsFile, mSensor);
System::System()
29
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
/* 描画画面、VisualVocabulary、KeyFrame DB、Map、カメラパラ
メータ、などを引数に与え、このスレッドで動作させる*/
mpTracker = new Tracking(this, mpVocabulary, mpFrameDrawer,
mpMapDrawer, mpMap, mpKeyFrameDatabase,
strSettingsFile, mSensor);
System::System()
30
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
/* Mapを渡してLocalMappingインスタンスを生成し、
新規スレッドでRun()を起動*/
mpLocalMapper = new
LocalMapping(mpMap, mSensor==MONOCULAR);
mptLocalMapping = new
thread(&ORB_SLAM2::LocalMapping::Run,mpLocalMapper);
System::System()
31
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
/* MapとVocabularyとDBを渡してLoopClosingインスタンスを生成
し、新規スレッドでRun()を起動*/
mpLoopCloser = new LoopClosing(mpMap,
mpKeyFrameDatabase, mpVocabulary,
mSensor!=MONOCULAR);
mptLoopClosing = new
thread(&ORB_SLAM2::LoopClosing::Run, mpLoopCloser);
System::System()
32
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
mpTracker->SetLocalMapper(mpLocalMapper);
mpTracker->SetLoopClosing(mpLoopCloser);
mpLocalMapper->SetTracker(mpTracker);
mpLocalMapper->SetLoopCloser(mpLoopCloser);
mpLoopCloser->SetTracker(mpTracker);
mpLoopCloser->SetLocalMapper(mpLocalMapper);
System::TrackMonocular()
33
 カメラやビデオから取得した画像
(cv::Mat)を引数として とタイムスタンプ
(timestamp)と一緒に入力
 内部では、画像とタイムスタンプをそのま
まトラッカー(mpTracker)の
GrabImageMonocular()メンバ関数へ渡し
て、カメラ姿勢や追跡中の点群の情報な
どを取得
ORB-SLAMコードリーディング
34
本日お話しする範囲
 Systemの使い方
 Systemクラスの処理概要
 Trackingスレッドの処理概要
 LocalMappingスレッドの処理概要
 LoopClosingスレッドの処理概要
Tracking::GrabImageMonocular()
35
 引数として、
System::TrackMonocular()から画像と
タイムスタンプが渡される
 画像をグレースケールに変換
 Frame構築
 Tracking::Track()関数呼び出し
 カメラの姿勢を返す
Tracking::GrabImageMonocular()
36
 引数として、
System::TrackMonocular()から画像と
タイムスタンプが渡される
 画像をグレースケールに変換
 Frame構築
 Tracking::Track()関数呼び出し
 カメラの姿勢を返す
mpCurrentFrame = Frame(mImGray, timestamp,
mpORBextractorLeft, mpORBVocabulary,
mK, mDistCoef, mbf, mThDepth);
グレースケール画像 タイムスタンプ
Tracking::GrabImageMonocular()
37
 引数として、
System::TrackMonocular()から画像と
タイムスタンプが渡される
 画像をグレースケールに変換
 Frame構築
 Tracking::Track()関数呼び出し
 カメラの姿勢を返す
mpCurrentFrame = Frame(mImGray, timestamp,
mpORBextractorLeft, mpORBVocabulary,
mK, mDistCoef, mbf, mThDepth);
ORB検出器
(Frameコンストラクタ内で使用)
VisualVocabulary
Tracking::GrabImageMonocular()
38
 引数として、
System::TrackMonocular()から画像と
タイムスタンプが渡される
 画像をグレースケールに変換
 Frame構築
 Tracking::Track()関数呼び出し
 カメラの姿勢を返す
mpCurrentFrame = Frame(mImGray, timestamp,
mpORBextractorLeft, mpORBVocabulary,
mK, mDistCoef, mbf, mThDepth);
カメラ行列 歪パラメータ Monocular SLAMでは使用しない
Tracking::Track()
39
Track()
Frame::Frame()
Tracking::Track()
40
Track()
Frame::Frame()
MonocularInitializ
ation()
• 対応点が十分とれた2つのフレー
ムからMapとCamera Poseの初期値
算出
• FとHを並行して求めて、良い方の
モデルを採用
• 詳細はInitializer::Initialize()参照
Tracking::Track()
41
Track()
Frame::Frame()
• Local Map Points
の追跡
• カメラ姿勢推定
Track Local Map
TrackWithMotionModel()
TrackLocalMap()
TrackReferenceKeyFrame()
Tracking成功Tracking失敗
OK
NG
NG
OK
OKNG
前フレームのキーポイ
ントと対応する点を現
フレームから速度一定
と仮定して探索し、対
応点からポーズ推定
BoWで対応キーフレー
ムの対応点を探索し、
ポーズ推定
対応するLocal Mapを
Refineして、ポーズ推定
Tracking::Track()
43
Track()
Frame::Frame()
KeyFrameが条件を満たしているか
の判定
if(NeedNewKeyFrame())
CreateNewKeyFrame();
ORB-SLAMコードリーディング
44
本日お話しする範囲
 Systemの使い方
 Systemクラスの処理概要
 Trackingスレッドの処理概要
 LocalMappingスレッドの処理概要
 LoopClosingスレッドの処理概要
LoopMapping::Run()
45
Run()
LoopMapping::Run()
46
Run()
新しいKeyFrameが来たかの判定
CheckNewKeyFrames();
LoopMapping::Run()
47
Run()
• キーフレームを挿入して
Covisibility GraphとSpanning
Treeを更新
• BoW表現を計算
ProcessNewKeyFrame();
LoopMapping::Run()
48
Run()
キーフレームの点のうち、ロバスト
でないものを除去
MapPointCulling();
LoopMapping::Run()
49
Run()
Covisibility Graph上の隣接キーフ
レームを用いて追跡点の三次元
座標を算出しMap Points生成
CreateNewMapPoints();
もう一つ隣のキーフレームを用い
て残った追跡点のMap Points生成
SearchInNeighbors();
LoopMapping::Run()
50
Run()
バンドル調整で現キーフレームと
隣接キーフレームの姿勢、および
それらから観測できる点群を最適
化
Optimizer::LocalBundleAdjustmen
t(mpCurrentKeyFrame,&mbAbort
BA, mpMap);
LoopMapping::Run()
51
Run()Covisibility Graph上の隣接キーフ
レームのうち、他と重複の大きいも
のを除去
KeyFrameCulling();
ORB-SLAMコードリーディング
52
本日お話しする範囲
 Systemの使い方
 Systemクラスの処理概要
 Trackingスレッドの処理概要
 LocalMappingスレッドの処理概要
 LoopClosingスレッドの処理概要
LoopClosing::Run()
53
Run()
LoopClosing::Run()
54
Run()
新規キーフレームの取得
CheckNewKeyFrames();
LoopClosing::Run()
55
Run()
Covisibility Graph上のループ候補
を取得
DetectLoop();
LoopClosing::Run()
56
Run()
• ループ上で隣接するキーフレー
ム間の対応点を算出
• キーフレーム間の相似変換算出
(3D to 3D)
ComputeSim3();
LoopClosing::Run()
57
Run()
• 相似変換を伝播させてカメラ姿
勢補正
• Essential Graph上でLoop
Closingにより各カメラ姿勢を最
適化
• カメラ姿勢最適化後、点群の位
置を最適化
CorrectLoop();
まとめ
58
 実装は論文通りなので、論文と照らし合わせながらソー
スコードを読んだ方が理解が早い。
 巨大なヒューリスティックの塊
 Systemクラスがメインで、Trackingをメインスレッドで動か
し、LocalMapping、LoopClosingのスレッドを生成。
 各クラス内の処理ではほとんどメンバー関数自体には引
数を渡さず、メンバー変数を直接変更するため、各関数
の影響範囲が見えづらい
 リアルタイムかつマルチスレッドで処理が複雑、かつクラ
ス同士が複雑に絡み合っており、カスタマイズは非常に
ツライ。。。

More Related Content

PDF
オープンソース SLAM の分類
PDF
Visual slam
PDF
20190825 vins mono
PDF
Cartographer を用いた 3D SLAM
PDF
20190307 visualslam summary
PDF
SLAMチュートリアル大会資料(ORB-SLAM)
PDF
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
PDF
SLAM入門 第2章 SLAMの基礎
オープンソース SLAM の分類
Visual slam
20190825 vins mono
Cartographer を用いた 3D SLAM
20190307 visualslam summary
SLAMチュートリアル大会資料(ORB-SLAM)
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
SLAM入門 第2章 SLAMの基礎

What's hot (20)

PDF
ORB-SLAMを動かしてみた
PPTX
ORB-SLAMの手法解説
PDF
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
PDF
20180424 orb slam
PPTX
CNN-SLAMざっくり
PDF
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
PDF
SLAM開発における課題と対策の一例の紹介
PPTX
SuperGlue; Learning Feature Matching with Graph Neural Networks (CVPR'20)
PDF
LiDAR-SLAM チュートリアル資料
PDF
Open3DでSLAM入門 PyCon Kyushu 2018
PDF
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
PDF
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
PDF
【DL輪読会】Segment Anything
PDF
SSII2018TS: 3D物体検出とロボットビジョンへの応用
PPTX
Structure from Motion
PPTX
[DL輪読会]Objects as Points
PDF
SSII2019企画: 点群深層学習の研究動向
PDF
3次元レジストレーション(PCLデモとコード付き)
PDF
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展
PDF
ロボティクスにおける SLAM 手法と実用化例
ORB-SLAMを動かしてみた
ORB-SLAMの手法解説
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
20180424 orb slam
CNN-SLAMざっくり
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SLAM開発における課題と対策の一例の紹介
SuperGlue; Learning Feature Matching with Graph Neural Networks (CVPR'20)
LiDAR-SLAM チュートリアル資料
Open3DでSLAM入門 PyCon Kyushu 2018
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
【DL輪読会】Segment Anything
SSII2018TS: 3D物体検出とロボットビジョンへの応用
Structure from Motion
[DL輪読会]Objects as Points
SSII2019企画: 点群深層学習の研究動向
3次元レジストレーション(PCLデモとコード付き)
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展
ロボティクスにおける SLAM 手法と実用化例
Ad

Similar to 20180527 ORB SLAM Code Reading (20)

PDF
論文読み会(DeMoN;CVPR2017)
PDF
OpenCVとARCoreで作るスタンプAR in 宮崎
PDF
コンピュータビジョンで作る未来の栽培技術POL共催セミナー_20220527
PDF
3DFeat-Net
PDF
LexADV_WOVis Ver.0.1bの概要
PDF
AIのラボからロボティクスへ --- 東大松尾研究室のWRS2020パートナーロボットチャレンジへの挑戦
PDF
NEDO特別講座_画像処理・AI技術活用コース_後編
PDF
OpenCVで作るスタンプAR
PPTX
OpenCVでつくろうARスタンプアプリ in 熊本
PDF
Cartographer と Autoware を用いた自律走行
PPTX
OpenCVを用いた画像処理入門
PDF
Teslaにおけるコンピュータビジョン技術の調査 (2)
PDF
OpenCVをAndroidで動かしてみた
PDF
東工大 長谷川修研の環境学習・認識・探索技術
PPTX
DLゼミ: MobileOne: An Improved One millisecond Mobile Backbone
PDF
論文紹介:A Survey on Open-Vocabulary Detection and Segmentation: Past, Present, a...
PDF
[DL輪読会]Stereo Magnification: Learning view synthesis using multiplane images, +α
PDF
VIEW2013 Binarycode-based Object Recognition
PDF
【チュートリアル】コンピュータビジョンによる動画認識 v2
PPTX
SegFormer: Simple and Efficient Design for Semantic Segmentation with Transfo...
論文読み会(DeMoN;CVPR2017)
OpenCVとARCoreで作るスタンプAR in 宮崎
コンピュータビジョンで作る未来の栽培技術POL共催セミナー_20220527
3DFeat-Net
LexADV_WOVis Ver.0.1bの概要
AIのラボからロボティクスへ --- 東大松尾研究室のWRS2020パートナーロボットチャレンジへの挑戦
NEDO特別講座_画像処理・AI技術活用コース_後編
OpenCVで作るスタンプAR
OpenCVでつくろうARスタンプアプリ in 熊本
Cartographer と Autoware を用いた自律走行
OpenCVを用いた画像処理入門
Teslaにおけるコンピュータビジョン技術の調査 (2)
OpenCVをAndroidで動かしてみた
東工大 長谷川修研の環境学習・認識・探索技術
DLゼミ: MobileOne: An Improved One millisecond Mobile Backbone
論文紹介:A Survey on Open-Vocabulary Detection and Segmentation: Past, Present, a...
[DL輪読会]Stereo Magnification: Learning view synthesis using multiplane images, +α
VIEW2013 Binarycode-based Object Recognition
【チュートリアル】コンピュータビジョンによる動画認識 v2
SegFormer: Simple and Efficient Design for Semantic Segmentation with Transfo...
Ad

More from Takuya Minagawa (20)

PDF
「第63回コンピュータビジョン勉強会@関東」発表資料 CVの社会実装について考えていたらゲームを作っていた話
PDF
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
PDF
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
PDF
Machine Learning Operations (MLOps): Overview, Definition, and Architecture
PDF
MobileNeRF
PDF
点群SegmentationのためのTransformerサーベイ
PDF
Learning to Solve Hard Minimal Problems
PDF
ConditionalPointDiffusion.pdf
PDF
楽しいコンピュータビジョンの受託仕事
PDF
20210711 deepI2P
PDF
20201010 personreid
PDF
20200910コンピュータビジョン今昔物語(JPTA講演資料)
PDF
2020/07/04 BSP-Net (CVPR2020)
PDF
20200704 bsp net
PDF
20190706cvpr2019_3d_shape_representation
PDF
20190131 lidar-camera fusion semantic segmentation survey
PDF
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
PDF
run Keras model on opencv
PDF
20181130 lidar object detection survey
PDF
object detection with lidar-camera fusion: survey (updated)
「第63回コンピュータビジョン勉強会@関東」発表資料 CVの社会実装について考えていたらゲームを作っていた話
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
Machine Learning Operations (MLOps): Overview, Definition, and Architecture
MobileNeRF
点群SegmentationのためのTransformerサーベイ
Learning to Solve Hard Minimal Problems
ConditionalPointDiffusion.pdf
楽しいコンピュータビジョンの受託仕事
20210711 deepI2P
20201010 personreid
20200910コンピュータビジョン今昔物語(JPTA講演資料)
2020/07/04 BSP-Net (CVPR2020)
20200704 bsp net
20190706cvpr2019_3d_shape_representation
20190131 lidar-camera fusion semantic segmentation survey
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
run Keras model on opencv
20181130 lidar object detection survey
object detection with lidar-camera fusion: survey (updated)

20180527 ORB SLAM Code Reading