点群深層学習の研究動向
2019.6.12
千葉 直也（東北大学）

三次元点群とは三次元点 (x, y, z) の集合として表現された三次元形状の記述方法

データによってはカラー，反射強度などの付加情報が点ごとに与えられる(𝑥𝑥1 , 𝑦𝑦1 , 𝑧𝑧1 )(𝑥𝑥2 , 𝑦𝑦2 , 𝑧𝑧2 )・・・(𝑥𝑥3 , 𝑦𝑦3 , 𝑧𝑧3 )・・・(𝑥𝑥𝑖𝑖 , 𝑦𝑦𝑖𝑖 , 𝑧𝑧𝑖𝑖 )・・・(𝑥𝑥𝑗𝑗 , 𝑦𝑦𝑗𝑗 , 𝑧𝑧𝑗𝑗 )三次元点群の表す形状(𝑥𝑥𝑁𝑁 , 𝑦𝑦𝑁𝑁 , 𝑧𝑧𝑁𝑁 )三次元点群データ

二次元画像と三次元点群の違い
二次元画像

二次元上のピクセル
密（画像上に画素が詰まっている）
あり（上から下，左から右など）

三次元点群

構成要素
粗密
構成要素の順序の意味

三次元上の点疎（表面を表す点のみ）なし（無理に順序は与えられるが本質的な意味はない）

点群深層学習とは（三次元）点群を深層学習で取り扱う枠組み• 点群を入力／処理／出力するニューラルネットワーク• PointNet [Qi+, CVPR2017] 以降急速に発展
PointNet公開 (ArXiv) CVPR2017

千葉，戸田．三次元点群を取り扱うニューラルネットワークのサーベイ Ver. 2
https://speakerdeck.com/nnchiba/point-cloud-deep-learning-survey-ver-2

点群深層学習とは（三次元）点群を深層学習で取り扱う枠組み• 点群を入力／処理／出力するニューラルネットワーク• PointNet [Qi+, CVPR2017] 以降急速に発展

本講演では• 点群を直接入力するためのアプローチ• アプリケーションの例について紹介

三次元点群を取り扱う難しさ
要因1: 順不同な入力

点群は点の集合＝点の順序が変わっても同じ形状を示す→ 点の順序に不変であることが必要

要因2: 剛体変換不変性

剛体変換に伴って変化する特性と変化しない特性が存在

要因3: 疎な点群に対する畳み込み
隣接関係の自明な定義がない

三次元点群を取り扱う難しさ
要因1: 順不同な入力

点群は点の集合＝点の順序が変わっても同じ形状を示す→ 点の順序に不変であることが必要(𝑥𝑥1 , 𝑦𝑦1 , 𝑧𝑧1 )(𝑥𝑥2 , 𝑦𝑦2 , 𝑧𝑧2 )・・・・・・ ・・・(𝑥𝑥3 , 𝑦𝑦3 , 𝑧𝑧3 )(𝑥𝑥𝑖𝑖 , 𝑦𝑦𝑖𝑖 , 𝑧𝑧𝑖𝑖 )(𝑥𝑥𝑗𝑗 , 𝑦𝑦𝑗𝑗 , 𝑧𝑧𝑗𝑗 )三次元点群の表す形状(𝑥𝑥𝑁𝑁 , 𝑦𝑦𝑁𝑁 , 𝑧𝑧𝑁𝑁 )三次元点群データ

三次元点群を取り扱う難しさ
要因1: 順不同な入力

点群は点の集合＝点の順序が変わっても同じ形状を示す→ 点の順序に不変であることが必要(𝑥𝑥1 , 𝑦𝑦1 , 𝑧𝑧1 )(𝑥𝑥2 , 𝑦𝑦2 , 𝑧𝑧2 )・・・・・・ ・・・(𝑥𝑥3 , 𝑦𝑦3 , 𝑧𝑧3 )入れ替える(𝑥𝑥𝑖𝑖 , 𝑦𝑦𝑖𝑖 , 𝑧𝑧𝑖𝑖 )(𝑥𝑥𝑗𝑗 , 𝑦𝑦𝑗𝑗 , 𝑧𝑧𝑗𝑗 )三次元点群の表す形状(𝑥𝑥𝑁𝑁 , 𝑦𝑦𝑁𝑁 , 𝑧𝑧𝑁𝑁 )三次元点群データ

順序を入れ替えても点群としての形状は全く同じ順不同な入力を扱う方法
Symmetric Functionを使うアイデア

PointNet [Qi+, CVPR2017], Deep Sets [Zaheer+, NIPS2017]
ポイント1:
点ごとの変換であれば順序に依存しない
ポイント2:
グローバルプーリングであれば順序に依存しない順不同な入力を扱う方法
Symmetric Functionを使うアイデア

ポイント1:
点ごとの変換であれば順序に依存しない
𝑥𝑥1

ℎ(⋅)

ℎ(𝑥𝑥1 )ℎ(⋅)ℎ(𝑥𝑥2 )

𝑥𝑥𝑖𝑖ℎ(⋅)ℎ(𝑥𝑥𝑖𝑖 )𝑥𝑥𝑁𝑁ℎ(⋅)ℎ(𝑥𝑥𝑁𝑁 )・・・

𝑥𝑥3ℎ(𝑥𝑥3 )

・・・

・・・

入力点群ℎ(⋅)

・・・

𝑥𝑥2

点ごとに変換された特徴量

順序に依存しない変換になっている

順不同な入力を扱う方法
Symmetric Functionを使うアイデア

ポイント2:
グローバルプーリングであれば順序に依存しない・・・ℎ(𝑥𝑥1 )ℎ(𝑥𝑥2 )ℎ(𝑥𝑥3 )
・・・ℎ(𝑥𝑥𝑖𝑖 )ℎ(𝑥𝑥𝑁𝑁 )

点ごとに変換された特徴量

𝑔𝑔(⋅)

𝑔𝑔 ℎ 𝑥𝑥1 , ℎ 𝑥𝑥2 , ⋯ , ℎ 𝑥𝑥𝑁𝑁

点群全体から集約した特徴量

𝑔𝑔 ⋅ : 特徴量ベクトルの要素（チャンネル）ごとに，最大値・平均値などを計算

順不同な入力を扱う方法
Symmetric Functionを使うアイデア

ポイント1: 点ごとの変換→ PointNetではShared MLP（1x1 Convolution, Pointwise Convolutionと同義）
ポイント2: グローバルプーリング→ PointNetではMax Pooling𝑥𝑥𝑁𝑁ℎ(𝑥𝑥1 )ℎ(𝑥𝑥2 )ℎ(𝑥𝑥3 )ℎ(⋅)ℎ(𝑥𝑥𝑁𝑁 )ℎ(⋅)
Shared MLPℎ(𝑥𝑥𝑖𝑖 )・・・・・・𝑥𝑥𝑖𝑖ℎ(⋅)
ℎ(⋅)
ℎ(⋅)

・・・

・・・

𝑥𝑥1𝑥𝑥2𝑥𝑥3𝑔𝑔(⋅)
Max Pooling𝑔𝑔 ℎ 𝑥𝑥1 , ℎ 𝑥𝑥2 , ⋯ , ℎ 𝑥𝑥𝑁𝑁

三次元点群を取り扱う難しさ
要因2: 剛体変換不変性

剛体変換に伴って変化する特性と変化しない特性が存在（基準）
種類: バニー
剛体変換（A）
種類: バニー
並進: あり回転: なし（B）
種類: バニー
並進: あり回転: あり（C）
種類: ブッダ
並進: あり回転: ありクラス分類などでは剛体変換不変性な出力が望ましい

剛体変換を正規化する方法
Spatial Transformer Networks (STN)を導入

Spatial Transformer Networks [Jaderberg+, NIPS2015]
幾何変換のパラメータを推定し正規化する構造を持つ
パラメータ

入力
入力

幾何変換の出力パラメータを推定

幾何変換のパラメータを推定

出力

剛体変換を正規化する方法
Spatial Transformer Networks (STN)を導入

Spatial Transformer Networks [Jaderberg+, NIPS2015]
幾何変換のパラメータを推定し正規化する構造を持つ

PointNetでの利用法• Symmetric Functionによって点の順序に不変なグローバル特徴量を入力し剛体変換のパラメータを推定• （剛体変換ではないが）特徴空間でもSTNを適用，特徴量空間での変換を行う

PointNetの全体像

T-Net = STN

点ごとの特徴量とグローバルな特徴量を結合

Max Pooling• グローバルな特徴量を使ってクラス分類を実現• 点ごとの特徴量とグローバルな特徴量を結合してからShared MLPすることで，セマンテッィクセグメンテーションも実現三次元点群を取り扱う難しさ
要因3: 疎な点群に対する畳み込み
隣接関係の自明な定義がない(𝑥𝑥1 , 𝑦𝑦1 , 𝑧𝑧1 )(𝑥𝑥2 , 𝑦𝑦2 , 𝑧𝑧2 )・・・・・・ ・・・(𝑥𝑥3 , 𝑦𝑦3 , 𝑧𝑧3 )(𝑥𝑥𝑖𝑖 , 𝑦𝑦𝑖𝑖 , 𝑧𝑧𝑖𝑖 )(𝑥𝑥𝑗𝑗 , 𝑦𝑦𝑗𝑗 , 𝑧𝑧𝑗𝑗 )三次元点群の表す形状(𝑥𝑥𝑁𝑁 , 𝑦𝑦𝑁𝑁 , 𝑧𝑧𝑁𝑁 )三次元点群データ

データ上の隣接関係は当然関係ない

この点に対する近傍は？

三次元点群を取り扱う難しさ
要因3: 疎な点群に対する畳み込み

隣接関係の自明な定義がない→ PointNet以降，多数の手法が提案された手法の分類の例 （点群深層学習Meta-studyスライドより）• 二次元の畳み込みに帰着• 地面方向（重力方向）は既知として2Dに変換• 接平面に投影• 三次元座標を基準とした空間的畳み込み••••

世界座標系上のボクセルグリッド
点ごとのボクセルグリッド
点ごとの非ボクセルな固定形状のカーネル
点ごとにフレキシブルな形状のカーネル• 近傍点グラフを基準とした畳み込み• 三次元空間での距離• 特徴空間での距離• その他の表現を利用した近傍情報・局所形状の利用

Kd-Tree，自己組織化マップ，PPF，CRF，SDF，Octree，etc…

千葉．点群深層学習Meta-study．
https://www.slideshare.net/naoyachiba18/metastudy畳み込みの手法の一例
Pointwise CNNのPointwise Convolution [Hua+, CVPR2018]
1. 点ごとにボクセルグリッドでカーネルを定義
2. ボクセルごとに特徴量の平均を求め，畳み込み演算は高速だが剛体変換によって変化してしまう畳み込みの手法の一例
Tangent Convolution[Tatarchenko+, CVPR2018]

1.
2.
3.
4.

各点の接平面上を求める
節平面上に近傍点を投影
接平面を埋めるように補間
2D CNNで畳み込み

三次元点の投影

Nearest Neighbor

Full Gaussian Mixture

Top-3 Neighbors
Gaussian Mixture畳み込みの手法の一例
Dynamic Graph CNN (DG-CNN) のEdgeConv[Wang+, ACM ToG, 2019]

1. エッジごとに特徴量を計算
2. ノードごとにエッジの特徴量を集約
2点の特徴量から，それらを繋ぐエッジの特徴量を計算
エッジの特徴量を集約

三次元点群を取り扱う難しさ
要因3: 疎な点群に対する畳み込み

隣接関係の自明な定義がない→ PointNet以降，多数の手法が提案された
そのうち• Pointwise Convolution• Tangent Convolution• EdgeConv
を紹介

局所形状を利用するための畳み込みは有効なアプローチだと思われるが，まだ整理・評価が進んでいないのが現状アプリケーションの例
ベンチマーク的なアプリケーション• クラス分類• （セマンティック／インスタンス）セグメンテーション

実利用寄りなアプリケーション• 物体検出・物体認識

VoxelNet [Zhou+, CVPR2018]，Frustum PointNet [Qi+, CVPR2018]など• 点群の位置合わせ（Global Registration）

3DMatch [Zeng+, CVPR2017]，3D Feat-Net [Yew+, ECCV2018]など• 点群の位置合わせ（Local Registration）
IT-Net [Yuan+, arXiv]，PointNetLK [Aoki+, CVPR2019]など• アップサンプリング

PU-Net [Yu+, CVPR2018]，Progressive Upsampling [Yuan+, 3DV2018]など• 形状補完Under Weak Supervision [Stutz+, CVPR2018]，Latent Optimization [Gurumurthy+, arXiv]など• その他

ノイズ除去 [Rakotosaona+, arXiv]，手の姿勢推定 [Ge+, ECCV2018]，把持姿勢の評価 [Liang+, arXiv] など

アプリケーションの例
物体検出・物体認識

VoxelNet [Zhou+, CVPR2018]
KITTIデータセットで車，歩行者などの検出

点群の位置合わせ（Global Registration）
3DMatch [Zeng+, CVPR2017]

位置合わせのための局所点群を記述する特徴量を学習

点群の位置合わせ（Local Registration）
PointNetLK [Aoki+, CVPR2019]

Lucas-Kanade法とPointNetを組み合わせて点群同士の位置合わせ

アプリケーションの例
アップサンプリング

Progressive Upsampling[Yuan+, 3DV2018]

パッチベースのアップサンプリング

形状補完

Latent Optimization[Gurumurthy+, arXiv]

GANを使って潜在空間でノイズ除去することで三次元形状を補完

手の姿勢推定P2P Regression
PointNet [Ge+, CVPR2018]
手の三次元点群から関節位置を推定

まとめ
三次元点群をニューラルネットワークで取り扱うための枠組み・アイデアが出揃いつつある
局所形状の利用法（畳み込みなど）についても徐々に整理されていくことが予想される
まだベンチマーク性能はそれほど良くない
三次元点群を用いたことによる限界かは不明
今後さらに性能が向上することを期待している三次元点群を用いることのメリットが生きる
アプリケーションを設定することが重要

実スケールを取り扱えるため，実空間系アプリ（xR，ロボットなど）とは相性が良いはず日本語で公開されている資料等の紹介• VISION&IT Lab 皆川さんのSlideShare上の各資料
https://www.slideshare.net/takmin/• @obaradsさんの各資料

https://obarads.github.io/• 深層学習を用いた三次元物体認識（産総研 金崎先生）

https://kanezaki.github.io/media/CRESTSeminar20181030_AsakoKanezaki.pdf• cvpaper.challengeの各資料

http://hirokatsukataoka.net/project/cc/index_cvpaperchallenge.html（以下，私が作成・公開している資料）• 三次元点群を取り扱うニューラルネットワークのサーベイ Ver. 2

https://speakerdeck.com/nnchiba/point-cloud-deep-learning-survey-ver-2?slide=14• 点群深層学習 Meta-study （cvpaper.challengeの一環）
https://www.slideshare.net/naoyachiba18/metastudy