空飛ぶロボットのつくりかた

ロボットをつくるために必要な技術をまとめます。ロボットの未来についても考えたりします。

動画像処理のお勉強(12)

やりたいこと

動画像処理について学ぶ

教科書

CG-ARTS | 書籍・教材

目次

差分画像

二枚の画像において、同じ位置に画素値の差の絶対値を画像とする

参考:2枚の画像のdiff(差分)を超簡単に調べる方法 - 昼メシ物語

背景差分法

f:id:robonchu:20180519092628j:plain

参考: 研究開発:前景と背景の分離技術 - livedoor Blog(ブログ)

フレーム間差分法

移動物体を撮影した異なる時間の3枚の画像を用いて、移動物体領域を取り出す

f:id:robonchu:20180519093239j:plain

参考: 高度情報演習1A “テーマC” 実践 画像処理プログラミング 〜画像認識とCGによる画像生成〜 第四回 演習課題 画像中からの物体抽出処理(背景情報を手がかりとして) 芝浦工業大学 工学部 情報工学科 青木 義満 2006/05/ ppt download

統計的背景差分法

画素値の定常的な変動を考慮して移動物体を検出する方法

f:id:robonchu:20180519093711j:plain

参考: 高度情報演習1A “テーマC” 実践 画像処理プログラミング 〜画像認識とCGによる画像生成〜 第四回 演習課題 画像中からの物体抽出処理(背景情報を手がかりとして) 芝浦工業大学 工学部 情報工学科 青木 義満 2006/05/ ppt download

オプティカルフロー

異なる時間に取られた二枚の画像を用いて、静止カメラで撮影した移動物体の解析ができる。

異なる時間に撮影された二枚の画像間での対象の移動量をベクトルデータとして表現したものをオプティカルフローと呼ぶ

ブロックマッチング法

テンプレートマッチングを用いてオプティカルフローを求める方法

f:id:robonchu:20180519095425j:plain

参考: 高度情報演習1A “テーマC” 実践 画像処理プログラミング 〜画像認識とCGによる画像生成〜 第四回 演習課題 画像中からの物体抽出処理(背景情報を手がかりとして) 芝浦工業大学 工学部 情報工学科 青木 義満 2006/05/ ppt download

勾配法

連蔵する二枚の画像での対象物体の移動量が微小であることを前提にオプティカルフローを求める方法

この前提により、オプティカルフローの拘束条件式が求められ、この未知数である2つのベクトルを求める方法を以下に示す

Lucas-Kanade法(LK法)

f:id:robonchu:20180519100301j:plain

f:id:robonchu:20180519100310j:plain

参考: Lucas kanade法について

Horn-Shunck法

オプティカルフローの空間的滑らかさを拘束条件として、エネルギー関数を導出し、それを最小にするベクトルを計算する

f:id:robonchu:20180519100731p:plain

参考: OpenCVでとらえる画像の躍動、Optical Flow

移動体追跡

参考: [http://www.vision.cs.chubu.ac.jp/features/pdf/seminar/100326%E3%82%BB%E3%83%9F%E3%83%8A%E3%83%BC%E8%B3%87%E6%96%99%E7%89%A9%E4%BD%93%E8%BF%BD%E8%B7%A1.pdf]

テンプレートマッチングによる追跡

テンプレートマッチングを、前の時刻における移動体の位置周辺だけを行えば良い

探索範囲の広さや位置を設定する良い方法論がないのが課題。

KLTトラッカー

LK法を用いた特徴点ベースの追跡法

f:id:robonchu:20180519111521j:plain

参考:

ミーンシフトトラッキング

ミーンシフトによる追跡は類似度極大点に向かって、局所的に探索する方法

重なり領域が存在しない場合、追跡できなくなる

f:id:robonchu:20180519112824j:plain

参考:

ベイジアンフィルタ

時刻tまでに観測された時系列画像から移動体の状態を推定する方法

前述の2つと異なり、ある位置にある確率と別の位置に物体がある確率と言った具合に、物体の状態に関する仮設を複数保持しながら追跡が可能。

f:id:robonchu:20180519113816j:plain

参考:

カルマンフィルタ

ベイジアンフィルタにおいて、線形・ガウス型の状態空間モデルにのみ適応可能な最適フィルタ

f:id:robonchu:20180519115009j:plain

参考:

パーティクルフィルタ

パーティクルと呼ばれる離散的なサンプルを状態空間にばらまき、モンテカルロ法により、ベイジアンフィルタを近似計算する方法

f:id:robonchu:20180519120455j:plain

参考: コンピュータビジョン特論 第8回対象追跡 2006年11月22日 加藤丈和. - ppt download

↓めちゃくちゃわかりやすい!!!

www.slideshare.net

その他同画像処理

カット検出

撮影場面が大きく変化する部分をカットという

画像を長方形領域に区分し、長方形領域ごとの画素値の平均値を求めその差の絶対値を用いてカットの判定を行う。

カメラモーション推定

背景の動きをオプティカルフローで求め、その動きからカメラの動きを求めることができる。

時空間画像処理

時空間画像とは画像を時間方向に重ねた三次元データ

f:id:robonchu:20180519143134j:plain

参考: 電子情報通信学会知識ベース |2群 画像・音・言語

Bazel事始め

f:id:robonchu:20180527200814p:plain

やりたいこと

c++のビルドを簡単に行いたい

Bazelとは

Bazel install

教科書(cpp-tutorial)

Code

構成

.
├── README.md
├── WORKSPACE
├── lib
│   ├── BUILD
│   ├── hello-name.cc
│   └── hello-name.h
└── main
    ├── BUILD
    ├── hello-get-name.cc
    ├── hello-get-name.h
    └── hello-robots.cc
  1. 直下に空のWORKSPACEを作る

  2. ディレクトリがわかれる場合はそれぞれにBUILDを設置

BUILDの書き方

libの方

cc_library(
    name = "hello-name",
    srcs = ["hello-name.cc"],
    hdrs = ["hello-name.h"],
    visibility = ["//main:__pkg__"],
)

visibilityを書くことでmainの方から見えるように。

mainの方

cc_library(
    name = "hello-get-name",
    srcs = ["hello-get-name.cc"],
    hdrs = ["hello-get-name.h"],
)

cc_binary(
    name = "hello-robots",
    srcs = ["hello-robots.cc"],
    deps = [
        ":hello-get-name",
        "//lib:hello-name",
    ],
)

depsにcc_binaryで使いたいlibraryのnameを記入する。

How to build and use

  1. bazel build //main:hello-robots

  2. bazel-bin/main/hello-robots

詳しくはgit参照。

コメント

ちゃっかりGitHubでびゅー笑

パターン認識のお勉強(11)

f:id:robonchu:20180512193754j:plain

参考: 2014/5/29 東大相澤山崎研勉強会:パターン認識とニューラルネットワーク,Deep Learningまで

やりたいこと

パターン認識について学ぶ

教科書

CG-ARTS | 書籍・教材

目次

プロトタイプ法による識別

特徴空間においてテスト画像から各クラスのプロトタイプまでのユークリッド距離を測り、最も近いクラスにテスト画像を識別する。

f:id:robonchu:20180512200009p:plain

参考: 「わかりやすいパターン認識」 第1章:パターン認識とは - ppt download

クラスの分布を考慮した識別

f:id:robonchu:20180512200852j:plain

参考:

NN法とkNN法

f:id:robonchu:20180512201200p:plain

参考:

kd-tree法

バックトラック: survey/kdtree.md at master · komi2/survey · GitHub

f:id:robonchu:20180512202559j:plain

参考: Scalable nearest neighbor algorithms for high dimensional data

ハッシングによる近似最近傍探索

f:id:robonchu:20180512201849j:plain

参考: 情報システム基盤学 基礎1 アルゴリズムとデータ構造 - ppt download

アダブースト

複数の識別器を組み合わせて一つの強力な識別器を学習するアンサンブル学習の一つ

f:id:robonchu:20180512203130p:plain

参考:

リアルアダブースト

ハードマージンSVMサポートベクターマシン

f:id:robonchu:20180512220724p:plain

参考:

ソフトマージンSVM

f:id:robonchu:20180512221529j:plain

参考:

カーネルトリック

高次に写像しながらも、写像の計算を避けるテクニックをカーネルトリックと呼ぶ。

f:id:robonchu:20180512222145p:plain

よく使用されるカーネル関数

  1. ユークリッド内積

  2. 多項式カーネル

  3. RBFカーネル

参考:

1対他分類器による多クラス識別

ニューラルネットワーク

robonchu.hatenablog.com

robonchu.hatenablog.com

深層学習

robonchu.hatenablog.com

ランダムフォレスト

学習サンプルをランダムサンプリングにより作成したサブセットごとに決定木を構築し、複数の決定木の結果を統合して識別する。

f:id:robonchu:20180513090836p:plain

参考:

階層的クラスタリング

f:id:robonchu:20180513091232j:plain

参考: クラスター分析の手法②(階層クラスター分析) | データ分析基礎知識

k-means法

f:id:robonchu:20180513092010j:plain

参考:

主成分分析

robonchu.hatenablog.com

robonchu.hatenablog.com

f:id:robonchu:20180513093251p:plain

参考:

線形判別分析

f:id:robonchu:20180513094016j:plain

参考:

部分空間法

SELFIC法

主成分分析で低次元化した特徴空間でクラスの近さに基づく識別を行う方法

CLAFIC法

主成分分析を用いて、クラスごとに入力画像群をよく表現する低次元な特徴空間を求め、その特徴空間をパターン学習の結果とみなす方法

参考:

KL展開:

f:id:robonchu:20180513100337p:plain

参考:

顔検出と顔識別

顔画像の特徴量:Haar-like特徴量

参考:

顔識別の方法

  1. 顔の局所領域においてローカルバイナリパターンのヒストグラムを作成する

  2. このLBPヒストグラムを用いて、NN法により最も類似している登録画像を求める

f:id:robonchu:20180513101456p:plain

参考: OpenCVで物体検出器を作成③ LBP特徴【開発会社プロフェッサ】

人検出

人の輪郭形状を捉える勾配方向ヒストグラムをもとにしたHOG特徴量が利用される

f:id:robonchu:20180513102055j:plain

参考: 局所特徴量と統計学習手法による物体検出

画像検索

f:id:robonchu:20180513102600p:plain

参考: Visual Wordsを用いた類似画像検索 - 人工知能に関する断創録

人体姿勢推定

f:id:robonchu:20180513103309j:plain

f:id:robonchu:20180513103336j:plain

f:id:robonchu:20180513103400j:plain

f:id:robonchu:20180513103412j:plain

参考:

所感

このあたりはSOTAな深層学習手法のほうがはるかに精度は高そう。

実際に構築するときは、計算コストとのトレードオフで適切な手法を選択していきたい。

パターン検出とマッチングのお勉強(10)

f:id:robonchu:20180507210906p:plain

参考:Archives

やりたいこと

パターン検出とマッチングについて学ぶ

教科書

CG-ARTS | 書籍・教材

テンプレートマッチング

テンプレートマッチング:予め標準パターンをテンプレートとして用意しておき、このテンプレートを用いて入力画像とのマッチングを行う

位置を検出することもでき、探索範囲に対して類似度を調べ、その中から最も類似する位置を検出する

類似度

類似度を調べるには以下の2つがよく利用される

  1. SSD: 差の二乗和。ユークリッド距離の二乗。

  2. SAD: 差の絶対値和。市街地距離。

また、以下が使われることもある。

  1. NCC: 正規化相互相関。ベクトルのなす角の余弦

  2. ZNCC: 相互相関係数

サブピクセル位置推定

サブピクセル位置推定:対応点の座標の小数値を推定する技術(サブピクセル推定)

f:id:robonchu:20180507212816j:plain

参考: 機械の目が見たセカイ -コンピュータビジョンがつくるミライ(9) カメラを用いた3次元計測(3) - サブピクセル推定 | マイナビニュース

高速探索法

探索範囲すべての位置での類似度の計算(全探索)は計算時間が多くかかることがある。

以下に効率化手法を示す。

残差逐次検定法

残差があるしきい値を超えたら、検出位置ではないとし、次の位置での計算にうつる方法

しきい値は自動的に決める方法があり、最初はしきい値を決めず計算し、それを最初のしきい値とし、次々計算していく中でそのしきい値を超えない場合、その値をしきい値に変更する。

こうすることで、常に真の最小値に到達することが保証されている。

疎密探索法

画像情報を何段階化の解像度で表現し、解像度の疎密性を利用することで、類似度や相違度の最大値位置や最小値位置を効率的に探索することができる。

イメージピラミッドを作り、低解像度から探索を行い、探索された位置に対して高解像度画像に上げていき探索を行う。こうすることで高速に探索できる。

f:id:robonchu:20180507214254j:plain

参考:画像認識 第4章-物体追跡:Object Tracking- - とある学生のお勉強日記

参照画素の選択による高速化

同時生起行列の確率を計算し、確率が低い(独自性が高い)画素を類似度計算に用いる参照画素とする。

こうすることで、もし選択された画素が1%であれば、100倍高速化される。

エッジ情報を用いたチャンファーマッチング

テンプレートマッチングの一種であり、入力画像とテンプレート画像間のエッジ相違度に基づいて探索を行う手法

f:id:robonchu:20180508213723j:plain

参考: Archives

ヒスログラム情報を用いたアクティブ探索

カラーヒストグラム

カラー空間を量子化した際の各色番号に対する類度を表したもの

類似度の算出は以下の2つがある。

  1. ヒストグラムインタセクション

    f:id:robonchu:20180508214429p:plain

    参考:http://web.tuat.ac.jp/~s-hotta/gke/ch4/index.html

  2. バタチャリヤ係数

    f:id:robonchu:20180508214307j:plain

    参考:

    www.slideshare.net

アクティブ探索

テンプレートと入力画像上のある領域のカラーヒストグラムの類似度が低ければ、周辺の重なりを持つ領域の類似度も低いという考え方を利用して、周辺領域の類似度計算を省く

コーナー検出全体まとめ

f:id:robonchu:20180512143248p:plain

参考: qiita.com

ハリスのコーナー検出

f:id:robonchu:20180512135558j:plain

参考:

FASTによるコーナー検出

決定木をトラバーサル(横切る)するだけでコーナーを検出できる

f:id:robonchu:20180512140039j:plain

参考:

DoG画像を用いた特徴点とスケールの検出

画像間の拡大縮小に関係なく、対応点を決めることができる

f:id:robonchu:20180512142056j:plain

f:id:robonchu:20180512142107j:plain

参考:

Cannyのエッジ検出アルゴリズム

f:id:robonchu:20180512144411p:plain

アルゴリズムCanny法によるエッジ検出 — OpenCV-Python Tutorials 1 documentation

参考:

SIFT

スケールと回転に不変な特徴記述

f:id:robonchu:20180512144927p:plain

f:id:robonchu:20180512150516j:plain

参考:

2値特徴量

BRIEF: BRIEF (Binary Robust Independent Elementary Features, 二値頑健独立基本特徴) — OpenCV-Python Tutorials

ORB: ORB (Oriented FAST and Rotated BRIEF, 方向付きFASTと回転BRIEF) — OpenCV-Python Tutorials 1 documentation

対応点マッチング

f:id:robonchu:20180512151410j:plain

f:id:robonchu:20180512151419j:plain

参考: MIRU2013チュートリアル:SIFTとそれ以降のアプローチ

図形要素検出

ハフ変換

f:id:robonchu:20180512151737j:plain

f:id:robonchu:20180512151747g:plain

参考:

一般化ハフ変換

ランダム化ハフ変換

f:id:robonchu:20180512154343j:plain

特徴統合性理論

顕著性マップ

f:id:robonchu:20180512155235j:plain

参考: コンピュータビジョンのセカイ - 今そこにあるミライ(44) 自動作成を行うために用いられることの多い3つの重要度マップ手法 | マイナビニュース

所感

ロボットの認識器を作る上でとても大事な章だと思う。なかなか難しいところもある。。。

顕著性マップなど人間の視覚システムに基づいて考えられている理論は面白い。

領域処理のお勉強(9)

f:id:robonchu:20180507181750p:plain

参考: Willow Garage ブログの非公式翻訳: OpenCV 2.1をリリース

やりたいこと

領域処理について学ぶ

教科書

CG-ARTS | 書籍・教材

目次

領域のテクスチャ

テクスチャ:繰り返しの輝度パターンを指す

テクスチャの繰り返しパターンを数値化する方法を以下に示す

  1. 2次フーリエ変換

  2. ガボールフィルタ

  3. 画素値の同時生起行列

周波数特徴量

2次フーリエ変換を用いるとテクスチャの特徴を波という観点から見ることができる。

領域分割し、その領域のパワースペクトルを測ることでテクスチャを数値化できる。

f:id:robonchu:20180507144328j:plain

参考: 汚染度の定量化・2次元フーリエ変換、その理論的導入

ガボールフィルタ

f:id:robonchu:20180507145138j:plain

参考:

www.slideshare.net

ガボールフィルタ:正弦波・余弦波にガウス関数で窓をかけた関数になっており、パラメータを操作して、様々な方向と強度をもつフィルタを多数準備して、特徴抽出を行う。

このフィルタ群をフィルタバンクとよび、抽出された特徴量の群はtextonとする。

同時生起行列を用いた統計的特徴量

f:id:robonchu:20180507151209g:plain

参考: グレー レベルの同時生起行列の作成 - MATLAB & Simulink - MathWorks 日本

同時生起行列:離れた2つの場所にある画素対の値から画素値の一様性、方向性、コントラストなどの性質を表す特徴量を求めるもの

同時生起行列を用いて計算するおもな特徴量は次の7種類がある

  1. エネルギー

  2. コントラスト

  3. 相関

  4. エントロピー

  5. サムエントロピー

  6. 逆差分モーメント

隣接画素の統合による領域分割処理

f:id:robonchu:20180507153328j:plain

参考: 領域拡張法のテスト: メモブログ

領域統合法:類似した特徴量を持ち空間的に隣接した画素の集合に画像を分割する手法

画素特徴量のクラスわけによる領域分割処理

f:id:robonchu:20180507153856j:plain

参考: 画像処理論

画素をその特徴量に基づいて特徴空間に基づいて特徴空間に写像し、その特徴空間でクラス分けし、各クラスに属する画像群を領域として画像を分割する方法

ミーンシフトを用いた画像分割処理

ミーンシフト法 → 画像領域の分割や対象画像の追跡に用いられる

参考: Mean Shift Clustering

基本原理

ある任意の点から半径hの超球を考え、その範囲にある点群の平均を計算し、その位置に観測点を移動する。同様の操作を繰り返すと、観測点は最大勾配の方向に移動し、やがて極大点に収束する

確率密度関数の推定

f:id:robonchu:20180507155238j:plain

参考:

www.slideshare.net

確率密度関数の勾配

勾配法:確率密度関数のある点から勾配の大きい方に移動して極大点を探索する方法

f:id:robonchu:20180507155656j:plain

参考:

www.slideshare.net

勾配法を用いた極大探索

このミーンシフト法では確率密度関数が大小が自動的に計算されオーバーシュートや振動がないことで知られている

f:id:robonchu:20180507160623j:plain

参考:

www.slideshare.net

クラスタリングへの応用

各点にミーンシフト法を実行し、収束位置がしきい値以下なら同じクラスタに入れる。

特徴としては全ての点でこの処理が必要だが並列化でき、クラス数をあらかじめ設定する必要がない。

f:id:robonchu:20180507161408j:plain

参考:

www.slideshare.net

対象物と背景の間のエッジを利用した領域分割処理

スネーク:エッジを閉曲線として抽出する

スネークでは複数の対象物や鋭い屈曲がある閉領域を正しく抽出できないという欠点がある。

f:id:robonchu:20180507172717p:plain

参考: 動的輪郭モデル

輪郭抽出

グラフカットを用いた領域分割

f:id:robonchu:20180507180210j:plain

グラフカット:全画面を対象と背景の2種類にラベル付するときに最小となるコスト関数を与え、コスト最小となるラベルの組み合わせを効率良く求める方法

f:id:robonchu:20180507180122p:plain

参考:

コスト関数の意味:グラフィカルモデル入門

GrabCut

領域分割の利用例

合成画像を作るときによく用いられる。つなぎ目の不自然さをなくすために以下のような方法がある。

マッティング:部分画像の境界の画素値を同じ位置に重なる背景画像の画素値の平均値で置き換える処理

アルファブレンディング画像のアルファブレンドを行うときに陥りがちな罠 - どらの日記

参考: 合成のなじみを良くする「エッジブレンディング」のテクニック - コンポジゴク

所感

背景除去や特徴量を用いたセグメンテーションの方法などどれも興味深い。

これらと深層学習の両知識を増やしてコスパの良いロボットの認識器をどんどん考えていきたい。

Xamarinで遊んでみる

f:id:robonchu:20180505191510p:plain

やりたいこと

Xamarinを使ってiOSアプリ開発を無料でしたい

レシピ

教科書

インストール

  1. Mac OS Update

  2. Xcode Update

  3. Visual Studio for mac Install

実機の準備(例:iOS11.03のiPhone6s)

  1. iPhoneMacにつなぐ

Xcodeの設定

Visual Studioiphoneでの実機ビルドを行う為に、Xcodeでダミープロジェクトをつくってバンドル識別子を取得する必要がある

  1. アカウントの登録

  2. プロジェクトの作成(ここでバンドル識別子が取得できる)

    1. iOS

    2. Single View Application

参考:

Visual Studioのプロジェクトの作成(設定)・ビルド

  1. 新しいプロジェクトを作る

    1. iOS

    2. Single View Application

  2. 作成したプロジェクトのInfo.plistのバンドル識別子を上記の物に変更する

  3. 上方タブのDebug -> iPhoneに設定し、横の▷(実行ボタン)をクリック

  4. iPhone上で設定→一般→プロファイル→信頼をクリック

上記手順で実行できる

Xamarinの初期コード構成

  1. Main.cs

    • アプリケーションのエントリーポイント
  2. Info.plist

    • アプリケーション名やバージョンなどを設定できるファイル
  3. Main.storyboard

    • 画面を定義する為のストーリーボードファイル
  4. ViewController.cs

    • ストーリーボードの画面に対してロジックを奇術するためのクラス

いくつかコードをトライ

ボタンなど基本の操作のサンプル

磁気センサ

GPS

加速度センサ

加速度センサを使う

ViewControllerを以下を参考に書きかえ

上記コードの解説
画面サイズ基準でラベルサイズを指定
            // Viewのサイズを取得
            layoutW = View.Bounds.Width;
            layoutH = View.Bounds.Height;

            // Viewサイズを元にLabelサイズを指定
            textW = layoutW / 2;
            textH = layoutH / 6;
デバッグ出力
System.Diagnostics.Debug.WriteLine("Width: {0}, Height: {1}", layoutW, layoutH);
ラベルの作成
            // Label作成&配置
            var sensorText = new UILabel(new CGRect(layoutW / 2 - textW / 2, layoutH / 2 - textH / 2, textW, textH));
            sensorText.BackgroundColor = UIColor.FromRGB(192, 192, 192);
            sensorText.Lines = 0;
            sensorText.TextAlignment = UITextAlignment.Center;
            sensorText.LineBreakMode = UILineBreakMode.TailTruncation;
            View.AddSubview(sensorText);
加速度の表示&反映

Frameとは:[iPhone] UIView の frame と bounds の違い | Sun Limited Mt.

           var textLoc = sensorText.Frame;

            motionManager = new CMMotionManager();

            if (motionManager.AccelerometerAvailable)
            {
                // Accelerometer Update間隔
                motionManager.AccelerometerUpdateInterval = 0.015;
                // UpdateがQueueに入る度に処理を行う(多分)
                motionManager.StartAccelerometerUpdates(NSOperationQueue.CurrentQueue, (data, error) =>
                {
                    sensorText.Text = string.Format("X = {0:N4}\nY = {1:N4}", data.Acceleration.X, data.Acceleration.Y);
                    // 現在の位置を取得
                    nowX = sensorText.Frame.X;
                    nowY = sensorText.Frame.Y;

                    System.Diagnostics.Debug.WriteLine("nowX: {0}, nowY: {1}", nowX, nowY);

                    // Viewをはみ出さないようにAccelerometerの値によってLabelを移動
                    if (nowX + (nfloat)data.Acceleration.X * 10 > 0 && nowX + (nfloat)data.Acceleration.X * 10 < layoutW - textW)
                        textLoc.X = nowX + (nfloat)data.Acceleration.X * 10;

                    if (nowY - (nfloat)data.Acceleration.Y * 10 > 0 && nowY - (nfloat)data.Acceleration.Y * 10 < layoutH - textH)
                        textLoc.Y = nowY - (nfloat)data.Acceleration.Y * 10;

                    sensorText.Frame = textLoc;
                });
            }
動作画面

f:id:robonchu:20180505162026p:plain

この画面の中央に加速度が表示される

Bluetoothを使う

ハマり個所

所感

これからロボットの操作用IFにスマホを使っていきたい♪

3Dセグメンテーションのお勉強

やりたいこと

3Dセグメンテーションについて学ぶ

教科書

GitHub - timzhang642/3D-Machine-Learning: A resource repository for 3D machine learning

RANSAC

【お勉強してみた】RANSACのおはなし - Qiita

自然界のデータにはたくさんノイズがある

ノイズがあると、法則性をうまく見つけられないことがある

そんなノイズをうまく無視するのがRANSAC

参考:

Point Net

www.slideshare.net

Git:GitHub - charlesq34/pointnet2: PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space

SEGCloud

f:id:robonchu:20180502160249p:plain

論文:https://arxiv.org/pdf/1710.07563.pdf

6-DoF Object Pose from Semantic Keypoints

f:id:robonchu:20180502160926p:plain

6-DoF Object Pose from Semantic Keypoints

Git:object3d/code at master · geopavlakos/object3d · GitHub

Good!!!

3D Bounding Box Estimation Using Deep Learning and Geometry

f:id:robonchu:20180502161743p:plain

論文: https://arxiv.org/pdf/1612.00496.pdf

Git: GitHub - fuenwang/3D-BoundingBox: PyTorch implementation for 3D Bounding Box Estimation Using Deep Learning and Geometry

Sliding Shapes for 3D Object Detection in Depth Images

f:id:robonchu:20180502162507j:plain

Sliding Shapes for 3D Object Detection in Depth Images

Object Detection in 3D Scenes Using CNNs in Multi-view Images

論文:https://stanford.edu/class/ee367/Winter2016/Qi_Report.pdf

Deep Sliding Shapes for Amodal 3D Object Detection in RGB-D Images

f:id:robonchu:20180502163316j:plain

Deep Sliding Shapes

Git:GitHub - shurans/DeepSlidingShape: Deep Sliding Shapes for Amodal 3D Object Detection in RGB-D Images

Good!!!

DeepContext: Context-Encoding Neural Pathways for 3D Holistic Scene Understanding

f:id:robonchu:20180502163730p:plain

DeepContext

Voxel Net

f:id:robonchu:20180502170755j:plain

論文: https://arxiv.org/pdf/1711.06396.pdf

Git: GitHub - jeasinema/VoxelNet-tensorflow: A 3D object detection system for autonomous driving.

PointNets

f:id:robonchu:20180502171533j:plain

論文: https://arxiv.org/pdf/1711.08488.pdf

Git: GitHub - charlesq34/frustum-pointnets: Frustum PointNets for 3D Object Detection from RGB-D Data

Good!!!

(おまけ)三次元のデータ形式

PCD

PLY

参考