SlideShare a Scribd company logo
SLAM開発における課題と
対策の一例の紹介
3D勉強会 #6
井上
自己紹介
井上
株式会社Preferred Networks エンジニア
学生 SfMをフルスクラッチで書く
1社目 MVSをフルスクラッチで書く
2社目 SLAMをフルスクラッチで書く
2
SLAMは楽しい
3
SLAMの開発はつらい
4
どうしてつらいか?
真値が取れない
大量のハイパーパラメーター
テストしにくい
5
真値が取れない
POINT 01
6
カメラポーズ・点群はどの程度正しい?
評価のための真値が必要
7
01 真値が取れない
画像出典:colmap.github.io
真値をとるためにはコストがかかる
真値あり公開データセットを使う
or
コストをかけて真値を取る
01 真値が取れない
8
データセット例 1/2
KITTI [IJRR 2013]
屋外、ステレオ、
LiDAR、GPS、IMU
EuRoC [IJRR 2016]
屋内、ステレオ、IMU、
モーションキャプチャ、
レーザースキャナ
01 真値が取れない
9
画像は論文またはプロジェクトページから引用
データセット例 2/2
TUM RGB-D [IROS 2012]
屋内、RGB-D、
モーションキャプチャ
ICL-NUIM [ICRA 2014]
屋内、CG
01 真値が取れない
10
画像は論文またはプロジェクトページから引用
データセット例 まとめ
• センサ構成がマッチしている場合には積極的に
使いたい
• 他手法との比較にも重宝する
• これだけで評価が十分ということにはならない
Dataset ステレオ Depth Map IMU カメラ姿勢 構造 屋内外
KITTI ○ - ○ 3D (GPS) 点群 屋外
EuRoC ○ - ○ 6D (mocap) 点群 屋内
TUM RGB-D - Dense - 6D (mocap) - 屋内
ICL-NUIM - Dense - 6D (synthetic) サーフェス 屋内
01 真値が取れない
11
真値を取る方法(カメラポーズ)
画像出典:optitrack.jp
モーションキャプチャ
100Hz
0.1mm
画像出典:www.topcon.co.jp
トータルステーション
10Hz
1~5mm
01 真値が取れない
12※ 数値は大雑把な目安です。製品によって異なります。以降同様。
真値を取る方法(構造)
画像出典:velodynelidar.com
LiDAR
10~50Hz
30~100mm
画像出典:faro.com
レーザースキャナー
0.001Hz
1mm w/RGB
01 真値が取れない
13
真値を取る方法 まとめ
• 得意不得意があり、解きたい問題ごとに
最適なセンサーを選ぶ必要がある
• センサー間のレジストレーション等泥臭い作業が必要
カメラポーズセンサー 対象 精度 測定速度 測定範囲 価格
モーションキャプチャー 位置+回転 0.1mm 100Hz 10m 数百万円
トータルステーション 位置 1~5mm 10Hz 5000m 数百万円
構造センサー 色 動物体 精度 測定速度 測定範囲 価格
LiDAR - ○ 30~100mm 10~50Hz 200m 数百万円
レーザースキャナー ○ - 1mm 0.001Hz 1000m 数百万円
01 真値が取れない
14
まとめ
最初は公開データセットで評価しつつ、
目的のシーンで真値を計測し評価をする
01 真値が取れない
15
大量のハイパーパラメーター
POINT 02
16
SLAMはハイパーパラメーターだらけ
画像サイズ
特徴点数
イテレーション回数LM法のlambda
外れ値しきい値 画像ピラミッドレイヤー数
ロバストコスト関数選択
各種Priorの重み
VisionとIMUのバランス
初期復元ペアの選び方RANSAC試行回数 収束判定条件
自動で最適化する
02 大量のハイパーパラメーター
17
etc.
18
出典:https://github.com/optuna/optuna
02 大量のハイパーパラメーター
import optuna
from subprocess import run
def objective(trial):
threshold = trial.suggest_uniform('threshold', 0.1, 10.0)
iter = trial.suggest_int('iter', 50, 300)
score = run(
['your/slam/binary', f'{threshold}', f'{iter}'],
capture_output=True, text=True).stdout
return score
study = optuna.create_study()
study.optimize(objective, n_trials=100)
19
02 大量のハイパーパラメーター
探索するパラメーターの
種類と範囲を指定
SLAMを実行して
評価結果を返す
公式ドキュメントや講演資料を参照
• https://optuna.readthedocs.io/
• https://www.slideshare.net/pfi/pydatatokyo-meetup-21-optuna
1. 復元から評価まで自動化する
2. 最大(小)化したい評価指標を定義
20
02 大量のハイパーパラメーター
実績:手動調整より10%向上
まとめ
ハイパーパラメーターの調整は自動化できる
課題
• 評価指標をどう定義するか?
21
02 大量のハイパーパラメーター
テストしにくい
POINT 03
22
モジュールの結合度が高くなりがち
23
03 テストしにくい
画像出典:ORB-SLAM [TRO 2015]
モジュールの結合度が高くなりがちで
ユニットテストがしにくい
= バグを発見できない
24
バグを減らすテクニックを併用する
03 テストしにくい
バグを減らすテクニック
静的解析ツール・Sanitizer(省略)
代数計算ツール
継続的な性能のトラッキング
25
03 テストしにくい
𝝏𝒚
𝝏𝒙
代数計算ツール
SLAMではGauss-Newton法をよく使う
= ヤコビ行列を書く必要がある
26
03 テストしにくい
𝑟 𝑥 = 𝑦 − 𝑓 𝑥
J =
𝜕𝑟 𝑥
𝜕𝑥
𝑥 ← 𝑥 − JT
J
−1
JT
𝑟 𝑥
27
03 テストしにくい
微分計算を自動化
Octave Mathematica MATLAB
28
03 テストしにくい
https://colab.research.google.com/drive/1wflhGRVzdlosxHsC63HX2WvXrCG-b8p0
代数計算ツール まとめ
考慮できないものもある
• リー群の群作用の偏微分
• 浮動小数点数の計算誤差
• SIMD
最終的には、手で書いた微分と数値微分の
計算結果が一致するかテストしている
29
03 テストしにくい
継続的な性能のトラッキング
30
03 テストしにくい
コーディング 単体テスト レビュー マージ 統合テスト
毎時
毎週
テスト結果をどう管理する?
31
03 テストしにくい
出典:https://github.com/mlflow/mlflow
32
03 テストしにくい
👇 ハイパラ 👇 評価結果
試行 👉
33
03 テストしにくい
👆 各試行の結果
34
03 テストしにくい
👇 ハイパラ vs. 評価結果
まとめ
積極的に自動化してバグが混入する余地を減らす
混入してもすぐに検出できるシステムを構築する
35
03 テストしにくい
SLAMの開発はつらいが
軽減する方法はある
楽しくSLAM開発!
36
参考文献
• The KITTI Vision Benchmark Suite
http://www.cvlibs.net/datasets/kitti/
• The EuRoC MAV Dataset
https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
• RGB-D SLAM Dataset and Benchmark
https://vision.in.tum.de/data/datasets/rgbd-dataset
• The ICL-NUIM dataset
https://www.doc.ic.ac.uk/~ahanda/VaFRIC/iclnuim.html
• LiDAR Comparison Chart
https://autonomoustuff.com/lidar-chart/
37

More Related Content

PDF
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII
 
PDF
オープンソース SLAM の分類
Yoshitaka HARA
 
PDF
20190307 visualslam summary
Takuya Minagawa
 
PDF
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
SSII
 
PDF
3次元レジストレーション(PCLデモとコード付き)
Toru Tamaki
 
PDF
ロボティクスにおける SLAM 手法と実用化例
Yoshitaka HARA
 
PDF
Visual slam
Takuya Minagawa
 
PDF
SLAM入門 第2章 SLAMの基礎
yohei okawa
 
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII
 
オープンソース SLAM の分類
Yoshitaka HARA
 
20190307 visualslam summary
Takuya Minagawa
 
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
SSII
 
3次元レジストレーション(PCLデモとコード付き)
Toru Tamaki
 
ロボティクスにおける SLAM 手法と実用化例
Yoshitaka HARA
 
Visual slam
Takuya Minagawa
 
SLAM入門 第2章 SLAMの基礎
yohei okawa
 

What's hot (20)

PPTX
ORB-SLAMの手法解説
Masaya Kaneko
 
PPTX
SLAM勉強会(PTAM)
Masaya Kaneko
 
PPTX
SLAM勉強会(3) LSD-SLAM
Iwami Kazuya
 
PPTX
Direct Sparse Odometryの解説
Masaya Kaneko
 
PDF
Sift特徴量について
la_flance
 
PPTX
CNN-SLAMざっくり
EndoYuuki
 
PDF
20180527 ORB SLAM Code Reading
Takuya Minagawa
 
PDF
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII
 
PDF
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
Yoshitaka HARA
 
PDF
三次元点群を取り扱うニューラルネットワークのサーベイ
Naoya Chiba
 
PDF
20190825 vins mono
Takuya Minagawa
 
PDF
画像認識の初歩、SIFT,SURF特徴量
takaya imai
 
PDF
SLAMチュートリアル大会資料(ORB-SLAM)
Masaya Kaneko
 
PPTX
確率ロボティクス第11回
Ryuichi Ueda
 
PDF
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
MobileRoboticsResear
 
PDF
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
Kitsukawa Yuki
 
PPTX
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
Deep Learning JP
 
PDF
動画認識サーベイv1(メタサーベイ )
cvpaper. challenge
 
PDF
SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...
SSII
 
ORB-SLAMの手法解説
Masaya Kaneko
 
SLAM勉強会(PTAM)
Masaya Kaneko
 
SLAM勉強会(3) LSD-SLAM
Iwami Kazuya
 
Direct Sparse Odometryの解説
Masaya Kaneko
 
Sift特徴量について
la_flance
 
CNN-SLAMざっくり
EndoYuuki
 
20180527 ORB SLAM Code Reading
Takuya Minagawa
 
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII
 
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
Yoshitaka HARA
 
三次元点群を取り扱うニューラルネットワークのサーベイ
Naoya Chiba
 
20190825 vins mono
Takuya Minagawa
 
画像認識の初歩、SIFT,SURF特徴量
takaya imai
 
SLAMチュートリアル大会資料(ORB-SLAM)
Masaya Kaneko
 
確率ロボティクス第11回
Ryuichi Ueda
 
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
MobileRoboticsResear
 
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
Kitsukawa Yuki
 
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
Deep Learning JP
 
動画認識サーベイv1(メタサーベイ )
cvpaper. challenge
 
SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...
SSII
 
Ad

Similar to SLAM開発における課題と対策の一例の紹介 (10)

PDF
Open3DでSLAM入門 PyCon Kyushu 2018
Satoshi Fujimoto
 
PDF
Robotpaper.Challenge 2019-09 ver2
robotpaperchallenge
 
PDF
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Masaya Kaneko
 
PDF
Cartographer と Autoware を用いた自律走行
Yoshitaka HARA
 
PPTX
Robot frontier lesson3 2018
Ryuichi Ueda
 
PDF
SLAMっぽ方法で動きを測る (ROS Japan UG #24)
kiyoshiiriemon
 
PDF
The history of SLAM (Simultaneous Localization And Mapping)
EndoYuuki
 
PDF
Cartographer を用いた 3D SLAM
Yoshitaka HARA
 
PDF
第41回関東CV勉強会 CNN-SLAM
邦洋 長谷川
 
PPTX
3Dマップを活用したVisual Localization
Hajime Taira
 
Open3DでSLAM入門 PyCon Kyushu 2018
Satoshi Fujimoto
 
Robotpaper.Challenge 2019-09 ver2
robotpaperchallenge
 
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Masaya Kaneko
 
Cartographer と Autoware を用いた自律走行
Yoshitaka HARA
 
Robot frontier lesson3 2018
Ryuichi Ueda
 
SLAMっぽ方法で動きを測る (ROS Japan UG #24)
kiyoshiiriemon
 
The history of SLAM (Simultaneous Localization And Mapping)
EndoYuuki
 
Cartographer を用いた 3D SLAM
Yoshitaka HARA
 
第41回関東CV勉強会 CNN-SLAM
邦洋 長谷川
 
3Dマップを活用したVisual Localization
Hajime Taira
 
Ad

SLAM開発における課題と対策の一例の紹介