三次元点群を取り扱う
ニューラルネットワークのサーベイ
東北大学 橋本研究室 D1 千葉 直也
M1 戸田 幸宏
本資料のアウトライン
•はじめに
•まとめた論文の一覧,大まかな傾向と感想
•各論文のまとめ
• ~PointNet (PointNetに至るまで)
• 入力にボクセルを利用
• 入力を点群・ボクセル以外に変換
• 局所形状の利用
• 特殊なレイヤー
• 個別のアプリケーション
•参考文献,謝辞
はじめに
PointNet (CVPR2017) をうけて,三次元点群を取り扱う
ネットワークの研究が盛んになった
三次元点群 (Point Cloud) は,入力点の順番によらず同じ形状を
記述できる「順不同なデータ構造」(三次元点の集合)であるため,
取り扱いが難しかった
PointNetはこの課題に対する解決方針を与えた
PointNet前後から現在までの,ニューラルネットワークで
三次元データ(点群と見なせる程度に十分高解像度なボクセルを含む)を
取り扱う論文のサーベイを行った
せっかくまとめたので公開します
ディープラーニングはあまり詳しくないので,間違っている部分も
あるかと思います.ご指摘頂けるとありがたいです
まとめた論文の一覧 (1/3)
~PointNet
1. STN: M. Jaderberg, et al.. Spatial Transformer Networks. NIPS2015. (2015-01-05)
2. PointNet: C. R. Qi, et al.. PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation. CVPR2017.
(2016-12-02)
入力にボクセルを利用
3. OctNet: G. Riegler, et al.. OctNet: Learning Deep 3D Representations at High Resolutions. CVPR2017. (2016-11-15)
4. O-CNN: P. –S. Wang, et al.. O-CNN: Octree-based Convolutional Neural Networks for 3D Shape Analysis. SIGGRAPH2017.
(2017-07-03)
5. RSNet: Q. Huang, et al.. Recurrent Slice Networks for 3D Segmentation of Point Clouds. CVPR2018. (2018-02-13)
6. PointGrid: T. Le, et al.. PointGrid: A Deep Network for 3D Shape Understanding. CVPR2018. (2018-06-18)
7. AO-CNN: P. –S. Wang, et al.. Adaptive O-CNN: A Patch-based Deep Representation of 3D Shapes. SIGGRAPH Asia2018.
(2018-09-19)
入力を点群・ボクセル以外に変換
8. FPNN: Y. Li, et al.. FPNN: Field Probing Neural Networks for 3D Data. NIPS2016. (2016-05-20)
9. Kd-Network: R. Klokov, et al.. Escape from Cells: Deep Kd-Networks for The Recognition of 3D Point Cloud Models.
ICCV2017. (2017-04-04)
10. PPFNet: H. Deng, et al.. PPFNet: Global Context Aware Local Features for Robust 3D Point Matching. CVPR2018.
(2018-02-07)
11. SO-Net: J. Li, et al.. SO-Net: Self-Organizing Network for Point Cloud Analysis. CVPR2018. (2018-03-12)
12. MCCNN: P. Hermosilla, et al.. Monte Carlo Convolution for Learning on Non-Uniformly Sampled Point Clouds.
SIGGRAPH Asia2018. (2018-06-05)
13. Automatic Depth Image Generation: R. Roveri, et al.. A Network Architecture for Point Cloud Classification via Automatic
Depth Images Generation. CVPR2018. (2018-06-18)
14. MRTNet: M. Gadelha, et al.. Multiresolution Tree Networks for 3D Point Cloud Processing. ECCV2018. (2018-07-10)
Google Spreadsheetsで公開しています
https://docs.google.com/spreadsheets/d/1MJTdLHIRefclx4GkZkfZxFj9GIxLSjit_f32j_DR9gw/edit?usp=sharing
まとめた論文の一覧 (2/3)
局所形状の利用
15. ECC: M. Simonovsky, et al.. Dynamic Edge-Conditioned Filters in Convolutional Neural Networks on Graphs. CVPR2017.
(2017-04-10)
16. PointNet++: C. R. Qi, et al.. PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space. NIPS2017.
(2017-06-07)
17. Pointwise CNN: B. –S. Hua, et al.. Pointwise Convolutional Neural Networks. CVPR2018. (2017-12-14)
18. KCN: Y. Shen, et al.. Mining Point Cloud Local Structures by Kernel Correlation and Graph Pooling. CVPR2018. (2017-12-19)
19. PointCNN: Y. Li, et al.. PointCNN. arXiv:1801.07791. (2018-01-23)
20. DG-CNN: Y. Wang, et al.. Dynamic Graph CNN for Learning on Point Clouds. arXiv:1801.07829. (2018-01-24)
21. Flex-Convolution: F. Groh, et al.. Flex-Convolution. (Million-Scale Point-Cloud Learning Beyond Grid-Worlds). ACCV2018.
(2018-03-20)
22. PCNN: M. Atzmon, et al.. Point Convolutional Neural Networks by Extension Operators. SIGGRAPH2018. (2018-03-27)
23. SpiderCNN: Y. Xu, et al.. SpiderCNN: Deep Learning on Point Sets with Parameterized Convolutional Filters. ECCV2018.
(2018-03-30)
24. Parametric Continuous Convolutions: S. Wang, et al.. Deep Parametric Continuous Convolutional Neural Networks.
CVPR2018. (2018-06-18)
25. Tangent Convolution: M. Tatarchenko, et al.. Tangent Convolutions for Dense Prediction in 3D.
CVPR2018. (2018-06-18)
26. SCN: S. Xie, et al.. Attentional ShapeContextNet for Point Cloud Recognition. CVPR2018. (2018-06-18)
Google Spreadsheetsで公開しています
https://docs.google.com/spreadsheets/d/1MJTdLHIRefclx4GkZkfZxFj9GIxLSjit_f32j_DR9gw/edit?usp=sharing
まとめた論文の一覧 (3/3)
特殊なレイヤー
27. SEGCloud: L. P. Tchapmi, et al.. SEGCloud: Semantic Segmentation of 3D Point Clouds. 3DV2017. (2017-10-20)
28. FoldingNet: Y. Yang, et al.. FoldingNet: Point Cloud Auto-encoder via Deep Grid Deformation. CVPR2018. (2017-12-19)
29. SPLATNet: H. Su, et al.. SPLATNet: Sparse Lattice Networks for Point Cloud Processing. CVPR2018. (2018-02-22)
30. URSA: M. B. Skouson. URSA: A Neural Network for Unordered Point Clouds Using Constellations. arXiv:1808.04848.
(2018-08-14)
31. Point Cloud VAE-GAN: C. Kingkan, et al.. Generating Mesh-based Shapes From Learned Latent Spaces of Point Clouds
with VAE-GAN. ICPR2018. (2018-08-20)
32. Fully Convolutional Point Network: D. Rethage, et al.. Fully-Convolutional Point Networks for Large-Scale Point Clouds.
ECCV2018. (2018-08-21)
33. PPF-FoldingNet: H. Deng, et al.. PPF-FoldNet: Unsupervised Learning of Rotation Invariant 3D Local Descriptors. ECCV2018.
(2018-08-30)
個別のアプリケーション
34. PCPNet: P. Guerrero, et al.. PCPNET: Learning Local Shape Properties from Raw Point Clouds. Eurographics2018. (2017-10-13)
35. Frustum PointNet: C. R. Qi, et al.. Frustum PointNets for 3D Object Detection from RGB-D Data. CVPR2018. (2017-11-22)
36. SGPN: W. Wang, et al.. SGPN: Similarity Group Proposal Network for 3D Point Cloud Instance Segmentation. CVPR2018.
(2017-11-23)
37. PU-Net: L. Yu, et al.. PU-Net: Point Cloud Upsampling Network. CVPR2018. (2018-01-21)
38. Hand PointNet: L. Ge, et al.. Hand PointNet: 3D Hand Pose Estimation Using Point Sets. CVPR2018. (2018-06-18)
39. Point Attention Network: C. Kingkan, et al.. Point Attention Network for Gesture Recognition Using Point Cloud Data.
BMVC2018. (2018-09-03)
40. P2P Reg PointNet: L. Ge, et al.. Point-to-Point Regression PointNet for 3D Hand Pose Estimation. ECCV2018. (2018-10-08)
まだたくさんあるとは思いますが,今回は以上の論文を扱います
分類も難しかったのですが,とりあえず以上のように分けました
Google Spreadsheetsで公開しています
https://docs.google.com/spreadsheets/d/1MJTdLHIRefclx4GkZkfZxFj9GIxLSjit_f32j_DR9gw/edit?usp=sharing
まとめた論文の発表時期
~PointNet
ボクセル
局所形状の利用
特殊なレイヤー
アプリケーション
点群・ボクセル以外
基本的にarXivの初めのバージョン
学会の場合は学会初日
(例外あり)
~2016 2017.4 2017.7 2017.10 2018.4 2018.102017.1 2018.1 2018.7
1. STN
2. PointNet
3. OctNet 4. O-CNN 5. RSNet
6. PointGrid
7. AO-CNN
9. Kd-Net 10. PPFNet
11. SO-Net
12. MCCNN
13. ADIG
15. ECC
16. PointNet++ 17. Pw CNN
18. KCN
19. PointCNN
20. DG-CNN
21. F-Conv
22. PCNN
23. SpiderCNN
24. PCC
25. TangentC
26. SCN
27. SEGCloud
28. FoldingNet
29. SPLATNet 30. URSA
31. PC V-G
32. FCPN
33. PPF-FN
34. PCPNet
35. FrustumPN
36. SGPN
37. PU-Net
39. PAN
8. FPNN
14. MRTNet
38. Hand PN
40. P2PRPN
大まかな傾向と感想 (1/2)
• PointNetが局所的な形状情報を取り扱わなかったため,
局所形状をとらえるための工夫が流行った
• 近傍点を結んだグラフを作り,近傍点の特徴量を集約する例が多い
• 近傍点探索を三次元空間でのみ行う(オフラインで一回)例と,
特徴量空間でも行う(オンラインで逐次更新)例がある
• 単純な「近傍からの集約」の次のアイデアを模索中といった印象
• 点群をボクセルやその他の形式に一度変換する例も多い
• これまでの点群処理の知見を生かす
• 処理の高速化
• TensorFlowによる実装が多い
• PointNet,PointNet++の影響
大まかな傾向と感想 (2/2)
• 多くはクラス分類とセグメンテーションで性能評価
• おそらくデータセットの存在とPointNetの影響が大きい
• 個別のアプリケーションはこれからまだ増えそう
• 各点の特徴量の集約がMax Poolingで良いのかは議論がある
• あるネットワークの構造ではAverage Poolingの方がよかった,という
例が複数ある
• 点群をどのようにサンプリングするか,が今後の焦点の
一つになりそう
• メッシュ等から点群への変換
• プーリングなどに使うための解像度(点群密度)の異なる点群への変換
• 実際の三次元計測のことまで考えている論文はまだ少ない印象
本資料のアウトライン
•はじめに
•まとめた論文の一覧,大まかな傾向と感想
•各論文のまとめ
• ~PointNet (PointNetに至るまで)
• 入力にボクセルを利用
• 入力を点群・ボクセル以外に変換
• 局所形状の利用
• 特殊なレイヤー
• 個別のアプリケーション
•参考文献,謝辞
以降,図などを各論文から引用しています
1. STN
[M. Jaderberg+, NIPS2015, arXiv:1506.02025, 2015-01-05] 担当: 戸田
幾何学変換を扱えるネットワーク
• Spatial Transformer Network (STN) を組み込むことで
ネットワークが幾何学変換に対応できるようになる
• PointNetを理解する上では欠かせない先行研究
• PyTorchのチュートリアルにもある
https://pytorch.org/tutorials/intermediate/spatial_transformer_tutorial.html
評価
• クラス分類
MNIST, Street View House Numbers, CUB-200-2011 birds dataset
Localisation Net: 幾何学変換を推定する
• 幾何学変換のパラメータθを出力
• あらゆるネットワーク構造を取りうる
(CNNでもMLPでも)
• ただし、パラメータθを得るために回帰出力層が必要
1. STN
[M. Jaderberg+, NIPS2015, arXiv:1506.02025, 2015-01-05] 担当: 戸田
1. STN
[M. Jaderberg+, NIPS2015, arXiv:1506.02025, 2015-01-05] 担当: 戸田
Grid Generator
• Transformer Netの出力θで座標系(Grid)を変換する
• 二次元アフィン変換であればθは6次元
Gridを変換
1. STN
[M. Jaderberg+, NIPS2015, arXiv:1506.02025, 2015-01-05] 担当: 戸田
Sampler
• 変換したGridに乗っている値を取り出す
• どんなサンプリング方式でも可
• ちなみに点群ではこの処理は不要
(→gridに縛られない点群のいいところ)
2. PointNet
[C. R. Qi+, CVPR2017, arXiv:1612.00593, 2016-12-02] 担当: 千葉
点群を直接入力できるネットワークの設計
点の順番が変化しても出力が変わらないような
Symmetric Functionを学習する
評価
• クラス分類
ModelNet40
• セグメンテーション
ShapeNet-Part (+ Blensor Kinect Simulator), S3DIS
2. PointNet
[C. R. Qi+, CVPR2017, arXiv:1612.00593, 2016-12-02] 担当: 千葉
Symmetric Functionによって順不同な入力を扱う
• 三次元点群は順不同(irregular)なデータ形式
• 考えられるアプローチは3つ
• ソートする
• RNNの入力シーケンスとして扱う(全組み合わせで学習する)
• Symmetric Functionを使う → PointNetはこのアプローチ
• PointNetでは𝑔𝑔 ⋅ としてMax Poolingを用いる
点ごとに独立した変換
(Point-wise convolutionなど)
点の順序が影響しない関数
Max Poolingなど
Symmetric Function
(𝑥𝑥の順序の影響を受けない)
2. PointNet
[C. R. Qi+, CVPR2017, arXiv:1612.00593, 2016-12-02] 担当: 千葉
ローカルな特徴はどうするか
→ グローバルな特徴と点ごとの特徴を結合して
最終的なポイントごとの特徴とする
T-net (STN) の導入
• 回転・並進の正規化するために入力点群を
T-Net (STN)で剛体変換
• 特徴量もFeature Alignment Networkで変換
• これもT-net (STN)
• 正規直交行列になるようロスを設計
(正規直交変換であれば情報を失わないため)
2. PointNet
[C. R. Qi+, CVPR2017, arXiv:1612.00593, 2016-12-02] 担当: 千葉
ネットワークの構造
T-Net = STN
Max Pooling
点ごとの特徴と
グローバルな特徴を結合
本資料のアウトライン
•はじめに
•まとめた論文の一覧,大まかな傾向と感想
•各論文のまとめ
• ~PointNet (PointNetに至るまで)
• 入力にボクセルを利用
• 入力を点群・ボクセル以外に変換
• 局所形状の利用
• 特殊なレイヤー
• 個別のアプリケーション
•参考文献,謝辞
3. OctNet
[G. Riegler+, CVPR2017, arXiv:1611.05009, 2016-11-15] 担当: 千葉
高解像度なボクセルグリッドを扱えるOctNetの提案
• データの密度に従って空間を分割
• 点のない空間は分割しないことで
計算リソースとメモリリソースを節約
• PointNet以前の論文
評価
• クラス分類
ModelNet10, ModelNet40
• 回転推定
ModelNet10, Biwi Kinect Head Pose Database
• セグメンテーション
RueMonge2014
3. OctNet
[G. Riegler+, CVPR2017, arXiv:1611.05009, 2016-11-15] 担当: 千葉
生のOctreeはディープラーニングと相性が悪い
生のOctree実装の多くは木構造をポインタで持つため
→ Hybrid Grid-Octreeによって解決
A. Miller, et al.. Real-time rendering and dynamic updating of 3-d volumetric
data. GPGPU-WS.
• 浅いOctreeを階層的に配置
• 一つの階層におけるOctreeをビット列で表現
3. OctNet
[G. Riegler+, CVPR2017, arXiv:1611.05009, 2016-11-15] 担当: 千葉
Hybrid Grid-Octreeの利点
• 簡単な演算で子Octreeのインデックスを得られる
• この演算自体もpopcntで高速な実装ができる
Network Operations
• Convolution, Pooling, Unpoolingを効率よく行いたい
• 点ごとの操作(Point-wise Convolutionや活性化関数)は
データ構造に依存しないので問題ではない
3. OctNet
[G. Riegler+, CVPR2017, arXiv:1611.05009, 2016-11-15] 担当: 千葉
Hybrid Grid-Octree上でのConvolution
• Octreeとカーネルの畳み込み:
サブボクセルの畳み込みに分けると計算結果を
使い回せる
• 計算しなければいけないサブボクセルのパターンは
カーネルとの位置関係によって領域ごとに異なる
サブボクセルのパターン 一般的な三次元の畳み込みと
提案する畳み込みの比較
4. O-CNN
[P. –S. Wang+, SIGGRAPH2017, 2018-07-03] 担当: 千葉
Octree上でのCNN: O-CNNを提案
Octree上で効率よくCNNで計算できるデータ構造を設計
• GPU上で高速に計算できる
• メモリ・計算コストは深さに対して2乗で増加
(空間解像度は3乗に増加するので効率が良いといえる)
評価
• クラス分類
ModelNet40
• Shape retrieval
ShapeNet-Core55
• セグメンテーション
ShapeNet-Sem
4. O-CNN
[P. –S. Wang+, SIGGRAPH2017, 2018-07-03] 担当: 千葉
Shuffle Key + Label
• Shuffle Key: Octree上の座標をビット表現
Jane Wilhelms, et al.. Octrees for faster
isosurface generation. TOG, 1992.
• 八分木の各リーフを3ビットで表現,
レイヤー順に結合
• 𝑙𝑙レイヤーであれば3𝑙𝑙ビットを使用
• Label
• Octreeのレイヤーごとにボクセルに
ラベル(インデックス)をつける
• 空ならゼロ
Super-octree
Mini-batch中もOctreeをすべてオーバーラップ,
一つでもボクセルが空でなければLabelをつける
4. O-CNN
[P. –S. Wang+, SIGGRAPH2017, 2018-07-03] 担当: 千葉
Convolution
• Shuffle key → LabelのHash Tableを作成
• 近傍ボクセルをまとめて処理
Pooling, Unpooling
KernelとStrideを2にするとボクセルの構造と一致し,
簡単に処理できる
二次元の例:
(左)各ボクセル独立に処理すると9x4=36回だけHash Tableにアクセス
(右)隣接4ボクセルをまとめると16回でよい
4. O-CNN
[P. –S. Wang+, SIGGRAPH2017, 2018-07-03] 担当: 千葉
ネットワークの構造
• Basic Unit
U𝑙𝑙: Convolution → BN → ReLU → Pooling
DU𝑙𝑙: Unpooling → Deconvolution → BN → ReLU
• 𝑙𝑙は深さを表す
• O-CNN 𝑑𝑑 : input → U𝑑𝑑 → U𝑑𝑑−1 → ⋯ → U2
• Basic Unitを積む
• U2の出力に空のボクセルがあった場合はゼロで埋める
• クラス分類:
O-CNN 𝑑𝑑 → Dropout → FC(128) → Dropout
→ FC(クラス数) → softmax → output
• セグメンテーション:
O-CNN 𝑑𝑑 → DU2 → DU3 → ⋯ → DU𝑑𝑑 → CRF
• エンコーダー・デコーダー風
5. RSNet
[Q. Huang+, CVPR2018, arXiv:1802.04402, 2018-02-13] 担当: 千葉
点群を順序付きのボクセルに変換し入力する
ネットワークRecurrent Slice Network (RSNet) を提案
順不同な点群入力に軸に沿った順序構造を導入
RSNetの構成要素
• Slice Pooling Layer
• RNN layers
• Slice Unpooling Layer
評価
• セグメンテーション
• S3DIS, ScanNet, ShapeNet-Part
5. RSNet
[Q. Huang+, CVPR2018, arXiv:1802.04402, 2018-02-13] 担当: 千葉
処理の流れ
1. Input Feature Extraction
入力前にPoint-wise Convolution
2. Slice Pooling Layer
x,y,zの各軸に沿って点群を
分割しMax Pooling
3. RNN layers
スライスした点群を順に
bidirectional RNNに入力
4. Slice Unpooling Layer
RNNからの出力を
対象スライス上の全点に反映
5. Output Feature Extraction
Slice Unpooling Layerの出力を
各点ごとに結合,Point-wise Convolutionで最終的なクラスに変換
Slice Pooling Layer
Slice Unpooling Layer
5. RSNet
[Q. Huang+, CVPR2018, arXiv:1802.04402, 2018-02-13] 担当: 千葉
ネットワークの構造
x,y,zの各軸に
対して行う
Slice Pooling Layer
RNN Layer
Slice Unpooling Layer
Point-wise Convolution
Point-wise Convolution
6. PointGrid
[T. Le+, CVPR2018, 2018-06-18] 担当: 千葉
点群からボクセルへのサンプリングを工夫し,
ボクセルの畳み込みを学習するPointGridの提案
• ボクセル中の点の座標を直接入力
• 各ボクセルで点数が等しくなるようサンプリング
評価
• クラス分類
ModelNet40, ShapeNet-Core v2
• セグメンテーション
• ShapeNet-Part
6. PointGrid
[T. Le+, CVPR2018, 2018-06-18] 担当: 千葉
ボクセル中の点数が一定になるようにサンプリング
点数が一定=次元が固定なので,座標値を結合して入力
• 点数がゼロの場合: 空のボクセルとして処理
• 点数が多い場合: ランダムに除去
• 点数が少ない場合: オーバーサンプリング
(同じ点を複数回サンプリング)
6. PointGrid
[T. Le+, CVPR2018, 2018-06-18] 担当: 千葉
ネットワーク構造
上: クラス分類,下: セグメンテーション
サンプリングの工夫が主で,ネットワーク構造は一般的
7. AO-CNN
[P. –S. Wang+, SIGGRAPH Asia2018, 2018-09-19] 担当: 千葉
効率よく三次元形状をエンコード・デコードできる
Adaptive O-CNNを提案
Octree上での法線と変位で表面形状を記述
評価
• クラス分類
ModelNet40
• オートエンコーダー
ShapeNet-Core v2
• 画像からの形状予測
ShapeNet-Core v2
7. AO-CNN
[P. –S. Wang+, SIGGRAPH Asia2018, 2018-09-19] 担当: 千葉
Patch-guided Adaptive Octree
• Octreeの領域ごとに平面近似
• 近似精度が悪かったら(凸凹があれば)
より細かいOctreeに分割して平面近似
• 各ボクセルに平面の法線と距離を割り当て
各レベルで平面近似された面
7. AO-CNN
[P. –S. Wang+, SIGGRAPH Asia2018, 2018-09-19] 担当: 千葉
ネットワークの構造: エンコーダー
末端から順にConvolution+Poolingしつつ,
各レベルでのデータを統合(Max-pooling)していく
• O-CNNとの共通点: データ構造,Convolution,Pooling
• O-CNNとの相違点:
異なるレベルのボクセルにデータが割り当てられている
(O-CNNは末端のみ)
O-CNN
Adaptive
O-CNN
Max Poolingでレベルごとに統合
7. AO-CNN
[P. –S. Wang+, SIGGRAPH Asia2018, 2018-09-19] 担当: 千葉
ネットワークの構造: デコーダー
• 各ボクセルで平面パラメータと推定状況を出力
推定状況: Empty, Surface-well-approximated, Surface-poorly-approximated
• Surface-poorly-approximatedのボクセルはより細かい
ボクセルで再度推定
本資料のアウトライン
•はじめに
•まとめた論文の一覧,大まかな傾向と感想
•各論文のまとめ
• ~PointNet (PointNetに至るまで)
• 入力にボクセルを利用
• 入力を点群・ボクセル以外に変換
• 局所形状の利用
• 特殊なレイヤー
• 個別のアプリケーション
•参考文献,謝辞
8. FPNN
[Y. Li+, NIPS2016, arXiv:1605.06240, 2016-05-20] 担当: 千葉
三次元ボクセルから特徴を抽出するための
Field Probing Filter (Leyer) の提案
• Field Probing Filter を用いたネットワーク:
FPNN (Field Probing based Neural Networks)
• プローブの位置と重みを学習
• PointNet以前の論文であることに留意
評価
• クラス分類
ModelNet40
学習後のField Probing Layerの例
8. FPNN
[Y. Li+, NIPS2016, arXiv:1605.06240, 2016-05-20] 担当: 千葉
Field Probing Layer
• 点群を距離空間,法線ベクトル空間に変換して入力
(ボクセル空間が密になるように設計)
• 一つのProbing Pointが特徴量の一次元を出力
• Probing Pointをつなげて一つのフィルタとし,
ボクセル空間中にフィルタを複数配置
• 構成要素
• Sensor Layer:
Probing Pointのボクセルの値を抽出,
Probing Pointを学習
• DotProduct Layer:
抽出された値の重み付き和を計算,
重みを学習
• Gaussian Layer:
値をガウスカーネルで変換 Field Probing Layerの例
学習前(左)と学習後(右)
8. FPNN
[Y. Li+, NIPS2016, arXiv:1605.06240, 2016-05-20] 担当: 千葉
ネットワークの構造
点群をボクセルでの距離空間と法線ベクトル空間に変換し,
Field Probing Layerに入力
全結合層
Field Probing Layer
距離空間表現での入力 法線ベクトル空間表現での入力
9. Kd-Network
[R. Klokov+, ICCV2017, arXiv:1704.01222, 2018-04-04] 担当: 千葉
三次元点群をKd-Treeに変換して入力,学習する
Kd-networkを提案
Kd-treeを計算グラフと考え,各ノードの出力を伝搬
評価
• クラス分類
MNIST, ModelNet10, ModelNet40
• セグメンテーション
ShapeNet-Part
• Shape retrieval
ShapeNet-Core v1
9. Kd-Network
[R. Klokov+, ICCV2017, arXiv:1704.01222, 2018-04-04] 担当: 千葉
計算グラフの構築
• 子ノードの特徴量を結合,アフィン変換と活性化関数を
通して親ノードの特徴量とする
• アフィン変換のパラメータは深さ及び分割軸 (x, y, z)
ごとに独立
• ルートノードをアフィン変換して全体の特徴量とする
子ノードの出力を結合
アフィン変換+活性化関数
深さ・分割軸ごとに
Kd-treeを使うメリット
• Kd-tree自体が形状記述子と見なせる → 後述
• Kd-treeは同一の深さの層が空間的には異なる大きさの
領域を担当する
→ ボクセルグリッドに比べうまく構造を拾うことを期待
• Kd-treeの構造に変動を与えないような摂動にはロバスト
学習について
• 学習時には分割を確率的にすることでData Augmentation
• Histogram Lossを使ったが,Siamese LossやTriplet Lossも
使えると思われる
9. Kd-Network
[R. Klokov+, ICCV2017, arXiv:1704.01222, 2018-04-04] 担当: 千葉
Kd-tree自体が形状記述子とみなせる
概形によって分割が変わるため
どの軸に沿って分割されたかを
みるだけでもクラスがわかる
9. Kd-Network
[R. Klokov+, ICCV2017, arXiv:1704.01222, 2018-04-04] 担当: 千葉
セグメンテーションに応用できる
• エンコーダー/デコーダー構造
• Skip Connectionsをいれる
9. Kd-Network
[R. Klokov+, ICCV2017, arXiv:1704.01222, 2018-04-04] 担当: 千葉
10. PPFNet
[H. Deng+, CVPR2018, arXiv:1802.02669, 2018-02-23] 担当: 戸田
Point Pair Feature (PPF) を入力とするネットワーク
PPFを利用することで点群形式の入力に対応した
評価
• 点群間の対応
7-scenes, USN3D
Encoding of Local Geometry:
• 注目点xrに対して近傍の点xiを設定
• xiの法線とxrとのPoint Pair Feature (PPF) を求める
• xrを代表とするlocal geometry Frは各点の位置と法線
およびPPFで表される
10. PPFNet
[H. Deng+, CVPR2018, arXiv:1802.02669, 2018-02-23] 担当: 戸田
ネットワーク構成
• Local geometry FrをPointNetの入力とする (Local Patch)
• PointNetのパラメータは共有
• Frごとの特徴が得られる
10. PPFNet
[H. Deng+, CVPR2018, arXiv:1802.02669, 2018-02-23] 担当: 戸田
10. PPFNet
[H. Deng+, CVPR2018, arXiv:1802.02669, 2018-02-23] 担当: 戸田
PPFNetはPPFを入力として局所特徴量を学習
• シーン間で同一の点が特徴空間で近づくように学習
• 特徴空間の距離と実際の距離を比較してBackpropagation
点群間の対応づけの成否を
ロスとする (N-tuple loss)
• 全Local Patch間で対応の成否を
判別する
• 対応が成立した組とそうでない
組の分布が区別しやすい
M∈RN×N :対応点である時は1,そうでなければ0
D∈RN×N :PPFNetで得られた特徴空間での距離
10. PPFNet
[H. Deng+, CVPR2018, arXiv:1802.02669, 2018-02-23] 担当: 戸田
対応点同士の特徴空間での
距離が近くなるように学習
非対応点同士の特徴空間での
距離が遠くなるように学習
11. SO-Net
[J. Li+, CVPR2018, arXiv:1803.04249, 2018-03-12] 担当: 千葉
点群を直接入力として学習できるSO-Netの提案
自己組織化マップ(SOM)を用いて点群の空間分布を
モデル化
評価
• クラス分類(+オートエンコーダー)
MNIST, ModelNet10, ModelNet40
(オートエンコーダーで事前に学習した場合も比較)
• セグメンテーション(+オートエンコーダー)
ShapeNet-Part
(オートエンコーダーで事前に学習した場合も比較)
11. SO-Net
[J. Li+, CVPR2018, arXiv:1803.04249, 2018-03-12] 担当: 千葉
順不同な点群の入力に対応したSOMを設計
(純粋にSOMを適用するとうまくいかない)
問題: SOMのノードの初期値に強く依存
対策: 固定の初期ノードを使用
単位球内にランダムに配置
問題: 点の順序に依存する
対策: 全点についてまとめてから更新
GPUで効率的な実装ができる
SONの初期ノード 学習結果の例
11. SO-Net
[J. Li+, CVPR2018, arXiv:1803.04249, 2018-03-12] 担当: 千葉
SO-Net (Encoder)
• オーバーラップさせつつ点群をSOMノードに割り当てる
• kNNで近傍のSOMノードk個を取り出す
• 近傍点と中心となるノードの相対位置を求める
• 上記以外は一般的なPointNet風の点群処理ネットワーク
• 点ごと(SOMノードごと)に畳み込み,Max (Average) Pooling
• 点ごとの特徴量とグローバルな特徴量を結合,MLPを通して
セグメンテーション
SO-Net (Autoencoder)
• 上のエンコーダーにUp-convolution (upconv) を用いた
デコーダーを結合,オートエンコーダーとして学習
• ロスにはChamfer lossを用いる
11. SO-Net
[J. Li+, CVPR2018, arXiv:1803.04249, 2018-03-12] 担当: 千葉
ネットワークの構造 (Encoder)
セグメンテーションでの最終段はAverage Poolingが
良かった
点群→
SOMノード
SOMノードごとに
PointNet風の処理
Average Pooling
11. SO-Net
[J. Li+, CVPR2018, arXiv:1803.04249, 2018-03-12] 担当: 千葉
ネットワークの構造 (Decoder)
Upconvによって三次元点を得るネットワークと,
MLPで直接三次元点を得るネットワークの組み合わせ
upconvしてから,各要素がそれぞれ三次元点となるように
各点の特徴量を三次元座標に変換する (conv2pc)
そのままMLPで三次元点に変換する
不均一にサンプリングされた点群に対する畳み込み
Monte Carlo Convolutionを提案
• サンプリング方法の変更に対してロバスト
• 構成要素
• カーネル自体をMLPで表現
• 畳み込みをモンテカルロ積分として表現
• 複数レベルでサンプリングされた情報を統合
評価
• クラス分類
ModelNet40
• セグメンテーション
ShapeNet-Part
12. MCCNN
[P. Hermosilla+, SIGGRAPH Asia2018, arXiv:1806.01759, 2018-06-05]担当: 千葉
MLPによるカーネル
• 相対位置を局所点群を切り出す半径で正規化,
これを入力としてカーネルを出力するMLPを学習
• 学習パラメータを減らすため,一つのMLPで8つの
カーネルを出力
正規化した相対位置を入力
MLP
入力した相対位置における
カーネルを出力
12. MCCNN
[P. Hermosilla+, SIGGRAPH Asia2018, arXiv:1806.01759, 2018-06-05] 担当: 千葉
Monte Carlo (MC) Convolution
• モンテカルロ積分で畳み込み演算を行う
• 各点におけるサンプル密度で正規化して畳み込み
• サンプル密度は厳密には与えられないため,カーネル密度推定を用いて
入力点群から推定
• MC Convolution on Multiple Samplings
• 点数を変えてサンプリングを
複数回行うことで,畳み込まれる
点群と出力点群が異なるような
畳み込みが可能
• カーネルごとに畳み込む点群を
変えることも可能
カーネル
畳み込まれる
点群
出力点群
畳み込まれる点群が1種類の場合の例(上)
畳み込まれる点群が複数種類の場合の例(下)
12. MCCNN
[P. Hermosilla+, SIGGRAPH Asia2018, arXiv:1806.01759, 2018-06-05] 担当: 千葉
ネットワークの構造
クラス分類 セグメンテーション
点ごとの畳み込み
近傍点での畳み込み
空間解像度の変更を伴う
MLP
12. MCCNN
[P. Hermosilla+, SIGGRAPH Asia2018, arXiv:1806.01759, 2018-06-05] 担当: 千葉
13. Automatic Depth Image Generation
[R. Roveri+, CVPR2018, 2018-06-18] 担当: 千葉
点群をDepth画像にうまく変換し,画像ベースで
分類するネットワーク
• 分類しやすいようモデルを回転
• 点群の可視化にも利用できる可能性がある
評価
• クラス分類
ModelNet40
13. Automatic Depth Image Generation
[R. Roveri+, CVPR2018, 2018-06-18] 担当: 千葉
処理の流れ
1. 点群から分類に適したK個のカメラ位置を推定
論文ではK=2,PointNetを利用
2. 三次元点群を二次元のK視点のDepth画像に変換
3. 視点ごとのDepth画像からそれぞれクラス分類
ResNet50を利用
4. 視点ごとの分類結果を統合
13. Automatic Depth Image Generation
[R. Roveri+, CVPR2018, 2018-06-18] 担当: 千葉
カメラ位置の推定 (View Prediction)
• PointNetによりカメラに関する6次元ベクトルを推定
• カメラ視線方向ベクトル: 3次元
• Up-axis(視点の上方向を定めるベクトル) : 3次元
• 点群の中心とカメラの距離はあらかじめ設定
• 6次元ベクトルが示すカメラ視点になるよう点群を回転
14. MRTNet
[M. Gadelha+, ECCV2018, 2018-07-10] 担当: 千葉
点群を特殊なテンソル表現に変換して処理する
Multiresolution Tree Networks (MRTNet) の提案
逆順で適用したネットワークを組み合わせ,
オートエンコーダーとしても利用できる (MR-VAE)
評価
• クラス分類
• ModelNet40
• 画像からの形状予測
• PASCAL VOC 2012とPASCAL 3D+
• オートエンコーダー
• ShapeNet
14. MRTNet
[M. Gadelha+, ECCV2018, 2018-07-10] 担当: 千葉
複数解像度の情報を持つテンソル表現で処理
• テンソル表現への変換
• 入力点群に対して三段階の解像度の点群を作成
(入力点群と1/𝑘𝑘, 1/𝑘𝑘2にダウンサンプリングした点群)
• 各軸 (x, y, z) それぞれについて,軸に沿って点の座標ソート
• Convolution (MR-CONV)
1. 各解像度の入力をAverage Pooling
Pooling / Nearest Neighbor
Upsamplingで別の解像度に変換し
すべて結合
2. それぞれの解像度で,点ごとに
特徴量を畳み込み
3. 出力は入力の1/𝑘𝑘の解像度
14. MRTNet
[M. Gadelha+, ECCV2018, 2018-07-10] 担当: 千葉
ネットワークの構造
• Encoder: MR-CONVで構成
• Decoder: MR-CONVの逆順で処理するMR-CONV-Tで構成
テンソル表現
された点群
MR-CONV MR-CONV-T 点ごとに
非線形変換
14. MRTNet
[M. Gadelha+, ECCV2018, 2018-07-10] 担当: 千葉
オートエンコーダーの中間表現による
2形状間の補完の例
本資料のアウトライン
•はじめに
•まとめた論文の一覧,大まかな傾向と感想
•各論文のまとめ
• ~PointNet (PointNetに至るまで)
• 入力にボクセルを利用
• 入力を点群・ボクセル以外に変換
• 局所形状の利用
• 特殊なレイヤー
• 個別のアプリケーション
•参考文献,謝辞
15. ECC
[M. Simonovsky+, NIPS2017, arXiv:1704.02901, 2017-04-10] 担当: 千葉
グラフ上で畳み込みを行うための
Edge-Conditioned Convolution (ECC) を提案
• 近傍点を結んだグラフとして点群も入力できる
• エッジにおける畳み込みにConditionを導入
Dynamic filter networksのアイデアに基づく
B. D. Brabandere, et al.. Dynamic filter networks. NIPS2016.
評価
• クラス分類
点群: Sydney Urban Objects Dataset, ModelNet10, ModelNet40, MNIST
グラフ: NCI1, NCL109, ENZYMES, D&D
Edge-Conditioned Convolution
エッジごとに重みを生成,その重みを使って畳み込む
エッジの情報
エッジごとに
重みを生成
ノードごとの入力特徴量
入力特徴の
重み付け和
+バイアス
ノードごとの出力特徴量
15. ECC
[M. Simonovsky+, NIPS2017, arXiv:1704.02901, 2017-04-10] 担当: 千葉
ECCによる点群のクラス分類
• Data Augmentation
• ランダムな回転
• ランダムなスケーリング
• ランダムな点の除去
• 処理の流れ
1. 点をノードとし,一定半径内の近傍点をエッジで結ぶ
2. プーリングのための空間解像度が粗いグラフを
VoxelGridによるダウンサンプリングで生成
3. グローバルプーリングでグラフ全体の情報を統合
15. ECC
[M. Simonovsky+, NIPS2017, arXiv:1704.02901, 2017-04-10] 担当: 千葉
ネットワークの構造
近いノードを統合 (Max Pooling) する
グラフ𝐺𝐺 0
上での
ECC
グラフ𝐺𝐺 1 上でのECCMax Pooling
15. ECC
[M. Simonovsky+, NIPS2017, arXiv:1704.02901, 2017-04-10] 担当: 千葉
16. PointNet++
[C. R. Qi+, NIPS2017, arXiv:1706.02413, 2017-06-07] 担当: 千葉
PointNetをベースに,局所的な特徴を捉えられる
ネットワークPointNet++の提案
• 元々のPointNetは局所構造を捉えられない
• PointNetを階層的に適用する構造
評価
• クラス分類
MNIST, ModelNet40, SHREC15
• セグメンテーション
ScanNet
16. PointNet++
[C. R. Qi+, NIPS2017, arXiv:1706.02413, 2017-06-07] 担当: 千葉
階層化する上で生じる問題とアプローチ
• どうやって点群を分割するか
• 半径を変えつつ球で領域を切り出す
• Farthest Point Sampling (FPS)で点数が一定になるようサンプリング
• どうやって局所特徴を得るか
• 局所点群にPointNetを使う
PointNetを階層的に適用したネットワーク構造
• Sampling Layer: 重心位置を選択
• Grouping Layer: 近傍点群を抽出
• PointNet Layer: 局所特徴量を計算
16. PointNet++
[C. R. Qi+, NIPS2017, arXiv:1706.02413, 2017-06-07] 担当: 千葉
ネットワーク構造
• Sampling Layer: 重心位置を選択
• Grouping Layer: 近傍点群を抽出
• PointNet Layer: 局所特徴量を計算
16. PointNet++
[C. R. Qi+, NIPS2017, arXiv:1706.02413, 2017-06-07] 担当: 千葉
PointNet Layer
• 点群密度の変化に対応したPointNet Layer: PointNet++
• 提案するPointNet Leyerの構造
• Multi-scale Grouping (MSG):
ランダムにドロップアウトして複数の密度に対応
• Multi-resolution Grouping (MRG):
下層にあたるレイヤの特徴量も直接利用することで複数の密度に対応
MSG MRG
16. PointNet++
[C. R. Qi+, NIPS2017, arXiv:1706.02413, 2017-06-07] 担当: 千葉
セグメンテーション用のネットワーク:
抽出した特徴量を元の点に伝搬
• まず距離ベースで補完
• 補完した特徴量と,同解像度で抽出していた特徴量を
つなげてUnit PointNetに渡し,元の点群での特徴量を
得る
17. Pointwise CNN
[B.-S. Hua+, CVPR2018, arXiv:1712.05245, 2017-12-14] 担当: 千葉
点群上でのPointwise Convolutionを提案
• 点群の各点に適用する畳み込み演算
• 近傍点探索が一度で良いため計算が速い
• セグメンテーションとクラス分類ができた
評価
• クラス分類
ModelNet40, ObjectNN
• セグメンテーション
S3DIS, SceneNN+NYUv2
17. Pointwise CNN
[B.-S. Hua+, CVPR2018, arXiv:1712.05245, 2017-12-14] 担当: 千葉
点数による正規化
カーネル内のボクセルごとに
特徴量を点の数で正規化してから
畳み込み
第ℓ層での
第𝑖𝑖点の出力
カーネル内
ボクセルの
インデックス
カーネルでの
第𝑘𝑘ボクセルの
重み 点𝑝𝑝𝑖𝑖からみた
第𝑘𝑘ボクセルの
点の集合
Ω𝑖𝑖 𝑘𝑘 内の各点 第ℓ-1層での
第𝑗𝑗点の出力
17. Pointwise CNN
[B.-S. Hua+, CVPR2018, arXiv:1712.05245, 2017-12-14] 担当: 千葉
ネットワークの構造
• 各点の特徴量は座標,色,法線,前の層の出力
• SERUを使用(ReLUと比較して収束が速かったため)
Pointwise Convolution
17. Pointwise CNN
[B.-S. Hua+, CVPR2018, arXiv:1712.05245, 2017-12-14] 担当: 千葉
特徴
• 点の三次元的な関係が変化しないので
近傍点探索を繰り返さなくてよい
• 逆伝搬がカーネルの設計に直接は依存しない
各サブドメインにどの点が含まれるかのみに依存
• Symmetric Functionになるよう設計しなくてよい
PointNetは順不同な入力に対応するため,Symmetric Functionを学習
Forward:
Backward:
18. KCN
[Y. Shen+, CVPR2018, arXiv:1712.06760, 2018-06-18] 担当: 千葉
局所形状特徴を学習するための
Kernel Correlation Layerを提案
• Kernel Correlation Layerを用いたネットワーク:
Kernel Correlation Network (KCN)
• Point-set kernelを定義
• 近傍点での特徴量の集約
近傍点グラフ(k Nearest Neighbor Graph)を構築し,
グラフ上でプーリング
評価
• クラス分類
MNIST, ModelNet10, ModelNet40
• セグメンテーション
ShapeNet-Part
18. KCN
[Y. Shen+, CVPR2018, arXiv:1712.06760, 2018-06-18] 担当: 千葉
Kernel Correlation Layer
• Leave-one-out Kernel Correlation (LOO-KC) のアイデア
Y. Tsin, T. Kanade. A correlation-based approach to robust point set
registration. ECCV2004
• Kernelとしてベクトルの集合を利用 (Point-set Kernel)
カーネル中心との相対位置ベクトルと,Point-set Kernelに含まれる
各ベクトルとの差をガウシアンカーネルに入力
ガウシアンカーネルの出力の総和をPoint-set Kernelの出力とする
Graph Max Pooling (GM)
• 近傍グラフの生成は一度のみ,あとは使い回す
• グラフ上の近傍でMaxをとることでプーリング
18. KCN
[Y. Shen+, CVPR2018, arXiv:1712.06760, 2018-06-18] 担当: 千葉
手で設計したカーネル(左)と
学習されたカーネルの例(右)
赤色: 相関のある隣接2点
18. KCN
[Y. Shen+, CVPR2018, arXiv:1712.06760, 2018-06-18] 担当: 千葉
ネットワーク構造
左: クラス分類,右: セグメンテーション
Point-set Kernel Correlationと
Graph Max Pooling
Point-set Kernel Correlationと
Graph Max Pooling
グラフは一度のみ生成し使い回す
19. PointCNN
[Y. Li+, CVPR2018, arXiv:1801.07791, 2018-01-13] 担当: 千葉
点群上でに畳み込みを行うX-Convを提案
• X-Convを組み込んだネットワーク: PointCNN
• CNNを点群に一般化したので,PointCNNを命名
• 畳み込む前に各点の特徴量を配置しなおす操作
X-transformationを行う
評価
• クラス分類
ModelNet40, MNIST, CIFAR10 , TU-Berlin, QuickDraw
• セグメンテーション
ShapeNet-Part, S3DIS, ScanNet
19. PointCNN
[Y. Li+, CVPR2018, arXiv:1801.07791, 2018-01-13] 担当: 千葉
X-Conv
• 点群から代表点群を選択,近傍の点の情報を畳み込み
集約していく
• クラス分類では代表点をランダムに選択
• セグメンテーションではFarthest Point Samplingを用いて
代表点を選択
二次元でのConvolution (+ Pooling) との比較
二次元画像でのCNNの例
X-Conv
19. PointCNN
[Y. Li+, CVPR2018, arXiv:1801.07791, 2018-01-13] 担当: 千葉
X-Convの詳細
1. 入力した各点での特徴量を計算
• 前の層から引き継いだ特徴量と,畳み込みの中心座標からの相対位置を
MLPで変換した特徴量の二つを結合
2. 畳み込みのために点を配置しなおす操作:
X-transformation
• 「理想的な畳み込まれる点」における特徴量を計算したい
• 入力点の特徴量から線形補完するための重みとなる行列を学習
• 上記の重み行列を用いて,入力点の特徴量の重み付け和で
「理想的な畳み込まれる点」における特徴量を計算
(イメージとしては特徴量を補完しつつ再配置)
3. X-transformationの出力をカーネルと畳み込んで
出力特徴量とする
• このカーネル自体も学習
19. PointCNN
[Y. Li+, CVPR2018, arXiv:1801.07791, 2018-01-13] 担当: 千葉
ネットワークの構造
• 基本的にX-Convを積む
• セグメンテーションでは集約前の点の位置を引き継ぐ
クラス分類 セグメンテーション
: X-Conv
20. DG-CNN
[Y. Wang+, arXiv:1801.07829, 2018-01-24] 担当: 千葉
EdgeConvと,それを用いたDG-CNNを提案
• 点群上で微分可能な畳み込みを行う
• 既存の枠組み(PointNetなど)に乗せられる
• 点群を順不同な入力のまま扱える
• PointNet同様,Spatial Transformer Componentも使用
評価
• クラス分類
ModelNet40
• セグメンテーション
ShapeNet-Part, S3DIS
• 法線推定
ModelNet40
20. DG-CNN
[Y. Wang+, arXiv:1801.07829, 2018-01-24] 担当: 千葉
グラフを各層の出力から逐次生成する
→ “Dynamic” Graph CNN
kNNで近傍点を結ぶ.このとき三次元空間だけではなく,
各層の出力特徴量空間での距離を使う
グラフ上での情報の集約方法: EdgeConv
1. エッジごとに特徴量を計算
• 本論文では
①中心ノードの特徴量と
②周辺ノードと中心ノードの差(局所特徴)
の二つを結合し,特徴量とした
2. ノードごとにエッジの特徴量を集約(Sum, Maxなど)
グラフ上での情報の集約方法: EdgeConv
1. エッジごとに特徴量を計算
2. ノードごとにエッジの特徴量を集約
2点の特徴量から,
それらを繋ぐエッジの
特徴量を計算
エッジの特徴量を集約
20. DG-CNN
[Y. Wang+, arXiv:1801.07829, 2018-01-24] 担当: 千葉
ネットワークの構成
• EdgeConvを複数回適用する
• Spatial Transformation Networkで回転の正規化を図る
Spatial Transformation EdgeConv
20. DG-CNN
[Y. Wang+, arXiv:1801.07829, 2018-01-24] 担当: 千葉
EdgeConvで得られている特徴量
• 深い層で「距離の近い」点は,三次元的な位置ではなく
「周りの形状」が近いことを評価している
• 下図: 各層における「赤点に近い点」を図示
20. DG-CNN
[Y. Wang+, arXiv:1801.07829, 2018-01-24] 担当: 千葉
21. Flex-convolution
[F. Groh+, ACCV2018, arXiv:1803.07289, 2018-03-20] 担当: 千葉
点群を入力できる畳み込み Flex-convolution の提案
• 畳み込み層の自然な一般化
• 効率の良いGPU実装
• 前処理など無しで700万点を一気に処理できる
• 点群のサブサンプリングにInverse Density Importance
Sub-Sampling (IDISS) を用いる
評価
• クラス分類
ModelNet40
• セグメンテーション
ShapeNet-Part, 2D-3D-S
21. Flex-convolution
[F. Groh+, ACCV2018, arXiv:1803.07289, 2018-03-20] 担当: 千葉
Flex-convolution
• 特徴
• 畳み込む点と畳み込まれる点の相対座標に応じて重みを付けて畳み込み
• このときの重みを,活性化関数を用いずに単にアフィン変換とする
• 処理の流れ
1. 畳み込む点周りで近傍点を選択
2. 相対位置をアフィン変換してカーネルの各要素に割り当てる
3. カーネルで畳み込み
二次元画像での畳み込み 三次元点群でのFlex-convolution
中心点との相対位置によって重みを変える
21. Flex-convolution
[F. Groh+, ACCV2018, arXiv:1803.07289, 2018-03-20] 担当: 千葉
Inverse Density Importance Sub-Sampling (IDISS)
• 粗い点群にダウンサンプリングする手法
• 特徴
• ランダムサンプリングよりも空間的に一様に分布
• Farthest Point Sampling (FPS) は点数の二乗に比例する計算量
• IDISSは点数に比例する計算量
• 処理の流れ
1. Inverse Densityとして
近傍点までの距離の和を取る
2. Inverse Densityが大きい点から
順に選択
元の点群ランダムIDISS
21. Flex-convolution
[F. Groh+, ACCV2018, arXiv:1803.07289, 2018-03-20] 担当: 千葉
ネットワークの構造
• Flex-convolutionを積む
• TensorFlowを使うより圧倒的に省メモリ・高速な実装
22. PCNN
[M. Atzmon+, SIGGRAPH2018, arXiv:1803.10091, 2018-03-27] 担当: 千葉
点群をCNNで処理するためのネットワーク
Point Convolutional Neural Networks (PCNN) の提案
点群表現とRBFカーネル表現の相互変換を行い,
RBFカーネル表現上で畳み込みを行う
評価
• クラス分類
ModelNet10, ModelNet40
• セグメンテーション
ShapeNet-Part
• 法線推定
ModelNet40
22. PCNN
[M. Atzmon+, SIGGRAPH2018, arXiv:1803.10091, 2018-03-27] 担当: 千葉
RBFカーネル表現で畳み込み
• 入力全点のRBFカーネルで表すと重すぎるため,
近傍点でのRBFカーネルの重ね合わせで近似
• 任意の点で値を持つため,サンプリング点が
変更しやすい
→ アップサンプリングやプーリングが容易
点群表現RBFカーネル表現 RBFカーネル表現点群表現
Convolution RestrictionExtension
22. PCNN
[M. Atzmon+, SIGGRAPH2018, arXiv:1803.10091, 2018-03-27] 担当: 千葉
処理の流れ
1. Extension:
入力点群を,畳み込み中心の近傍点でのRBFカーネルの
重ね合わせに変換
2. Convolution:
畳み込まれる点が体積空間でのRBFカーネルの重ね合わせで表されるため,
畳み込み演算がRBFカーネルの重み付け和に置き換えられる
3. Restriction:
点群に変換,サンプリングする各点に特徴量を割り振る
点群表現RBFカーネル表現 RBFカーネル表現点群表現
Convolution RestrictionExtension
22. PCNN
[M. Atzmon+, SIGGRAPH2018, arXiv:1803.10091, 2018-03-27] 担当: 千葉
ネットワークの構造
• 一般的な構造
• セグメンテーションにSkip Layer Connection
クラス分類
セグメンテーション
23. SpiderCNN
[Y. Xu+, ECCV2018, arXiv:1803.11527, 2018-03-30] 担当: 千葉
点群に適用できる畳み込み演算SpiderConvの提案
• SpiderConvを用いたネットワーク: SpiderCNN
• 畳み込みのWeightを相対位置から推定する
• Parametric Continuous Convolutionsと同じアイデア
• Parametric Continuous ConvolutionsではMLPを使用
• SpiderConvはパラメータ数を減らすため,異なるモデルを用いる
評価
• クラス分類
ModelNet40, SHREC15
• セグメンテーション
ShapeNet-Part
23. SpiderCNN
[Y. Xu+, ECCV2018, arXiv:1803.11527, 2018-03-30] 担当: 千葉
SpyderConv
• 相対関係を入力すると
重みを得られるような
関数𝑔𝑔𝑤𝑤 𝑥𝑥, 𝑦𝑦, 𝑧𝑧 を学習し
カーネルとする
• 𝑔𝑔𝑤𝑤 𝑥𝑥, 𝑦𝑦, 𝑧𝑧 は次の関数としてパラメータを学習
𝑔𝑔𝑤𝑤 𝑥𝑥, 𝑦𝑦, 𝑧𝑧 :
相対関係→重み
の関数を学習
一定半径の球の内部にあるかの指示関数
連続関数に対する𝑥𝑥, 𝑦𝑦, 𝑧𝑧の3次までのテイラー展開
23. SpiderCNN
[Y. Xu+, ECCV2018, arXiv:1803.11527, 2018-03-30] 担当: 千葉
ネットワークの構造
(クラス分類,3-layer SpiderCNN)
• 特徴量の次元を上げつつSpiderConvを積む
• Max PoolingではなくTop-k Poolingで統合
k=1のとき,Max Poolingに一致
SpiderConv Top-k Pooling
23. SpiderCNN
[Y. Xu+, ECCV2018, arXiv:1803.11527, 2018-03-30] 担当: 千葉
ネットワークの構造
(クラス分類,3-layer SpiderCNN + PointNet)
SpiderCNNが局所特徴,PointNetが大域特徴を捉える
ことを期待
SpiderConv PointNet Top-2 Pooling
23. SpiderCNN
[Y. Xu+, ECCV2018, arXiv:1803.11527, 2018-03-30] 担当: 千葉
ネットワークの構造
(セグメンテーション,4-layer SpiderCNN)
• Top-2 Poolingで大域特徴を抽出
• 各点の特徴量と結合してMLPに入力し,
点ごとのクラス分類によりセグメンテーション
SpiderConv 大域特徴と点ごとの特徴量の結合
24. Parametric Continuous Convolutions
[S. Wang+, CVPR2018, 2018-06-18] 担当: 千葉
グリッドではないデータをCNNで操作するための
Parametric Continuous Convolutionsを提案
• アイデア: Parametrized Kernel Function
• 畳み込む点とカーネルの関係がベクトルで得られる
データ構造であれば適用可能
評価
• セグメンテーション
S3DIS, Driving Scenes (独自,学習後モデルをKITTIでも評価)
24. Parametric Continuous Convolutions
[S. Wang+, CVPR2018, 2018-06-18] 担当: 千葉
Parametric Continuous Convolutions
• 畳み込みのカーネルを
MLPで学習させる
データ点とカーネルの相対関係を
入力すると,その点での重みを
出力するよう学習する
• 局所的なカーネルになるよう
制約を加える
• 一般的なCNNではKernel Sizeが
決まっていることと同様の制約
• 遠い点を見ないよう,kNNや
Radiusで畳み込む領域を制約
Grid Convolution Continuous
Convolution
𝑔𝑔 ⋅ : 相対関係→重み
の関数を学習
24. Parametric Continuous Convolutions
[S. Wang+, CVPR2018, 2018-06-18] 担当: 千葉
Parametric Continuous Convolutions Layer
対象領域+畳み込み対象の
領域の点群を抽出
各点での
カーネルを
求める
求めたカーネルで入力点群の特徴量を畳み込み
24. Parametric Continuous Convolutions
[S. Wang+, CVPR2018, 2018-06-18] 担当: 千葉
ネットワークの構造
Parametric Continuous Convolutions Layerを積む
Parametric Continuous Convolutions Layer
25. Tangent Convolution
[M. Tatarchenko+, CVPR2018, arXiv:1807.02443, 2018-07-06] 担当: 千葉
表面形状に着目したTangent Convolutionと,
それを用いたU-typeネットワークの提案
• セマンティックセグメンテーションに利用可能
• 大規模な実世界データ(数百万点規模)に適用できる
評価
• セグメンテーション
Semantic3D, S3DIS, ScanNet
25. Tangent Convolution
[M. Tatarchenko+, CVPR2018, arXiv:1807.02443, 2018-07-06] 担当: 千葉
Tangent Convolution
• 各点の接平面上で近傍点を畳み込む
• 処理の流れ
1. 一点半径内の点の分散共分散行列の
第3固有ベクトルで接平面法線の推定
2. 近傍の点を接平面上に投影
3. 接平面上の画像を補完
4. 畳み込み
三次元点の投影 Full Gaussian MixtureNearest Neighbor Top-3 Neighbors
Gaussian Mixture
25. Tangent Convolution
[M. Tatarchenko+, CVPR2018, arXiv:1807.02443, 2018-07-06] 担当: 千葉
Tangent Convolutionの効率的な計算
以下を事前計算
• 接平面上の各点𝐮𝐮の入力点群での第𝑖𝑖近傍点g𝑖𝑖 𝐮𝐮
• 接平面上の各点𝐮𝐮の第𝑖𝑖近傍点に対する距離に応じた重み
𝐩𝐩における出力特徴量
𝐩𝐩の接平面上の点 畳み込みカーネル 入力点群中の𝐮𝐮の
第𝑖𝑖近傍点
→事前計算
g 𝐮𝐮 の入力特徴量
カーネルに含まれる
第k近傍まで考える
第𝑖𝑖近傍点に対する
距離に応じた重み
→事前計算
25. Tangent Convolution
[M. Tatarchenko+, CVPR2018, arXiv:1807.02443, 2018-07-06] 担当: 千葉
ネットワークの構成
徐々に空間解像度が粗くなるように平均プーリング
26. SCN
[S. Xie+, CVPR2018, 2018-06-18] 担当: 千葉
Shape Context Descriptorを模した構造を持つ
ネットワークShapeContextNet (SCN)の提案
• Shape Contect Descriptor:
ディープラーニング以前に提案された三次元特徴量
S. Belongie, et al.. Shape matching and object recognition using shape
contexts. TPAMI, 2002.
• SCNの構造の一部をアテンションに置き換え学習可能
にしたA-SCNも提案
評価
• クラス分類
MNIST, ModelNet40
• セグメンテーション
ShapeNet-Part, S3DIS
26. SCN
[S. Xie+, CVPR2018, 2018-06-18] 担当: 千葉
Shape Context Block
• Shape Context Descriptorを
模したネットワーク
• 処理の流れ
1. Selection:
周辺の点がどのビンに入るかを選択
対数極座標系(中心からの距離を対数でとる)を利用
2. Aggregation:
ビンごとの点数を数えヒストグラムを得る
3. Transformation:
得られたヒストグラムをMLPで非線形変換
Attentional SCN: A-SCN
SelectionとAggregationをAttentionで置き換え
26. SCN
[S. Xie+, CVPR2018, 2018-06-18] 担当: 千葉
SCNとA-SCNの比較
A-SCNではビンの設計とビンの集計のしかたが学習される
SCN A-SCN
26. SCN
[S. Xie+, CVPR2018, 2018-06-18] 担当: 千葉
ネットワーク構造
Shape Context Blockを積む
Shape Context Block
本資料のアウトライン
•はじめに
•まとめた論文の一覧,大まかな傾向と感想
•各論文のまとめ
• ~PointNet (PointNetに至るまで)
• 入力にボクセルを利用
• 入力を点群・ボクセル以外に変換
• 局所形状の利用
• 特殊なレイヤー
• 個別のアプリケーション
•参考文献,謝辞
27. SEGCloud
[L. P. Tchapmi+, 3DV2017, arXiv:1710.07563, 2017-10-29] 担当: 千葉
三次元点群をセグメンテーションするネットワーク
SEGCloudを提案
3D-FCNN, TI, CRFを組み合わせ,End-to-Endで学習
• 3D-FCNN: ボクセルでセグメンテーション
• TI (Trilinear Interpolation): ボクセル出力から各点を補完
• CRF: 最終的な各点のセグメンテーション
評価
• セグメンテーション
NYU V2, S3DIS, KITTI, SEnabtuc3D.net
27. SEGCloud
[L. P. Tchapmi+, 3DV2017, arXiv:1710.07563, 2017-10-29] 担当: 千葉
特徴
3D-FCNN: Fully Convolution NNの3Dボクセル版
任意のサイズのボクセルグリッドを扱える
点群上でCRF
• ボクセル上でCRFをすると,
高解像度では莫大なメモリを
消費してしまう
→元の三次元点群でCRF
• 空間的に近い8グリッドの出力で
距離に応じた線形補間(TI)
27. SEGCloud
[L. P. Tchapmi+, 3DV2017, arXiv:1710.07563, 2017-10-29] 担当: 千葉
三次元点群でのCRF
• CRFが微分可能な設計
→ End-to-Endのトレーニングが可能になった
S. Zheng, et al.. Conditional Random Fields as Recurrent Neural Networks.
ICCV2015.
• エネルギー関数=(3D-FCNN出力)+(平滑化)
• 平滑化は全ポイントペアについて考慮
• 高速な近似推論ができる
P. Krähenbühl, V. Koltun. Efficient inference in fully connected crfs with
gaussian edge potentials. NIPS2011.
• ラベル間の独立性を仮定した近似
• この近似推論はRNNとして学習できる
27. SEGCloud
[L. P. Tchapmi+, 3DV2017, arXiv:1710.07563, 2017-10-29] 担当: 千葉
ネットワークの構造
1. 点群をボクセル化
2. ボクセルごとに確率分布を生成
3. Trilinear Interpolationで各点の確率分布を補完
4. 点群と上記確率分布を入力しCRFでセグメンテーション
27. SEGCloud
[L. P. Tchapmi+, 3DV2017, arXiv:1710.07563, 2017-10-29] 担当: 千葉
ネットワークの構造
1. 点群をボクセル化
2. ボクセルごとに確率分布を生成
3. Trilinear Interpolationで各点の確率分布を補完
4. 点群と上記確率分布を入力しCRFでセグメンテーション
28. FoldingNet
[Y. Yang+, CVPR2018, arXiv:1712.07262, 2017-12-19] 担当: 千葉
「折りたたみ」をデコーダーとして利用した,
End-to-EndなDeep Autoencoder: FoldingNetを提案
• アイデア: 点群によって物体表面形状が記述されている
→本質的には2D
• エンコーダー: 近傍グラフ構造によって局所特徴量を抽出
• デコーダー: Folding-based Decoderによって,
二次元グリッドを三次元の表面なるように折りたたむ
•評価
• オートエンコーダー+クラス分類
ShapeNetで学習し,ModelNetでの分類精度を実験
(エンコーダーの出力と線形SVMで分類)
28. FoldingNet
[Y. Yang+, CVPR2018, arXiv:1712.07262, 2017-12-19] 担当: 千葉
特徴
• エンコーダー
• 近傍点の分散共分散行列を入力
• kNNに近傍グラフでMax Pooling
• デコーダー: 2回のFolding Operation
• 折りたたみは可視化・解釈しやすい
• 切断も学習できる→トポロジーも変えられる
• グリッドの各点座標とエンコーダー出力を入力,
折りたたみ後の座標を返すよう学習
• 再構成誤差: Extended Chamfer Distanceで測る
• 入力点群と再構成点群の各点が,相互に最近傍点との
距離が小さくなるように
28. FoldingNet
[Y. Yang+, CVPR2018, arXiv:1712.07262, 2017-12-19] 担当: 千葉
ネットワークの構成
一度目のfoldingは2D->3D,二度目は3D->3D
28. FoldingNet
[Y. Yang+, CVPR2018, arXiv:1712.07262, 2017-12-19] 担当: 千葉
折りたたみが徐々に学習されている
29. SPLATNet
[H. Su+, CVPR2018, arXiv:1802.08275, 2018-02-22] 担当: 千葉
三次元点群(+二次元画像)を扱えるネットワーク
SPLATNetを提案
• Bilateral Convolutional Layer (BCL) の導入
• ハッシュテーブルによる効率の良い計算
評価
• セグメンテーション
RueMonge2014, ShapeNet-Part
皆川さんが公開されている資料が非常に分かりやすい
https://www.slideshare.net/takmin/cvpr2018pointcloudcnnsplatnet
29. SPLATNet
[H. Su+, CVPR2018, arXiv:1802.08275, 2018-02-22] 担当: 千葉
Bilateral Convolutional Layer (BCL)
• バイラテラルフィルタを学習可能にしたもの
• V. Jampani et al.. Learning sparse high dimensional filters: Image filtering,
dense CRFs and bilateral neural networks. CVPR2016.
• 処理の流れ
• Splat: 入力信号を𝑑𝑑𝑙𝑙次元空間の格子点に補完して投影
• Convolve: 𝑑𝑑𝑙𝑙次元空間で畳み込み
• Slice: 格子点から特徴量を補完して出力
29. SPLATNet
[H. Su+, CVPR2018, arXiv:1802.08275, 2018-02-22] 担当: 千葉
2Dと3Dを統合して処理: SPLATNet2D−3D
• 画像用のCNNはDeepLabを使用,
PASCAL VOC Segmentationでプレトレーニング
• 処理の流れ
1. Convolveを除いたBCLで2D→3Dのプロジェクション
2. 3D点群を処理するSPLATNetからの出力と統合,点ごとに畳み込み
3. BCLで3D→2Dにバックプロジェクション
4. 2D画像上でのセグメンテーションを出力
2D→3D 3D→2D
29. SPLATNet
[H. Su+, CVPR2018, arXiv:1802.08275, 2018-02-22] 担当: 千葉
ネットワーク構成
BCLのReceptive Fieldを段階的に大きくする
段階的にReceptive Fieldを変えたBCL
30. URSA
[M. B. Skouson, arXiv:1808.04848, 2018-08-14] 担当: 千葉
点群を入力できるURSA Layerの提案
• Constellation Neural Network Layer (URSA layer)
• 入力点群を星 (Stars) に見立てて,
星座 (Constellation) を学習
評価
• クラス分類
ModelNet40, MNIST
30. URSA
[M. B. Skouson, arXiv:1808.04848, 2018-08-14] 担当: 千葉
URSA Layer
• 星座 (Constellation) の各点が出力特徴量の一要素を担当
• 星座 (Constellation) 中の一点に対し,入力点群の
各点との関係から特徴量を計算
• 例)最も近い入力点群中の点との距離
• 例)入力点群中の各点との距離をガウスカーネルで変換したものの総和
• 例)入力点群中の各点との距離を指数関数で変換したものの総和
• 星座 (Constellation) の座標を学習
30. URSA
[M. B. Skouson, arXiv:1808.04848, 2018-08-14] 担当: 千葉
ネットワーク構造
URSA Layer以外はほぼPointNetのまま
URSA Layer
30. URSA
[M. B. Skouson, arXiv:1808.04848, 2018-08-14] 担当: 千葉
学習された星座 (Constellation)
初期値(ランダム) 10 epochs 100 epochs
200 epochs 300 epochs 500 epochs
31. Point Cloud VAE-GAN
[C. Kingkan+, ICPR2018, 2018-08-20] 担当: 戸田
点群からメッシュを作成するネットワークの提案
• VAEとGANを利用
• SDFで面までの距離を表現
• 全体の形状と局所的な形状の両方を再現できる
評価
• メッシュ生成
ModelNetのうち6のオブジェクト
31. Point Cloud VAE-GAN
[C. Kingkan+, ICPR2018, 2018-08-20] 担当: 戸田
Signed Distance Function (SDF)
• メッシュ面からの距離を表す
• メッシュの外側は正、内側は負
SDF
メッシュから遠い メッシュから近い
31. Point Cloud VAE-GAN
[C. Kingkan+, ICPR2018, 2018-08-20] 担当: 戸田
ネットワーク構成
• Encoder: 点群を潜在変数に変換する
• Generators: 潜在変数をSDFに変換する
• Discriminator: Generatorの出力かGrand truthか識別
VAE
GAN
31. Point Cloud VAE-GAN
[C. Kingkan+, ICPR2018, 2018-08-20] 担当: 戸田
Encoder
• 局所形状の情報をもつ潜在変数(Zloc)以外はPointNetと同じ
• MLPとFC層を追加
Generator
• deconv層(kernel: 4×4×4, stride: 2)
• Local Generatorの出力をGrobal Generatorに加えることで
全体と局所の情報を同時に持つことができる
31. Point Cloud VAE-GAN
[C. Kingkan+, ICPR2018, 2018-08-20] 担当: 戸田
グローバル&ローカル特徴
両方が利用可能
なめらかなモデルが作れる
32. Fully Convolutional Point Network
[D. Rethage+, ECCV2018, arXiv:1808.06840, 2018-08-21] 担当: 千葉
PointNetとボクセルCNNのハイブリットで点群を
処理するFully-Convolutional Point Networkを提案
• PointNetを局所点群の特徴量記述子として利用
• 20万点規模の点群を一度に処理できる
三次元空間(ScanNet)に対してキャプションを
付けたデータセットを作成
評価
• セグメンテーション
ScanNet, ShapeNet-Part
• キャプション生成
SpanNetの一部+独自ラベリングのデータセット(公開済み)
32. Fully Convolutional Point Network
[D. Rethage+, ECCV2018, arXiv:1808.06840, 2018-08-21] 担当: 千葉
Fully-Convolutional Point Network
点数によらず処理できる点群畳み込みネットワーク
• Abstraction Layers
• 第一層は一定の半径で点群を抽出し,PointNetで特徴量を出力
• 第二層以降は2x2x2, Stride=2の畳み込みで特徴量を出力
• Feature Learners
• ボクセルごと(1x1x1)と3x3x3の畳み込みで,特徴量を出力
• Weighted Average Pooling
• 半径1メートル内のボクセルの特徴量を,距離に応じた重み付け和で
Pooling
32. Fully Convolutional Point Network
[D. Rethage+, ECCV2018, arXiv:1808.06840, 2018-08-21] 担当: 千葉
ネットワークの構造
三段階の空間解像度で処理,Skip Connectionも使用
Weighted Average Pooling
ボクセル内の点群を
PointNetで処理
33. PPF-FoldingNet
[H. Deng+, ECCV2018, 2018-06-30] 担当: 戸田
PPFを入力にすることで回転不変なネットワーク
• PPFNetとは異なりPoint Pair Featureのみを入力とする
• PPFNetは点の位置、法線ベクトルも入力としている
出力された特徴で点群の位置合わせ
評価
• 点群位置合わせ
3DMatch Benchmark Dataset
33. PPF-FoldingNet
[H. Deng+, ECCV2018, 2018-06-30] 担当: 戸田
ネットワーク構成
Encoder: Point Netに類似したネットワーク
Decoder: FoldingNetに類似したネットワーク
4D PPF
(FoldingNetは
3D Point Cloud)
本資料のアウトライン
•はじめに
•まとめた論文の一覧,大まかな傾向と感想
•各論文のまとめ
• ~PointNet (PointNetに至るまで)
• 入力にボクセルを利用
• 入力を点群・ボクセル以外に変換
• 局所形状の利用
• 特殊なレイヤー
• 個別のアプリケーション
•参考文献,謝辞
34. PCPNet
[P. Guerrero+, Eurographics2018, arXiv:1710.04954, 2017-10-13] 担当: 千葉
局所点群から法線と曲率を推定するPCPNetの提案
• ノイズの多い生の点群に適用できる
• 各点の近傍を複数のスケールでサンプリング
評価
• 法線推定
オリジナルのデータセット
(いくつかのデータセット
から選んで構成?)
法線・曲率の推定結果の例
前処理
• 点群から半径𝑟𝑟でパッチを切り出し,長さを𝑟𝑟で正規化
• 点数が多すぎる場合ランダムにダウンサンプリング
PCPNet
• 基本構造はPointNetと同様
• STN (PointNetのT-net) は回転行列の代わりに
クオータニオンを出力するよう学習
• 回転のみを推定するようになり,学習が安定
• 特徴量をSumでプーリング
Multi Scale PCPNet
• 複数の半径でパッチを切り出し,特徴量を計算
• すべての特徴量を結合し,MLPを通して出力
34. PCPNet
[P. Guerrero+, Eurographics2018, arXiv:1710.04954, 2017-10-13] 担当: 千葉
ネットワークの構造
ほとんどPointNetと同様
総和でプーリング
34. PCPNet
[P. Guerrero+, Eurographics2018, arXiv:1710.04954, 2017-10-13] 担当: 千葉
35. Frustum PointNet
[C. R. Qi+, CVPR2018, arXiv:1711.08488, 2017-11-22] 担当: 千葉
三次元点群と二次元画像を入力とする
3D物体検出ネットワークFrustum PointNetを提案
• 二次元画像で物体検出して三次元点群にマップ
• 三次元点群上でバウンディングボックスを検出
• オクルージョンや密度変化にロバスト
評価
• 物体検出
KITTI, SUN-RGBD
35. Frustum PointNet
[C. R. Qi+, CVPR2018, arXiv:1711.08488, 2017-11-22] 担当: 千葉
Frustum PointNet
• 二次元画像で領域検出
• 対応する三次元点群上でAmodal 3D Box
(観測されていない点も含めた物体のバウンディング
ボックス)を推定
• 境域についてのロスは各コーナーの距離の和を使用
35. Frustum PointNet
[C. R. Qi+, CVPR2018, arXiv:1711.08488, 2017-11-22] 担当: 千葉
Frustum PointNet
処理の流れ
1. 画像からFPN (Feature Pyramid Networks)で物体検出
2. 三次元空間で検出された物体が中心となるよう座標系を変換
3. PointNetで各点が物体に属するか判定
このとき画像から検出された物体のクラスもOne-hot Vectorで入力
4. T-Net (Spatial Transformer Network) で相対位置を補正
5. PointNetでバウンディングボックスを推定
35. Frustum PointNet
[C. R. Qi+, CVPR2018, arXiv:1711.08488, 2017-11-22] 担当: 千葉
ネットワークの構造 (v1)
PointNetをベースに構築
3D Instance Segmentation PointNet(物体に属するか)
Amodal 3D Box Estimation PointNet
(バウンディングボックス)
T-Net
(相対位置の補正)
35. Frustum PointNet
[C. R. Qi+, CVPR2018, arXiv:1711.08488, 2017-11-22] 担当: 千葉
ネットワークの構造 (v2)
T-Netはv1と共通,PointNet++をベースに構築
3D Instance Segmentation PointNet(物体に属するか)
Amodal 3D Box Estimation PointNet(バウンディングボックス)
36. SGPN
[W. Wang+, CVPR2018, arXiv:1711.08588, 2017-11-23] 担当: 千葉
点群のインスタンスセグメンテーションのための
ネットワーク Similarity Group Proposal Network
(SGPN) を提案
• インスタンスとセマンティッククラスを推定
• 画像上での2DCNNと統合して,パフォーマンスの
向上が可能
評価
• インスタンス・セマンティックセグメンテーション
S3DIS, NYUV2, ShapeNet
36. SGPN
[W. Wang+, CVPR2018, arXiv:1711.08588, 2017-11-23] 担当: 千葉
Similarity Group Proposal Network (SGPN)
• PointNet/PointNet++で特徴量を計算
• 得られた特徴量をさらにそれぞれ別のPointNetで変換し,
以下を出力
• Similarity Matrix
• 点群中の2点が同じインスタンスに属しているかを推定
• 各点を表す行ベクトルの差をノルムで評価
• Confidence Map
• 点ごとにSimilarityの推定がどの程度信頼できるかを推定
• Segmentation Map
• 点ごとのセマンティッククラスを推定
• 各クラスの出現頻度に応じたMedian Frequency Balancingを使用
36. SGPN
[W. Wang+, CVPR2018, arXiv:1711.08588, 2017-11-23] 担当: 千葉
Similarity Matrixに対するロス
インスタンスとセマンティッククラスを考慮し,
Double-Hinge Lossで評価
同じインスタンス
違うインスタンスで
同じセマンティッククラス
違うインスタンスで
違うセマンティッククラス
すべての2点の組について足し合わせ
36. SGPN
[W. Wang+, CVPR2018, arXiv:1711.08588, 2017-11-23] 担当: 千葉
インスタンスの統合 (Group Merging)
• 出力するインスタンスをプーリングし,重複検出を防ぐ
• 処理の流れ
1. Confidence Mapからの予測信頼度が閾値で以下の点を除く
2. Non-Maximum Suppressionを適用して統合
3. 複数のインスタンスに割り当てられてしまった点は
ランダムに振り分ける
画像を入力する2DCNNとの融合
• 点群とアライメントされた
画像を使用
• 点ごとの特徴量に2DCNNで
抽出された特徴量を結合
36. SGPN
[W. Wang+, CVPR2018, arXiv:1711.08588, 2017-11-23] 担当: 千葉
ネットワークの構造
PointNet/PointNet++で
点ごとの特徴量と
グローバル特徴量を計算
出力(Similarity, Confidence,
Semantic Label)に応じて
もう一度PointNetで変換
37. PU-Net
[L. Yu+, CVPR2018, arXiv:1801.06761, 2018-01-21] 担当: 千葉
点群をアップサンプリングするネットワーク
PU-Netを提案
• 入力,出力ともに点群だが,それぞれの点数が異なる
• アップサンプリングに適したロスを設計
評価
• アップサンプリング
VISIONAIR repositoryで学習
SHREC15,ModelNet40,ShapeNetでテスト
37. PU-Net
[L. Yu+, CVPR2018, arXiv:1801.06761, 2018-01-21] 担当: 千葉
処理の流れ
1. Patch Extraction
2. Point Feature Embedding
3. Feature Expansion
4. Coordinate Reconstruction
37. PU-Net
[L. Yu+, CVPR2018, arXiv:1801.06761, 2018-01-21] 担当: 千葉
処理の流れの詳細
1. Patch Extraction
指定半径で部分点群を切り出し,ポアソンディスクサンプリングに
従ってランダムに点を固定点数になるよう選択
2. Point Feature Embedding
着目半径を変えてそれぞれで特徴抽出を行う
選択されなかった点については近傍点から特徴量を補完する
(PointNet++と同様)
3. Feature Expansion
入力各点が𝑟𝑟個の点を出力(合計点数は𝑟𝑟倍になる)
4. Coordinate Reconstruction
点ごとに畳み込みを行い点の三次元座標を出力
37. PU-Net
[L. Yu+, CVPR2018, arXiv:1801.06761, 2018-01-21] 担当: 千葉
ロスの設計
Reconstruction Loss:
入出力点群間のEarth Mover’s Distance
Repulsion Loss:
入力点から少しばらけるよう設計
近傍点と近づき
すぎないようにする
離れたら
ペナルティーを減衰
𝑖𝑖番目の点の
K近傍
パラメータの
L2正則化
37. PU-Net
[L. Yu+, CVPR2018, arXiv:1801.06761, 2018-01-21] 担当: 千葉
アップサンプリングの結果
既存のネットワークをアップサンプリングに
直接適用するよりも良い結果を得られた
提案法
38. Hand PointNet
[L. Ge+, CVPR2018, 2018-06-18] 担当: 千葉
手の関節位置を推定するHand PointNetの提案
• 手の三次元点群を直接入力
• PointNet++のHierarchical PointNetで推定
• 指先付近の点群を切り出し,指先位置を修正
評価
• 手の関節位置の推定
NYU, MSRA, ICVL
38. Hand PointNet
[L. Ge+, CVPR2018, 2018-06-18] 担当: 千葉
OBB-based Point Cloud Normalization
• OBB: Oriented Bounding Box
• 入力点群をおおまかな形状で正規化
• 処理の流れ
1. PCAでOBBの座標軸方向を決定
2. OBBの最長辺の長さで
スケールの正規化
3. 手を覆うようバウンディング
ボックスを決定
4. OBBの重心が原点となるよう
点群を並進
38. Hand PointNet
[L. Ge+, CVPR2018, 2018-06-18] 担当: 千葉
Hand Pose Regression Network
• PointNet++のように階層的にPointNetを適用
kNNで近傍点を接続,プーリングすることで段階的に点数を減らす
Fingertip Refinement Network
• 指先位置の誤差が大きい&指先位置はrefineが容易
• 処理の流れ
1. Hand Pose Regression Networkで推定された指先位置を中心に,
近傍点群を抽出
(学習時には指先位置に
ノイズを付与)
2. 点群をOBBで正規化
3. 近傍点群を入力として,
PointNetで指先位置を推定
38. Hand PointNet
[L. Ge+, CVPR2018, 2018-06-18] 担当: 千葉
各階層で処理される点群の図示
色はある次元の特徴量に対する応答例
39. Point Attention Network
[C. Kingkan+, BMVC2018, 2018-09-03] 担当: 戸田
Attention module が重要な要素を学習することで
ジェスチャーの推定を精度良く実現
評価
• クラス分類
独自データセット
39. Point Attention Network
[C. Kingkan+, BMVC2018, 2018-09-03] 担当: 戸田
点ごとに重要度を重み付け(Attention Module)
• “gather”で注目する点を学習する
• “scatter”で選ばれた注目点をもとの点群に戻す
• 出力は重要度のマスクとして利用できる
39. Point Attention Network
[C. Kingkan+, BMVC2018, 2018-09-03] 担当: 戸田
Gather
• 各点ごと特徴量の平均値
を求め、上位K点選ぶ
• Global max-poolingで次
元削減してるとも見れる
Scatter
• “gather”で処理される前
と同じ位置に戻される
39. Point Attention Network
[C. Kingkan+, BMVC2018, 2018-09-03] 担当: 戸田
ネットワーク構造
• 特徴空間にある点群にAttention Moduleの出力で
マスクすることで注目点に重み付けする
• Max-poolingで点群の順不同
40. P2P Regression PointNet
[L. Ge+, ECCV2018, 2018-10-08] 担当: 千葉
手の関節位置を推定するPoint-to-Point Regression
PointNetの提案
• 三次元点それぞれで関節位置の推定を行い統合
• 基本構造はHierarchical PointNet
評価
• 手の関節位置の推定
NYU, MSRA, ICVL
40. P2P Regression PointNet
[L. Ge+, ECCV2018, 2018-10-08] 担当: 千葉
Offset Fieldsの推定による手の関節位置推定
• Offset Fields: 各三次元点における,各関節の距離と方向
• 距離の離れた関節は推定しない(0を出力)
• Offset Fieldsを直接ネットワークで推定するのは
難しいため,距離と方向に分けてそれぞれを推定
• 距離: 関節点までの近さをHeat-maps
• 方向: 関節点の方向を向いた単位ベクトル
• Hand PointNet同様,OBBによる正規化
40. P2P Regression PointNet
[L. Ge+, ECCV2018, 2018-10-08] 担当: 千葉
Post-processing
• 関節位置の統合
• 各点から推定された関節位置が一点に
まとまらない場合がある(右図)
• 推定された関節位置の分散が大きい場合,
別のネットワークが代わりに関節位置を出力
PointNetの中間表現を入力とし,
直接各関節位置を出力
• 手の形状になるように制約をつける
• PCAで次元削減し,関節位置を30次元で表現
• 推定結果を30次元空間に乗るように制約
40. P2P Regression PointNet
[L. Ge+, ECCV2018, 2018-10-08] 担当: 千葉
ネットワークの構造
Hierarchal PointNetを2回つなげたような構造
関節位置がうまく統合
できないときの出力
基本となる
ネットワーク
関節までの距離 関節の方向
本資料のアウトライン
•はじめに
•まとめた論文の一覧,大まかな傾向と感想
•各論文のまとめ
• ~PointNet (PointNetに至るまで)
• 入力にボクセルを利用
• 入力を点群・ボクセル以外に変換
• 局所形状の利用
• 特殊なレイヤー
• 個別のアプリケーション
•参考文献,謝辞
参考文献・謝辞
本資料を作成するにあたり,以下の資料を参照しました.
ありがとうございました.
• CVPR2018のPointCloudのCNN論文とSPLATNet
https://www.slideshare.net/takmin/cvpr2018pointcloudcnnsplatnet
• 3D Machine Learning
https://github.com/timzhang642/3D-Machine-Learning
• cvpaper.challenge
http://hirokatsukataoka.net/project/cc/index_cvpaperchallenge.html
また,多忙にもかかわらず資料のチェックを手伝ってくれた
元同期の研究室OB 福地くんに感謝します.ありがとうございました.

三次元点群を取り扱うニューラルネットワークのサーベイ

  • 1.
  • 2.
    本資料のアウトライン •はじめに •まとめた論文の一覧,大まかな傾向と感想 •各論文のまとめ • ~PointNet (PointNetに至るまで) •入力にボクセルを利用 • 入力を点群・ボクセル以外に変換 • 局所形状の利用 • 特殊なレイヤー • 個別のアプリケーション •参考文献,謝辞
  • 3.
    はじめに PointNet (CVPR2017) をうけて,三次元点群を取り扱う ネットワークの研究が盛んになった 三次元点群(Point Cloud) は,入力点の順番によらず同じ形状を 記述できる「順不同なデータ構造」(三次元点の集合)であるため, 取り扱いが難しかった PointNetはこの課題に対する解決方針を与えた PointNet前後から現在までの,ニューラルネットワークで 三次元データ(点群と見なせる程度に十分高解像度なボクセルを含む)を 取り扱う論文のサーベイを行った せっかくまとめたので公開します ディープラーニングはあまり詳しくないので,間違っている部分も あるかと思います.ご指摘頂けるとありがたいです
  • 4.
    まとめた論文の一覧 (1/3) ~PointNet 1. STN:M. Jaderberg, et al.. Spatial Transformer Networks. NIPS2015. (2015-01-05) 2. PointNet: C. R. Qi, et al.. PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation. CVPR2017. (2016-12-02) 入力にボクセルを利用 3. OctNet: G. Riegler, et al.. OctNet: Learning Deep 3D Representations at High Resolutions. CVPR2017. (2016-11-15) 4. O-CNN: P. –S. Wang, et al.. O-CNN: Octree-based Convolutional Neural Networks for 3D Shape Analysis. SIGGRAPH2017. (2017-07-03) 5. RSNet: Q. Huang, et al.. Recurrent Slice Networks for 3D Segmentation of Point Clouds. CVPR2018. (2018-02-13) 6. PointGrid: T. Le, et al.. PointGrid: A Deep Network for 3D Shape Understanding. CVPR2018. (2018-06-18) 7. AO-CNN: P. –S. Wang, et al.. Adaptive O-CNN: A Patch-based Deep Representation of 3D Shapes. SIGGRAPH Asia2018. (2018-09-19) 入力を点群・ボクセル以外に変換 8. FPNN: Y. Li, et al.. FPNN: Field Probing Neural Networks for 3D Data. NIPS2016. (2016-05-20) 9. Kd-Network: R. Klokov, et al.. Escape from Cells: Deep Kd-Networks for The Recognition of 3D Point Cloud Models. ICCV2017. (2017-04-04) 10. PPFNet: H. Deng, et al.. PPFNet: Global Context Aware Local Features for Robust 3D Point Matching. CVPR2018. (2018-02-07) 11. SO-Net: J. Li, et al.. SO-Net: Self-Organizing Network for Point Cloud Analysis. CVPR2018. (2018-03-12) 12. MCCNN: P. Hermosilla, et al.. Monte Carlo Convolution for Learning on Non-Uniformly Sampled Point Clouds. SIGGRAPH Asia2018. (2018-06-05) 13. Automatic Depth Image Generation: R. Roveri, et al.. A Network Architecture for Point Cloud Classification via Automatic Depth Images Generation. CVPR2018. (2018-06-18) 14. MRTNet: M. Gadelha, et al.. Multiresolution Tree Networks for 3D Point Cloud Processing. ECCV2018. (2018-07-10) Google Spreadsheetsで公開しています https://docs.google.com/spreadsheets/d/1MJTdLHIRefclx4GkZkfZxFj9GIxLSjit_f32j_DR9gw/edit?usp=sharing
  • 5.
    まとめた論文の一覧 (2/3) 局所形状の利用 15. ECC:M. Simonovsky, et al.. Dynamic Edge-Conditioned Filters in Convolutional Neural Networks on Graphs. CVPR2017. (2017-04-10) 16. PointNet++: C. R. Qi, et al.. PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space. NIPS2017. (2017-06-07) 17. Pointwise CNN: B. –S. Hua, et al.. Pointwise Convolutional Neural Networks. CVPR2018. (2017-12-14) 18. KCN: Y. Shen, et al.. Mining Point Cloud Local Structures by Kernel Correlation and Graph Pooling. CVPR2018. (2017-12-19) 19. PointCNN: Y. Li, et al.. PointCNN. arXiv:1801.07791. (2018-01-23) 20. DG-CNN: Y. Wang, et al.. Dynamic Graph CNN for Learning on Point Clouds. arXiv:1801.07829. (2018-01-24) 21. Flex-Convolution: F. Groh, et al.. Flex-Convolution. (Million-Scale Point-Cloud Learning Beyond Grid-Worlds). ACCV2018. (2018-03-20) 22. PCNN: M. Atzmon, et al.. Point Convolutional Neural Networks by Extension Operators. SIGGRAPH2018. (2018-03-27) 23. SpiderCNN: Y. Xu, et al.. SpiderCNN: Deep Learning on Point Sets with Parameterized Convolutional Filters. ECCV2018. (2018-03-30) 24. Parametric Continuous Convolutions: S. Wang, et al.. Deep Parametric Continuous Convolutional Neural Networks. CVPR2018. (2018-06-18) 25. Tangent Convolution: M. Tatarchenko, et al.. Tangent Convolutions for Dense Prediction in 3D. CVPR2018. (2018-06-18) 26. SCN: S. Xie, et al.. Attentional ShapeContextNet for Point Cloud Recognition. CVPR2018. (2018-06-18) Google Spreadsheetsで公開しています https://docs.google.com/spreadsheets/d/1MJTdLHIRefclx4GkZkfZxFj9GIxLSjit_f32j_DR9gw/edit?usp=sharing
  • 6.
    まとめた論文の一覧 (3/3) 特殊なレイヤー 27. SEGCloud:L. P. Tchapmi, et al.. SEGCloud: Semantic Segmentation of 3D Point Clouds. 3DV2017. (2017-10-20) 28. FoldingNet: Y. Yang, et al.. FoldingNet: Point Cloud Auto-encoder via Deep Grid Deformation. CVPR2018. (2017-12-19) 29. SPLATNet: H. Su, et al.. SPLATNet: Sparse Lattice Networks for Point Cloud Processing. CVPR2018. (2018-02-22) 30. URSA: M. B. Skouson. URSA: A Neural Network for Unordered Point Clouds Using Constellations. arXiv:1808.04848. (2018-08-14) 31. Point Cloud VAE-GAN: C. Kingkan, et al.. Generating Mesh-based Shapes From Learned Latent Spaces of Point Clouds with VAE-GAN. ICPR2018. (2018-08-20) 32. Fully Convolutional Point Network: D. Rethage, et al.. Fully-Convolutional Point Networks for Large-Scale Point Clouds. ECCV2018. (2018-08-21) 33. PPF-FoldingNet: H. Deng, et al.. PPF-FoldNet: Unsupervised Learning of Rotation Invariant 3D Local Descriptors. ECCV2018. (2018-08-30) 個別のアプリケーション 34. PCPNet: P. Guerrero, et al.. PCPNET: Learning Local Shape Properties from Raw Point Clouds. Eurographics2018. (2017-10-13) 35. Frustum PointNet: C. R. Qi, et al.. Frustum PointNets for 3D Object Detection from RGB-D Data. CVPR2018. (2017-11-22) 36. SGPN: W. Wang, et al.. SGPN: Similarity Group Proposal Network for 3D Point Cloud Instance Segmentation. CVPR2018. (2017-11-23) 37. PU-Net: L. Yu, et al.. PU-Net: Point Cloud Upsampling Network. CVPR2018. (2018-01-21) 38. Hand PointNet: L. Ge, et al.. Hand PointNet: 3D Hand Pose Estimation Using Point Sets. CVPR2018. (2018-06-18) 39. Point Attention Network: C. Kingkan, et al.. Point Attention Network for Gesture Recognition Using Point Cloud Data. BMVC2018. (2018-09-03) 40. P2P Reg PointNet: L. Ge, et al.. Point-to-Point Regression PointNet for 3D Hand Pose Estimation. ECCV2018. (2018-10-08) まだたくさんあるとは思いますが,今回は以上の論文を扱います 分類も難しかったのですが,とりあえず以上のように分けました Google Spreadsheetsで公開しています https://docs.google.com/spreadsheets/d/1MJTdLHIRefclx4GkZkfZxFj9GIxLSjit_f32j_DR9gw/edit?usp=sharing
  • 7.
    まとめた論文の発表時期 ~PointNet ボクセル 局所形状の利用 特殊なレイヤー アプリケーション 点群・ボクセル以外 基本的にarXivの初めのバージョン 学会の場合は学会初日 (例外あり) ~2016 2017.4 2017.72017.10 2018.4 2018.102017.1 2018.1 2018.7 1. STN 2. PointNet 3. OctNet 4. O-CNN 5. RSNet 6. PointGrid 7. AO-CNN 9. Kd-Net 10. PPFNet 11. SO-Net 12. MCCNN 13. ADIG 15. ECC 16. PointNet++ 17. Pw CNN 18. KCN 19. PointCNN 20. DG-CNN 21. F-Conv 22. PCNN 23. SpiderCNN 24. PCC 25. TangentC 26. SCN 27. SEGCloud 28. FoldingNet 29. SPLATNet 30. URSA 31. PC V-G 32. FCPN 33. PPF-FN 34. PCPNet 35. FrustumPN 36. SGPN 37. PU-Net 39. PAN 8. FPNN 14. MRTNet 38. Hand PN 40. P2PRPN
  • 8.
    大まかな傾向と感想 (1/2) • PointNetが局所的な形状情報を取り扱わなかったため, 局所形状をとらえるための工夫が流行った •近傍点を結んだグラフを作り,近傍点の特徴量を集約する例が多い • 近傍点探索を三次元空間でのみ行う(オフラインで一回)例と, 特徴量空間でも行う(オンラインで逐次更新)例がある • 単純な「近傍からの集約」の次のアイデアを模索中といった印象 • 点群をボクセルやその他の形式に一度変換する例も多い • これまでの点群処理の知見を生かす • 処理の高速化 • TensorFlowによる実装が多い • PointNet,PointNet++の影響
  • 9.
    大まかな傾向と感想 (2/2) • 多くはクラス分類とセグメンテーションで性能評価 •おそらくデータセットの存在とPointNetの影響が大きい • 個別のアプリケーションはこれからまだ増えそう • 各点の特徴量の集約がMax Poolingで良いのかは議論がある • あるネットワークの構造ではAverage Poolingの方がよかった,という 例が複数ある • 点群をどのようにサンプリングするか,が今後の焦点の 一つになりそう • メッシュ等から点群への変換 • プーリングなどに使うための解像度(点群密度)の異なる点群への変換 • 実際の三次元計測のことまで考えている論文はまだ少ない印象
  • 10.
    本資料のアウトライン •はじめに •まとめた論文の一覧,大まかな傾向と感想 •各論文のまとめ • ~PointNet (PointNetに至るまで) •入力にボクセルを利用 • 入力を点群・ボクセル以外に変換 • 局所形状の利用 • 特殊なレイヤー • 個別のアプリケーション •参考文献,謝辞 以降,図などを各論文から引用しています
  • 11.
    1. STN [M. Jaderberg+,NIPS2015, arXiv:1506.02025, 2015-01-05] 担当: 戸田 幾何学変換を扱えるネットワーク • Spatial Transformer Network (STN) を組み込むことで ネットワークが幾何学変換に対応できるようになる • PointNetを理解する上では欠かせない先行研究 • PyTorchのチュートリアルにもある https://pytorch.org/tutorials/intermediate/spatial_transformer_tutorial.html 評価 • クラス分類 MNIST, Street View House Numbers, CUB-200-2011 birds dataset
  • 12.
    Localisation Net: 幾何学変換を推定する •幾何学変換のパラメータθを出力 • あらゆるネットワーク構造を取りうる (CNNでもMLPでも) • ただし、パラメータθを得るために回帰出力層が必要 1. STN [M. Jaderberg+, NIPS2015, arXiv:1506.02025, 2015-01-05] 担当: 戸田
  • 13.
    1. STN [M. Jaderberg+,NIPS2015, arXiv:1506.02025, 2015-01-05] 担当: 戸田 Grid Generator • Transformer Netの出力θで座標系(Grid)を変換する • 二次元アフィン変換であればθは6次元 Gridを変換
  • 14.
    1. STN [M. Jaderberg+,NIPS2015, arXiv:1506.02025, 2015-01-05] 担当: 戸田 Sampler • 変換したGridに乗っている値を取り出す • どんなサンプリング方式でも可 • ちなみに点群ではこの処理は不要 (→gridに縛られない点群のいいところ)
  • 15.
    2. PointNet [C. R.Qi+, CVPR2017, arXiv:1612.00593, 2016-12-02] 担当: 千葉 点群を直接入力できるネットワークの設計 点の順番が変化しても出力が変わらないような Symmetric Functionを学習する 評価 • クラス分類 ModelNet40 • セグメンテーション ShapeNet-Part (+ Blensor Kinect Simulator), S3DIS
  • 16.
    2. PointNet [C. R.Qi+, CVPR2017, arXiv:1612.00593, 2016-12-02] 担当: 千葉 Symmetric Functionによって順不同な入力を扱う • 三次元点群は順不同(irregular)なデータ形式 • 考えられるアプローチは3つ • ソートする • RNNの入力シーケンスとして扱う(全組み合わせで学習する) • Symmetric Functionを使う → PointNetはこのアプローチ • PointNetでは𝑔𝑔 ⋅ としてMax Poolingを用いる 点ごとに独立した変換 (Point-wise convolutionなど) 点の順序が影響しない関数 Max Poolingなど Symmetric Function (𝑥𝑥の順序の影響を受けない)
  • 17.
    2. PointNet [C. R.Qi+, CVPR2017, arXiv:1612.00593, 2016-12-02] 担当: 千葉 ローカルな特徴はどうするか → グローバルな特徴と点ごとの特徴を結合して 最終的なポイントごとの特徴とする T-net (STN) の導入 • 回転・並進の正規化するために入力点群を T-Net (STN)で剛体変換 • 特徴量もFeature Alignment Networkで変換 • これもT-net (STN) • 正規直交行列になるようロスを設計 (正規直交変換であれば情報を失わないため)
  • 18.
    2. PointNet [C. R.Qi+, CVPR2017, arXiv:1612.00593, 2016-12-02] 担当: 千葉 ネットワークの構造 T-Net = STN Max Pooling 点ごとの特徴と グローバルな特徴を結合
  • 19.
    本資料のアウトライン •はじめに •まとめた論文の一覧,大まかな傾向と感想 •各論文のまとめ • ~PointNet (PointNetに至るまで) •入力にボクセルを利用 • 入力を点群・ボクセル以外に変換 • 局所形状の利用 • 特殊なレイヤー • 個別のアプリケーション •参考文献,謝辞
  • 20.
    3. OctNet [G. Riegler+,CVPR2017, arXiv:1611.05009, 2016-11-15] 担当: 千葉 高解像度なボクセルグリッドを扱えるOctNetの提案 • データの密度に従って空間を分割 • 点のない空間は分割しないことで 計算リソースとメモリリソースを節約 • PointNet以前の論文 評価 • クラス分類 ModelNet10, ModelNet40 • 回転推定 ModelNet10, Biwi Kinect Head Pose Database • セグメンテーション RueMonge2014
  • 21.
    3. OctNet [G. Riegler+,CVPR2017, arXiv:1611.05009, 2016-11-15] 担当: 千葉 生のOctreeはディープラーニングと相性が悪い 生のOctree実装の多くは木構造をポインタで持つため → Hybrid Grid-Octreeによって解決 A. Miller, et al.. Real-time rendering and dynamic updating of 3-d volumetric data. GPGPU-WS. • 浅いOctreeを階層的に配置 • 一つの階層におけるOctreeをビット列で表現
  • 22.
    3. OctNet [G. Riegler+,CVPR2017, arXiv:1611.05009, 2016-11-15] 担当: 千葉 Hybrid Grid-Octreeの利点 • 簡単な演算で子Octreeのインデックスを得られる • この演算自体もpopcntで高速な実装ができる Network Operations • Convolution, Pooling, Unpoolingを効率よく行いたい • 点ごとの操作(Point-wise Convolutionや活性化関数)は データ構造に依存しないので問題ではない
  • 23.
    3. OctNet [G. Riegler+,CVPR2017, arXiv:1611.05009, 2016-11-15] 担当: 千葉 Hybrid Grid-Octree上でのConvolution • Octreeとカーネルの畳み込み: サブボクセルの畳み込みに分けると計算結果を 使い回せる • 計算しなければいけないサブボクセルのパターンは カーネルとの位置関係によって領域ごとに異なる サブボクセルのパターン 一般的な三次元の畳み込みと 提案する畳み込みの比較
  • 24.
    4. O-CNN [P. –S.Wang+, SIGGRAPH2017, 2018-07-03] 担当: 千葉 Octree上でのCNN: O-CNNを提案 Octree上で効率よくCNNで計算できるデータ構造を設計 • GPU上で高速に計算できる • メモリ・計算コストは深さに対して2乗で増加 (空間解像度は3乗に増加するので効率が良いといえる) 評価 • クラス分類 ModelNet40 • Shape retrieval ShapeNet-Core55 • セグメンテーション ShapeNet-Sem
  • 25.
    4. O-CNN [P. –S.Wang+, SIGGRAPH2017, 2018-07-03] 担当: 千葉 Shuffle Key + Label • Shuffle Key: Octree上の座標をビット表現 Jane Wilhelms, et al.. Octrees for faster isosurface generation. TOG, 1992. • 八分木の各リーフを3ビットで表現, レイヤー順に結合 • 𝑙𝑙レイヤーであれば3𝑙𝑙ビットを使用 • Label • Octreeのレイヤーごとにボクセルに ラベル(インデックス)をつける • 空ならゼロ Super-octree Mini-batch中もOctreeをすべてオーバーラップ, 一つでもボクセルが空でなければLabelをつける
  • 26.
    4. O-CNN [P. –S.Wang+, SIGGRAPH2017, 2018-07-03] 担当: 千葉 Convolution • Shuffle key → LabelのHash Tableを作成 • 近傍ボクセルをまとめて処理 Pooling, Unpooling KernelとStrideを2にするとボクセルの構造と一致し, 簡単に処理できる 二次元の例: (左)各ボクセル独立に処理すると9x4=36回だけHash Tableにアクセス (右)隣接4ボクセルをまとめると16回でよい
  • 27.
    4. O-CNN [P. –S.Wang+, SIGGRAPH2017, 2018-07-03] 担当: 千葉 ネットワークの構造 • Basic Unit U𝑙𝑙: Convolution → BN → ReLU → Pooling DU𝑙𝑙: Unpooling → Deconvolution → BN → ReLU • 𝑙𝑙は深さを表す • O-CNN 𝑑𝑑 : input → U𝑑𝑑 → U𝑑𝑑−1 → ⋯ → U2 • Basic Unitを積む • U2の出力に空のボクセルがあった場合はゼロで埋める • クラス分類: O-CNN 𝑑𝑑 → Dropout → FC(128) → Dropout → FC(クラス数) → softmax → output • セグメンテーション: O-CNN 𝑑𝑑 → DU2 → DU3 → ⋯ → DU𝑑𝑑 → CRF • エンコーダー・デコーダー風
  • 28.
    5. RSNet [Q. Huang+,CVPR2018, arXiv:1802.04402, 2018-02-13] 担当: 千葉 点群を順序付きのボクセルに変換し入力する ネットワークRecurrent Slice Network (RSNet) を提案 順不同な点群入力に軸に沿った順序構造を導入 RSNetの構成要素 • Slice Pooling Layer • RNN layers • Slice Unpooling Layer 評価 • セグメンテーション • S3DIS, ScanNet, ShapeNet-Part
  • 29.
    5. RSNet [Q. Huang+,CVPR2018, arXiv:1802.04402, 2018-02-13] 担当: 千葉 処理の流れ 1. Input Feature Extraction 入力前にPoint-wise Convolution 2. Slice Pooling Layer x,y,zの各軸に沿って点群を 分割しMax Pooling 3. RNN layers スライスした点群を順に bidirectional RNNに入力 4. Slice Unpooling Layer RNNからの出力を 対象スライス上の全点に反映 5. Output Feature Extraction Slice Unpooling Layerの出力を 各点ごとに結合,Point-wise Convolutionで最終的なクラスに変換 Slice Pooling Layer Slice Unpooling Layer
  • 30.
    5. RSNet [Q. Huang+,CVPR2018, arXiv:1802.04402, 2018-02-13] 担当: 千葉 ネットワークの構造 x,y,zの各軸に 対して行う Slice Pooling Layer RNN Layer Slice Unpooling Layer Point-wise Convolution Point-wise Convolution
  • 31.
    6. PointGrid [T. Le+,CVPR2018, 2018-06-18] 担当: 千葉 点群からボクセルへのサンプリングを工夫し, ボクセルの畳み込みを学習するPointGridの提案 • ボクセル中の点の座標を直接入力 • 各ボクセルで点数が等しくなるようサンプリング 評価 • クラス分類 ModelNet40, ShapeNet-Core v2 • セグメンテーション • ShapeNet-Part
  • 32.
    6. PointGrid [T. Le+,CVPR2018, 2018-06-18] 担当: 千葉 ボクセル中の点数が一定になるようにサンプリング 点数が一定=次元が固定なので,座標値を結合して入力 • 点数がゼロの場合: 空のボクセルとして処理 • 点数が多い場合: ランダムに除去 • 点数が少ない場合: オーバーサンプリング (同じ点を複数回サンプリング)
  • 33.
    6. PointGrid [T. Le+,CVPR2018, 2018-06-18] 担当: 千葉 ネットワーク構造 上: クラス分類,下: セグメンテーション サンプリングの工夫が主で,ネットワーク構造は一般的
  • 34.
    7. AO-CNN [P. –S.Wang+, SIGGRAPH Asia2018, 2018-09-19] 担当: 千葉 効率よく三次元形状をエンコード・デコードできる Adaptive O-CNNを提案 Octree上での法線と変位で表面形状を記述 評価 • クラス分類 ModelNet40 • オートエンコーダー ShapeNet-Core v2 • 画像からの形状予測 ShapeNet-Core v2
  • 35.
    7. AO-CNN [P. –S.Wang+, SIGGRAPH Asia2018, 2018-09-19] 担当: 千葉 Patch-guided Adaptive Octree • Octreeの領域ごとに平面近似 • 近似精度が悪かったら(凸凹があれば) より細かいOctreeに分割して平面近似 • 各ボクセルに平面の法線と距離を割り当て 各レベルで平面近似された面
  • 36.
    7. AO-CNN [P. –S.Wang+, SIGGRAPH Asia2018, 2018-09-19] 担当: 千葉 ネットワークの構造: エンコーダー 末端から順にConvolution+Poolingしつつ, 各レベルでのデータを統合(Max-pooling)していく • O-CNNとの共通点: データ構造,Convolution,Pooling • O-CNNとの相違点: 異なるレベルのボクセルにデータが割り当てられている (O-CNNは末端のみ) O-CNN Adaptive O-CNN Max Poolingでレベルごとに統合
  • 37.
    7. AO-CNN [P. –S.Wang+, SIGGRAPH Asia2018, 2018-09-19] 担当: 千葉 ネットワークの構造: デコーダー • 各ボクセルで平面パラメータと推定状況を出力 推定状況: Empty, Surface-well-approximated, Surface-poorly-approximated • Surface-poorly-approximatedのボクセルはより細かい ボクセルで再度推定
  • 38.
    本資料のアウトライン •はじめに •まとめた論文の一覧,大まかな傾向と感想 •各論文のまとめ • ~PointNet (PointNetに至るまで) •入力にボクセルを利用 • 入力を点群・ボクセル以外に変換 • 局所形状の利用 • 特殊なレイヤー • 個別のアプリケーション •参考文献,謝辞
  • 39.
    8. FPNN [Y. Li+,NIPS2016, arXiv:1605.06240, 2016-05-20] 担当: 千葉 三次元ボクセルから特徴を抽出するための Field Probing Filter (Leyer) の提案 • Field Probing Filter を用いたネットワーク: FPNN (Field Probing based Neural Networks) • プローブの位置と重みを学習 • PointNet以前の論文であることに留意 評価 • クラス分類 ModelNet40 学習後のField Probing Layerの例
  • 40.
    8. FPNN [Y. Li+,NIPS2016, arXiv:1605.06240, 2016-05-20] 担当: 千葉 Field Probing Layer • 点群を距離空間,法線ベクトル空間に変換して入力 (ボクセル空間が密になるように設計) • 一つのProbing Pointが特徴量の一次元を出力 • Probing Pointをつなげて一つのフィルタとし, ボクセル空間中にフィルタを複数配置 • 構成要素 • Sensor Layer: Probing Pointのボクセルの値を抽出, Probing Pointを学習 • DotProduct Layer: 抽出された値の重み付き和を計算, 重みを学習 • Gaussian Layer: 値をガウスカーネルで変換 Field Probing Layerの例 学習前(左)と学習後(右)
  • 41.
    8. FPNN [Y. Li+,NIPS2016, arXiv:1605.06240, 2016-05-20] 担当: 千葉 ネットワークの構造 点群をボクセルでの距離空間と法線ベクトル空間に変換し, Field Probing Layerに入力 全結合層 Field Probing Layer 距離空間表現での入力 法線ベクトル空間表現での入力
  • 42.
    9. Kd-Network [R. Klokov+,ICCV2017, arXiv:1704.01222, 2018-04-04] 担当: 千葉 三次元点群をKd-Treeに変換して入力,学習する Kd-networkを提案 Kd-treeを計算グラフと考え,各ノードの出力を伝搬 評価 • クラス分類 MNIST, ModelNet10, ModelNet40 • セグメンテーション ShapeNet-Part • Shape retrieval ShapeNet-Core v1
  • 43.
    9. Kd-Network [R. Klokov+,ICCV2017, arXiv:1704.01222, 2018-04-04] 担当: 千葉 計算グラフの構築 • 子ノードの特徴量を結合,アフィン変換と活性化関数を 通して親ノードの特徴量とする • アフィン変換のパラメータは深さ及び分割軸 (x, y, z) ごとに独立 • ルートノードをアフィン変換して全体の特徴量とする 子ノードの出力を結合 アフィン変換+活性化関数 深さ・分割軸ごとに
  • 44.
    Kd-treeを使うメリット • Kd-tree自体が形状記述子と見なせる →後述 • Kd-treeは同一の深さの層が空間的には異なる大きさの 領域を担当する → ボクセルグリッドに比べうまく構造を拾うことを期待 • Kd-treeの構造に変動を与えないような摂動にはロバスト 学習について • 学習時には分割を確率的にすることでData Augmentation • Histogram Lossを使ったが,Siamese LossやTriplet Lossも 使えると思われる 9. Kd-Network [R. Klokov+, ICCV2017, arXiv:1704.01222, 2018-04-04] 担当: 千葉
  • 45.
  • 46.
    セグメンテーションに応用できる • エンコーダー/デコーダー構造 • SkipConnectionsをいれる 9. Kd-Network [R. Klokov+, ICCV2017, arXiv:1704.01222, 2018-04-04] 担当: 千葉
  • 47.
    10. PPFNet [H. Deng+,CVPR2018, arXiv:1802.02669, 2018-02-23] 担当: 戸田 Point Pair Feature (PPF) を入力とするネットワーク PPFを利用することで点群形式の入力に対応した 評価 • 点群間の対応 7-scenes, USN3D
  • 48.
    Encoding of LocalGeometry: • 注目点xrに対して近傍の点xiを設定 • xiの法線とxrとのPoint Pair Feature (PPF) を求める • xrを代表とするlocal geometry Frは各点の位置と法線 およびPPFで表される 10. PPFNet [H. Deng+, CVPR2018, arXiv:1802.02669, 2018-02-23] 担当: 戸田
  • 49.
    ネットワーク構成 • Local geometryFrをPointNetの入力とする (Local Patch) • PointNetのパラメータは共有 • Frごとの特徴が得られる 10. PPFNet [H. Deng+, CVPR2018, arXiv:1802.02669, 2018-02-23] 担当: 戸田
  • 50.
    10. PPFNet [H. Deng+,CVPR2018, arXiv:1802.02669, 2018-02-23] 担当: 戸田 PPFNetはPPFを入力として局所特徴量を学習 • シーン間で同一の点が特徴空間で近づくように学習 • 特徴空間の距離と実際の距離を比較してBackpropagation
  • 51.
    点群間の対応づけの成否を ロスとする (N-tuple loss) •全Local Patch間で対応の成否を 判別する • 対応が成立した組とそうでない 組の分布が区別しやすい M∈RN×N :対応点である時は1,そうでなければ0 D∈RN×N :PPFNetで得られた特徴空間での距離 10. PPFNet [H. Deng+, CVPR2018, arXiv:1802.02669, 2018-02-23] 担当: 戸田 対応点同士の特徴空間での 距離が近くなるように学習 非対応点同士の特徴空間での 距離が遠くなるように学習
  • 52.
    11. SO-Net [J. Li+,CVPR2018, arXiv:1803.04249, 2018-03-12] 担当: 千葉 点群を直接入力として学習できるSO-Netの提案 自己組織化マップ(SOM)を用いて点群の空間分布を モデル化 評価 • クラス分類(+オートエンコーダー) MNIST, ModelNet10, ModelNet40 (オートエンコーダーで事前に学習した場合も比較) • セグメンテーション(+オートエンコーダー) ShapeNet-Part (オートエンコーダーで事前に学習した場合も比較)
  • 53.
    11. SO-Net [J. Li+,CVPR2018, arXiv:1803.04249, 2018-03-12] 担当: 千葉 順不同な点群の入力に対応したSOMを設計 (純粋にSOMを適用するとうまくいかない) 問題: SOMのノードの初期値に強く依存 対策: 固定の初期ノードを使用 単位球内にランダムに配置 問題: 点の順序に依存する 対策: 全点についてまとめてから更新 GPUで効率的な実装ができる SONの初期ノード 学習結果の例
  • 54.
    11. SO-Net [J. Li+,CVPR2018, arXiv:1803.04249, 2018-03-12] 担当: 千葉 SO-Net (Encoder) • オーバーラップさせつつ点群をSOMノードに割り当てる • kNNで近傍のSOMノードk個を取り出す • 近傍点と中心となるノードの相対位置を求める • 上記以外は一般的なPointNet風の点群処理ネットワーク • 点ごと(SOMノードごと)に畳み込み,Max (Average) Pooling • 点ごとの特徴量とグローバルな特徴量を結合,MLPを通して セグメンテーション SO-Net (Autoencoder) • 上のエンコーダーにUp-convolution (upconv) を用いた デコーダーを結合,オートエンコーダーとして学習 • ロスにはChamfer lossを用いる
  • 55.
    11. SO-Net [J. Li+,CVPR2018, arXiv:1803.04249, 2018-03-12] 担当: 千葉 ネットワークの構造 (Encoder) セグメンテーションでの最終段はAverage Poolingが 良かった 点群→ SOMノード SOMノードごとに PointNet風の処理 Average Pooling
  • 56.
    11. SO-Net [J. Li+,CVPR2018, arXiv:1803.04249, 2018-03-12] 担当: 千葉 ネットワークの構造 (Decoder) Upconvによって三次元点を得るネットワークと, MLPで直接三次元点を得るネットワークの組み合わせ upconvしてから,各要素がそれぞれ三次元点となるように 各点の特徴量を三次元座標に変換する (conv2pc) そのままMLPで三次元点に変換する
  • 57.
    不均一にサンプリングされた点群に対する畳み込み Monte Carlo Convolutionを提案 •サンプリング方法の変更に対してロバスト • 構成要素 • カーネル自体をMLPで表現 • 畳み込みをモンテカルロ積分として表現 • 複数レベルでサンプリングされた情報を統合 評価 • クラス分類 ModelNet40 • セグメンテーション ShapeNet-Part 12. MCCNN [P. Hermosilla+, SIGGRAPH Asia2018, arXiv:1806.01759, 2018-06-05]担当: 千葉
  • 58.
  • 59.
    Monte Carlo (MC)Convolution • モンテカルロ積分で畳み込み演算を行う • 各点におけるサンプル密度で正規化して畳み込み • サンプル密度は厳密には与えられないため,カーネル密度推定を用いて 入力点群から推定 • MC Convolution on Multiple Samplings • 点数を変えてサンプリングを 複数回行うことで,畳み込まれる 点群と出力点群が異なるような 畳み込みが可能 • カーネルごとに畳み込む点群を 変えることも可能 カーネル 畳み込まれる 点群 出力点群 畳み込まれる点群が1種類の場合の例(上) 畳み込まれる点群が複数種類の場合の例(下) 12. MCCNN [P. Hermosilla+, SIGGRAPH Asia2018, arXiv:1806.01759, 2018-06-05] 担当: 千葉
  • 60.
  • 61.
    13. Automatic DepthImage Generation [R. Roveri+, CVPR2018, 2018-06-18] 担当: 千葉 点群をDepth画像にうまく変換し,画像ベースで 分類するネットワーク • 分類しやすいようモデルを回転 • 点群の可視化にも利用できる可能性がある 評価 • クラス分類 ModelNet40
  • 62.
    13. Automatic DepthImage Generation [R. Roveri+, CVPR2018, 2018-06-18] 担当: 千葉 処理の流れ 1. 点群から分類に適したK個のカメラ位置を推定 論文ではK=2,PointNetを利用 2. 三次元点群を二次元のK視点のDepth画像に変換 3. 視点ごとのDepth画像からそれぞれクラス分類 ResNet50を利用 4. 視点ごとの分類結果を統合
  • 63.
    13. Automatic DepthImage Generation [R. Roveri+, CVPR2018, 2018-06-18] 担当: 千葉 カメラ位置の推定 (View Prediction) • PointNetによりカメラに関する6次元ベクトルを推定 • カメラ視線方向ベクトル: 3次元 • Up-axis(視点の上方向を定めるベクトル) : 3次元 • 点群の中心とカメラの距離はあらかじめ設定 • 6次元ベクトルが示すカメラ視点になるよう点群を回転
  • 64.
    14. MRTNet [M. Gadelha+,ECCV2018, 2018-07-10] 担当: 千葉 点群を特殊なテンソル表現に変換して処理する Multiresolution Tree Networks (MRTNet) の提案 逆順で適用したネットワークを組み合わせ, オートエンコーダーとしても利用できる (MR-VAE) 評価 • クラス分類 • ModelNet40 • 画像からの形状予測 • PASCAL VOC 2012とPASCAL 3D+ • オートエンコーダー • ShapeNet
  • 65.
    14. MRTNet [M. Gadelha+,ECCV2018, 2018-07-10] 担当: 千葉 複数解像度の情報を持つテンソル表現で処理 • テンソル表現への変換 • 入力点群に対して三段階の解像度の点群を作成 (入力点群と1/𝑘𝑘, 1/𝑘𝑘2にダウンサンプリングした点群) • 各軸 (x, y, z) それぞれについて,軸に沿って点の座標ソート • Convolution (MR-CONV) 1. 各解像度の入力をAverage Pooling Pooling / Nearest Neighbor Upsamplingで別の解像度に変換し すべて結合 2. それぞれの解像度で,点ごとに 特徴量を畳み込み 3. 出力は入力の1/𝑘𝑘の解像度
  • 66.
    14. MRTNet [M. Gadelha+,ECCV2018, 2018-07-10] 担当: 千葉 ネットワークの構造 • Encoder: MR-CONVで構成 • Decoder: MR-CONVの逆順で処理するMR-CONV-Tで構成 テンソル表現 された点群 MR-CONV MR-CONV-T 点ごとに 非線形変換
  • 67.
    14. MRTNet [M. Gadelha+,ECCV2018, 2018-07-10] 担当: 千葉 オートエンコーダーの中間表現による 2形状間の補完の例
  • 68.
    本資料のアウトライン •はじめに •まとめた論文の一覧,大まかな傾向と感想 •各論文のまとめ • ~PointNet (PointNetに至るまで) •入力にボクセルを利用 • 入力を点群・ボクセル以外に変換 • 局所形状の利用 • 特殊なレイヤー • 個別のアプリケーション •参考文献,謝辞
  • 69.
    15. ECC [M. Simonovsky+,NIPS2017, arXiv:1704.02901, 2017-04-10] 担当: 千葉 グラフ上で畳み込みを行うための Edge-Conditioned Convolution (ECC) を提案 • 近傍点を結んだグラフとして点群も入力できる • エッジにおける畳み込みにConditionを導入 Dynamic filter networksのアイデアに基づく B. D. Brabandere, et al.. Dynamic filter networks. NIPS2016. 評価 • クラス分類 点群: Sydney Urban Objects Dataset, ModelNet10, ModelNet40, MNIST グラフ: NCI1, NCL109, ENZYMES, D&D
  • 70.
  • 71.
    ECCによる点群のクラス分類 • Data Augmentation •ランダムな回転 • ランダムなスケーリング • ランダムな点の除去 • 処理の流れ 1. 点をノードとし,一定半径内の近傍点をエッジで結ぶ 2. プーリングのための空間解像度が粗いグラフを VoxelGridによるダウンサンプリングで生成 3. グローバルプーリングでグラフ全体の情報を統合 15. ECC [M. Simonovsky+, NIPS2017, arXiv:1704.02901, 2017-04-10] 担当: 千葉
  • 72.
    ネットワークの構造 近いノードを統合 (Max Pooling)する グラフ𝐺𝐺 0 上での ECC グラフ𝐺𝐺 1 上でのECCMax Pooling 15. ECC [M. Simonovsky+, NIPS2017, arXiv:1704.02901, 2017-04-10] 担当: 千葉
  • 73.
    16. PointNet++ [C. R.Qi+, NIPS2017, arXiv:1706.02413, 2017-06-07] 担当: 千葉 PointNetをベースに,局所的な特徴を捉えられる ネットワークPointNet++の提案 • 元々のPointNetは局所構造を捉えられない • PointNetを階層的に適用する構造 評価 • クラス分類 MNIST, ModelNet40, SHREC15 • セグメンテーション ScanNet
  • 74.
    16. PointNet++ [C. R.Qi+, NIPS2017, arXiv:1706.02413, 2017-06-07] 担当: 千葉 階層化する上で生じる問題とアプローチ • どうやって点群を分割するか • 半径を変えつつ球で領域を切り出す • Farthest Point Sampling (FPS)で点数が一定になるようサンプリング • どうやって局所特徴を得るか • 局所点群にPointNetを使う PointNetを階層的に適用したネットワーク構造 • Sampling Layer: 重心位置を選択 • Grouping Layer: 近傍点群を抽出 • PointNet Layer: 局所特徴量を計算
  • 75.
    16. PointNet++ [C. R.Qi+, NIPS2017, arXiv:1706.02413, 2017-06-07] 担当: 千葉 ネットワーク構造 • Sampling Layer: 重心位置を選択 • Grouping Layer: 近傍点群を抽出 • PointNet Layer: 局所特徴量を計算
  • 76.
    16. PointNet++ [C. R.Qi+, NIPS2017, arXiv:1706.02413, 2017-06-07] 担当: 千葉 PointNet Layer • 点群密度の変化に対応したPointNet Layer: PointNet++ • 提案するPointNet Leyerの構造 • Multi-scale Grouping (MSG): ランダムにドロップアウトして複数の密度に対応 • Multi-resolution Grouping (MRG): 下層にあたるレイヤの特徴量も直接利用することで複数の密度に対応 MSG MRG
  • 77.
    16. PointNet++ [C. R.Qi+, NIPS2017, arXiv:1706.02413, 2017-06-07] 担当: 千葉 セグメンテーション用のネットワーク: 抽出した特徴量を元の点に伝搬 • まず距離ベースで補完 • 補完した特徴量と,同解像度で抽出していた特徴量を つなげてUnit PointNetに渡し,元の点群での特徴量を 得る
  • 78.
    17. Pointwise CNN [B.-S.Hua+, CVPR2018, arXiv:1712.05245, 2017-12-14] 担当: 千葉 点群上でのPointwise Convolutionを提案 • 点群の各点に適用する畳み込み演算 • 近傍点探索が一度で良いため計算が速い • セグメンテーションとクラス分類ができた 評価 • クラス分類 ModelNet40, ObjectNN • セグメンテーション S3DIS, SceneNN+NYUv2
  • 79.
    17. Pointwise CNN [B.-S.Hua+, CVPR2018, arXiv:1712.05245, 2017-12-14] 担当: 千葉 点数による正規化 カーネル内のボクセルごとに 特徴量を点の数で正規化してから 畳み込み 第ℓ層での 第𝑖𝑖点の出力 カーネル内 ボクセルの インデックス カーネルでの 第𝑘𝑘ボクセルの 重み 点𝑝𝑝𝑖𝑖からみた 第𝑘𝑘ボクセルの 点の集合 Ω𝑖𝑖 𝑘𝑘 内の各点 第ℓ-1層での 第𝑗𝑗点の出力
  • 80.
    17. Pointwise CNN [B.-S.Hua+, CVPR2018, arXiv:1712.05245, 2017-12-14] 担当: 千葉 ネットワークの構造 • 各点の特徴量は座標,色,法線,前の層の出力 • SERUを使用(ReLUと比較して収束が速かったため) Pointwise Convolution
  • 81.
    17. Pointwise CNN [B.-S.Hua+, CVPR2018, arXiv:1712.05245, 2017-12-14] 担当: 千葉 特徴 • 点の三次元的な関係が変化しないので 近傍点探索を繰り返さなくてよい • 逆伝搬がカーネルの設計に直接は依存しない 各サブドメインにどの点が含まれるかのみに依存 • Symmetric Functionになるよう設計しなくてよい PointNetは順不同な入力に対応するため,Symmetric Functionを学習 Forward: Backward:
  • 82.
    18. KCN [Y. Shen+,CVPR2018, arXiv:1712.06760, 2018-06-18] 担当: 千葉 局所形状特徴を学習するための Kernel Correlation Layerを提案 • Kernel Correlation Layerを用いたネットワーク: Kernel Correlation Network (KCN) • Point-set kernelを定義 • 近傍点での特徴量の集約 近傍点グラフ(k Nearest Neighbor Graph)を構築し, グラフ上でプーリング 評価 • クラス分類 MNIST, ModelNet10, ModelNet40 • セグメンテーション ShapeNet-Part
  • 83.
    18. KCN [Y. Shen+,CVPR2018, arXiv:1712.06760, 2018-06-18] 担当: 千葉 Kernel Correlation Layer • Leave-one-out Kernel Correlation (LOO-KC) のアイデア Y. Tsin, T. Kanade. A correlation-based approach to robust point set registration. ECCV2004 • Kernelとしてベクトルの集合を利用 (Point-set Kernel) カーネル中心との相対位置ベクトルと,Point-set Kernelに含まれる 各ベクトルとの差をガウシアンカーネルに入力 ガウシアンカーネルの出力の総和をPoint-set Kernelの出力とする Graph Max Pooling (GM) • 近傍グラフの生成は一度のみ,あとは使い回す • グラフ上の近傍でMaxをとることでプーリング
  • 84.
    18. KCN [Y. Shen+,CVPR2018, arXiv:1712.06760, 2018-06-18] 担当: 千葉 手で設計したカーネル(左)と 学習されたカーネルの例(右) 赤色: 相関のある隣接2点
  • 85.
    18. KCN [Y. Shen+,CVPR2018, arXiv:1712.06760, 2018-06-18] 担当: 千葉 ネットワーク構造 左: クラス分類,右: セグメンテーション Point-set Kernel Correlationと Graph Max Pooling Point-set Kernel Correlationと Graph Max Pooling グラフは一度のみ生成し使い回す
  • 86.
    19. PointCNN [Y. Li+,CVPR2018, arXiv:1801.07791, 2018-01-13] 担当: 千葉 点群上でに畳み込みを行うX-Convを提案 • X-Convを組み込んだネットワーク: PointCNN • CNNを点群に一般化したので,PointCNNを命名 • 畳み込む前に各点の特徴量を配置しなおす操作 X-transformationを行う 評価 • クラス分類 ModelNet40, MNIST, CIFAR10 , TU-Berlin, QuickDraw • セグメンテーション ShapeNet-Part, S3DIS, ScanNet
  • 87.
    19. PointCNN [Y. Li+,CVPR2018, arXiv:1801.07791, 2018-01-13] 担当: 千葉 X-Conv • 点群から代表点群を選択,近傍の点の情報を畳み込み 集約していく • クラス分類では代表点をランダムに選択 • セグメンテーションではFarthest Point Samplingを用いて 代表点を選択 二次元でのConvolution (+ Pooling) との比較 二次元画像でのCNNの例 X-Conv
  • 88.
    19. PointCNN [Y. Li+,CVPR2018, arXiv:1801.07791, 2018-01-13] 担当: 千葉 X-Convの詳細 1. 入力した各点での特徴量を計算 • 前の層から引き継いだ特徴量と,畳み込みの中心座標からの相対位置を MLPで変換した特徴量の二つを結合 2. 畳み込みのために点を配置しなおす操作: X-transformation • 「理想的な畳み込まれる点」における特徴量を計算したい • 入力点の特徴量から線形補完するための重みとなる行列を学習 • 上記の重み行列を用いて,入力点の特徴量の重み付け和で 「理想的な畳み込まれる点」における特徴量を計算 (イメージとしては特徴量を補完しつつ再配置) 3. X-transformationの出力をカーネルと畳み込んで 出力特徴量とする • このカーネル自体も学習
  • 89.
    19. PointCNN [Y. Li+,CVPR2018, arXiv:1801.07791, 2018-01-13] 担当: 千葉 ネットワークの構造 • 基本的にX-Convを積む • セグメンテーションでは集約前の点の位置を引き継ぐ クラス分類 セグメンテーション : X-Conv
  • 90.
    20. DG-CNN [Y. Wang+,arXiv:1801.07829, 2018-01-24] 担当: 千葉 EdgeConvと,それを用いたDG-CNNを提案 • 点群上で微分可能な畳み込みを行う • 既存の枠組み(PointNetなど)に乗せられる • 点群を順不同な入力のまま扱える • PointNet同様,Spatial Transformer Componentも使用 評価 • クラス分類 ModelNet40 • セグメンテーション ShapeNet-Part, S3DIS • 法線推定 ModelNet40
  • 91.
    20. DG-CNN [Y. Wang+,arXiv:1801.07829, 2018-01-24] 担当: 千葉 グラフを各層の出力から逐次生成する → “Dynamic” Graph CNN kNNで近傍点を結ぶ.このとき三次元空間だけではなく, 各層の出力特徴量空間での距離を使う グラフ上での情報の集約方法: EdgeConv 1. エッジごとに特徴量を計算 • 本論文では ①中心ノードの特徴量と ②周辺ノードと中心ノードの差(局所特徴) の二つを結合し,特徴量とした 2. ノードごとにエッジの特徴量を集約(Sum, Maxなど)
  • 92.
    グラフ上での情報の集約方法: EdgeConv 1. エッジごとに特徴量を計算 2.ノードごとにエッジの特徴量を集約 2点の特徴量から, それらを繋ぐエッジの 特徴量を計算 エッジの特徴量を集約 20. DG-CNN [Y. Wang+, arXiv:1801.07829, 2018-01-24] 担当: 千葉
  • 93.
    ネットワークの構成 • EdgeConvを複数回適用する • SpatialTransformation Networkで回転の正規化を図る Spatial Transformation EdgeConv 20. DG-CNN [Y. Wang+, arXiv:1801.07829, 2018-01-24] 担当: 千葉
  • 94.
  • 95.
    21. Flex-convolution [F. Groh+,ACCV2018, arXiv:1803.07289, 2018-03-20] 担当: 千葉 点群を入力できる畳み込み Flex-convolution の提案 • 畳み込み層の自然な一般化 • 効率の良いGPU実装 • 前処理など無しで700万点を一気に処理できる • 点群のサブサンプリングにInverse Density Importance Sub-Sampling (IDISS) を用いる 評価 • クラス分類 ModelNet40 • セグメンテーション ShapeNet-Part, 2D-3D-S
  • 96.
    21. Flex-convolution [F. Groh+,ACCV2018, arXiv:1803.07289, 2018-03-20] 担当: 千葉 Flex-convolution • 特徴 • 畳み込む点と畳み込まれる点の相対座標に応じて重みを付けて畳み込み • このときの重みを,活性化関数を用いずに単にアフィン変換とする • 処理の流れ 1. 畳み込む点周りで近傍点を選択 2. 相対位置をアフィン変換してカーネルの各要素に割り当てる 3. カーネルで畳み込み 二次元画像での畳み込み 三次元点群でのFlex-convolution 中心点との相対位置によって重みを変える
  • 97.
    21. Flex-convolution [F. Groh+,ACCV2018, arXiv:1803.07289, 2018-03-20] 担当: 千葉 Inverse Density Importance Sub-Sampling (IDISS) • 粗い点群にダウンサンプリングする手法 • 特徴 • ランダムサンプリングよりも空間的に一様に分布 • Farthest Point Sampling (FPS) は点数の二乗に比例する計算量 • IDISSは点数に比例する計算量 • 処理の流れ 1. Inverse Densityとして 近傍点までの距離の和を取る 2. Inverse Densityが大きい点から 順に選択 元の点群ランダムIDISS
  • 98.
    21. Flex-convolution [F. Groh+,ACCV2018, arXiv:1803.07289, 2018-03-20] 担当: 千葉 ネットワークの構造 • Flex-convolutionを積む • TensorFlowを使うより圧倒的に省メモリ・高速な実装
  • 99.
    22. PCNN [M. Atzmon+,SIGGRAPH2018, arXiv:1803.10091, 2018-03-27] 担当: 千葉 点群をCNNで処理するためのネットワーク Point Convolutional Neural Networks (PCNN) の提案 点群表現とRBFカーネル表現の相互変換を行い, RBFカーネル表現上で畳み込みを行う 評価 • クラス分類 ModelNet10, ModelNet40 • セグメンテーション ShapeNet-Part • 法線推定 ModelNet40
  • 100.
    22. PCNN [M. Atzmon+,SIGGRAPH2018, arXiv:1803.10091, 2018-03-27] 担当: 千葉 RBFカーネル表現で畳み込み • 入力全点のRBFカーネルで表すと重すぎるため, 近傍点でのRBFカーネルの重ね合わせで近似 • 任意の点で値を持つため,サンプリング点が 変更しやすい → アップサンプリングやプーリングが容易 点群表現RBFカーネル表現 RBFカーネル表現点群表現 Convolution RestrictionExtension
  • 101.
    22. PCNN [M. Atzmon+,SIGGRAPH2018, arXiv:1803.10091, 2018-03-27] 担当: 千葉 処理の流れ 1. Extension: 入力点群を,畳み込み中心の近傍点でのRBFカーネルの 重ね合わせに変換 2. Convolution: 畳み込まれる点が体積空間でのRBFカーネルの重ね合わせで表されるため, 畳み込み演算がRBFカーネルの重み付け和に置き換えられる 3. Restriction: 点群に変換,サンプリングする各点に特徴量を割り振る 点群表現RBFカーネル表現 RBFカーネル表現点群表現 Convolution RestrictionExtension
  • 102.
    22. PCNN [M. Atzmon+,SIGGRAPH2018, arXiv:1803.10091, 2018-03-27] 担当: 千葉 ネットワークの構造 • 一般的な構造 • セグメンテーションにSkip Layer Connection クラス分類 セグメンテーション
  • 103.
    23. SpiderCNN [Y. Xu+,ECCV2018, arXiv:1803.11527, 2018-03-30] 担当: 千葉 点群に適用できる畳み込み演算SpiderConvの提案 • SpiderConvを用いたネットワーク: SpiderCNN • 畳み込みのWeightを相対位置から推定する • Parametric Continuous Convolutionsと同じアイデア • Parametric Continuous ConvolutionsではMLPを使用 • SpiderConvはパラメータ数を減らすため,異なるモデルを用いる 評価 • クラス分類 ModelNet40, SHREC15 • セグメンテーション ShapeNet-Part
  • 104.
    23. SpiderCNN [Y. Xu+,ECCV2018, arXiv:1803.11527, 2018-03-30] 担当: 千葉 SpyderConv • 相対関係を入力すると 重みを得られるような 関数𝑔𝑔𝑤𝑤 𝑥𝑥, 𝑦𝑦, 𝑧𝑧 を学習し カーネルとする • 𝑔𝑔𝑤𝑤 𝑥𝑥, 𝑦𝑦, 𝑧𝑧 は次の関数としてパラメータを学習 𝑔𝑔𝑤𝑤 𝑥𝑥, 𝑦𝑦, 𝑧𝑧 : 相対関係→重み の関数を学習 一定半径の球の内部にあるかの指示関数 連続関数に対する𝑥𝑥, 𝑦𝑦, 𝑧𝑧の3次までのテイラー展開
  • 105.
    23. SpiderCNN [Y. Xu+,ECCV2018, arXiv:1803.11527, 2018-03-30] 担当: 千葉 ネットワークの構造 (クラス分類,3-layer SpiderCNN) • 特徴量の次元を上げつつSpiderConvを積む • Max PoolingではなくTop-k Poolingで統合 k=1のとき,Max Poolingに一致 SpiderConv Top-k Pooling
  • 106.
    23. SpiderCNN [Y. Xu+,ECCV2018, arXiv:1803.11527, 2018-03-30] 担当: 千葉 ネットワークの構造 (クラス分類,3-layer SpiderCNN + PointNet) SpiderCNNが局所特徴,PointNetが大域特徴を捉える ことを期待 SpiderConv PointNet Top-2 Pooling
  • 107.
    23. SpiderCNN [Y. Xu+,ECCV2018, arXiv:1803.11527, 2018-03-30] 担当: 千葉 ネットワークの構造 (セグメンテーション,4-layer SpiderCNN) • Top-2 Poolingで大域特徴を抽出 • 各点の特徴量と結合してMLPに入力し, 点ごとのクラス分類によりセグメンテーション SpiderConv 大域特徴と点ごとの特徴量の結合
  • 108.
    24. Parametric ContinuousConvolutions [S. Wang+, CVPR2018, 2018-06-18] 担当: 千葉 グリッドではないデータをCNNで操作するための Parametric Continuous Convolutionsを提案 • アイデア: Parametrized Kernel Function • 畳み込む点とカーネルの関係がベクトルで得られる データ構造であれば適用可能 評価 • セグメンテーション S3DIS, Driving Scenes (独自,学習後モデルをKITTIでも評価)
  • 109.
    24. Parametric ContinuousConvolutions [S. Wang+, CVPR2018, 2018-06-18] 担当: 千葉 Parametric Continuous Convolutions • 畳み込みのカーネルを MLPで学習させる データ点とカーネルの相対関係を 入力すると,その点での重みを 出力するよう学習する • 局所的なカーネルになるよう 制約を加える • 一般的なCNNではKernel Sizeが 決まっていることと同様の制約 • 遠い点を見ないよう,kNNや Radiusで畳み込む領域を制約 Grid Convolution Continuous Convolution 𝑔𝑔 ⋅ : 相対関係→重み の関数を学習
  • 110.
    24. Parametric ContinuousConvolutions [S. Wang+, CVPR2018, 2018-06-18] 担当: 千葉 Parametric Continuous Convolutions Layer 対象領域+畳み込み対象の 領域の点群を抽出 各点での カーネルを 求める 求めたカーネルで入力点群の特徴量を畳み込み
  • 111.
    24. Parametric ContinuousConvolutions [S. Wang+, CVPR2018, 2018-06-18] 担当: 千葉 ネットワークの構造 Parametric Continuous Convolutions Layerを積む Parametric Continuous Convolutions Layer
  • 112.
    25. Tangent Convolution [M.Tatarchenko+, CVPR2018, arXiv:1807.02443, 2018-07-06] 担当: 千葉 表面形状に着目したTangent Convolutionと, それを用いたU-typeネットワークの提案 • セマンティックセグメンテーションに利用可能 • 大規模な実世界データ(数百万点規模)に適用できる 評価 • セグメンテーション Semantic3D, S3DIS, ScanNet
  • 113.
    25. Tangent Convolution [M.Tatarchenko+, CVPR2018, arXiv:1807.02443, 2018-07-06] 担当: 千葉 Tangent Convolution • 各点の接平面上で近傍点を畳み込む • 処理の流れ 1. 一点半径内の点の分散共分散行列の 第3固有ベクトルで接平面法線の推定 2. 近傍の点を接平面上に投影 3. 接平面上の画像を補完 4. 畳み込み 三次元点の投影 Full Gaussian MixtureNearest Neighbor Top-3 Neighbors Gaussian Mixture
  • 114.
    25. Tangent Convolution [M.Tatarchenko+, CVPR2018, arXiv:1807.02443, 2018-07-06] 担当: 千葉 Tangent Convolutionの効率的な計算 以下を事前計算 • 接平面上の各点𝐮𝐮の入力点群での第𝑖𝑖近傍点g𝑖𝑖 𝐮𝐮 • 接平面上の各点𝐮𝐮の第𝑖𝑖近傍点に対する距離に応じた重み 𝐩𝐩における出力特徴量 𝐩𝐩の接平面上の点 畳み込みカーネル 入力点群中の𝐮𝐮の 第𝑖𝑖近傍点 →事前計算 g 𝐮𝐮 の入力特徴量 カーネルに含まれる 第k近傍まで考える 第𝑖𝑖近傍点に対する 距離に応じた重み →事前計算
  • 115.
    25. Tangent Convolution [M.Tatarchenko+, CVPR2018, arXiv:1807.02443, 2018-07-06] 担当: 千葉 ネットワークの構成 徐々に空間解像度が粗くなるように平均プーリング
  • 116.
    26. SCN [S. Xie+,CVPR2018, 2018-06-18] 担当: 千葉 Shape Context Descriptorを模した構造を持つ ネットワークShapeContextNet (SCN)の提案 • Shape Contect Descriptor: ディープラーニング以前に提案された三次元特徴量 S. Belongie, et al.. Shape matching and object recognition using shape contexts. TPAMI, 2002. • SCNの構造の一部をアテンションに置き換え学習可能 にしたA-SCNも提案 評価 • クラス分類 MNIST, ModelNet40 • セグメンテーション ShapeNet-Part, S3DIS
  • 117.
    26. SCN [S. Xie+,CVPR2018, 2018-06-18] 担当: 千葉 Shape Context Block • Shape Context Descriptorを 模したネットワーク • 処理の流れ 1. Selection: 周辺の点がどのビンに入るかを選択 対数極座標系(中心からの距離を対数でとる)を利用 2. Aggregation: ビンごとの点数を数えヒストグラムを得る 3. Transformation: 得られたヒストグラムをMLPで非線形変換 Attentional SCN: A-SCN SelectionとAggregationをAttentionで置き換え
  • 118.
    26. SCN [S. Xie+,CVPR2018, 2018-06-18] 担当: 千葉 SCNとA-SCNの比較 A-SCNではビンの設計とビンの集計のしかたが学習される SCN A-SCN
  • 119.
    26. SCN [S. Xie+,CVPR2018, 2018-06-18] 担当: 千葉 ネットワーク構造 Shape Context Blockを積む Shape Context Block
  • 120.
    本資料のアウトライン •はじめに •まとめた論文の一覧,大まかな傾向と感想 •各論文のまとめ • ~PointNet (PointNetに至るまで) •入力にボクセルを利用 • 入力を点群・ボクセル以外に変換 • 局所形状の利用 • 特殊なレイヤー • 個別のアプリケーション •参考文献,謝辞
  • 121.
    27. SEGCloud [L. P.Tchapmi+, 3DV2017, arXiv:1710.07563, 2017-10-29] 担当: 千葉 三次元点群をセグメンテーションするネットワーク SEGCloudを提案 3D-FCNN, TI, CRFを組み合わせ,End-to-Endで学習 • 3D-FCNN: ボクセルでセグメンテーション • TI (Trilinear Interpolation): ボクセル出力から各点を補完 • CRF: 最終的な各点のセグメンテーション 評価 • セグメンテーション NYU V2, S3DIS, KITTI, SEnabtuc3D.net
  • 122.
    27. SEGCloud [L. P.Tchapmi+, 3DV2017, arXiv:1710.07563, 2017-10-29] 担当: 千葉 特徴 3D-FCNN: Fully Convolution NNの3Dボクセル版 任意のサイズのボクセルグリッドを扱える 点群上でCRF • ボクセル上でCRFをすると, 高解像度では莫大なメモリを 消費してしまう →元の三次元点群でCRF • 空間的に近い8グリッドの出力で 距離に応じた線形補間(TI)
  • 123.
    27. SEGCloud [L. P.Tchapmi+, 3DV2017, arXiv:1710.07563, 2017-10-29] 担当: 千葉 三次元点群でのCRF • CRFが微分可能な設計 → End-to-Endのトレーニングが可能になった S. Zheng, et al.. Conditional Random Fields as Recurrent Neural Networks. ICCV2015. • エネルギー関数=(3D-FCNN出力)+(平滑化) • 平滑化は全ポイントペアについて考慮 • 高速な近似推論ができる P. Krähenbühl, V. Koltun. Efficient inference in fully connected crfs with gaussian edge potentials. NIPS2011. • ラベル間の独立性を仮定した近似 • この近似推論はRNNとして学習できる
  • 124.
    27. SEGCloud [L. P.Tchapmi+, 3DV2017, arXiv:1710.07563, 2017-10-29] 担当: 千葉 ネットワークの構造 1. 点群をボクセル化 2. ボクセルごとに確率分布を生成 3. Trilinear Interpolationで各点の確率分布を補完 4. 点群と上記確率分布を入力しCRFでセグメンテーション
  • 125.
    27. SEGCloud [L. P.Tchapmi+, 3DV2017, arXiv:1710.07563, 2017-10-29] 担当: 千葉 ネットワークの構造 1. 点群をボクセル化 2. ボクセルごとに確率分布を生成 3. Trilinear Interpolationで各点の確率分布を補完 4. 点群と上記確率分布を入力しCRFでセグメンテーション
  • 126.
    28. FoldingNet [Y. Yang+,CVPR2018, arXiv:1712.07262, 2017-12-19] 担当: 千葉 「折りたたみ」をデコーダーとして利用した, End-to-EndなDeep Autoencoder: FoldingNetを提案 • アイデア: 点群によって物体表面形状が記述されている →本質的には2D • エンコーダー: 近傍グラフ構造によって局所特徴量を抽出 • デコーダー: Folding-based Decoderによって, 二次元グリッドを三次元の表面なるように折りたたむ •評価 • オートエンコーダー+クラス分類 ShapeNetで学習し,ModelNetでの分類精度を実験 (エンコーダーの出力と線形SVMで分類)
  • 127.
    28. FoldingNet [Y. Yang+,CVPR2018, arXiv:1712.07262, 2017-12-19] 担当: 千葉 特徴 • エンコーダー • 近傍点の分散共分散行列を入力 • kNNに近傍グラフでMax Pooling • デコーダー: 2回のFolding Operation • 折りたたみは可視化・解釈しやすい • 切断も学習できる→トポロジーも変えられる • グリッドの各点座標とエンコーダー出力を入力, 折りたたみ後の座標を返すよう学習 • 再構成誤差: Extended Chamfer Distanceで測る • 入力点群と再構成点群の各点が,相互に最近傍点との 距離が小さくなるように
  • 128.
    28. FoldingNet [Y. Yang+,CVPR2018, arXiv:1712.07262, 2017-12-19] 担当: 千葉 ネットワークの構成 一度目のfoldingは2D->3D,二度目は3D->3D
  • 129.
    28. FoldingNet [Y. Yang+,CVPR2018, arXiv:1712.07262, 2017-12-19] 担当: 千葉 折りたたみが徐々に学習されている
  • 130.
    29. SPLATNet [H. Su+,CVPR2018, arXiv:1802.08275, 2018-02-22] 担当: 千葉 三次元点群(+二次元画像)を扱えるネットワーク SPLATNetを提案 • Bilateral Convolutional Layer (BCL) の導入 • ハッシュテーブルによる効率の良い計算 評価 • セグメンテーション RueMonge2014, ShapeNet-Part 皆川さんが公開されている資料が非常に分かりやすい https://www.slideshare.net/takmin/cvpr2018pointcloudcnnsplatnet
  • 131.
    29. SPLATNet [H. Su+,CVPR2018, arXiv:1802.08275, 2018-02-22] 担当: 千葉 Bilateral Convolutional Layer (BCL) • バイラテラルフィルタを学習可能にしたもの • V. Jampani et al.. Learning sparse high dimensional filters: Image filtering, dense CRFs and bilateral neural networks. CVPR2016. • 処理の流れ • Splat: 入力信号を𝑑𝑑𝑙𝑙次元空間の格子点に補完して投影 • Convolve: 𝑑𝑑𝑙𝑙次元空間で畳み込み • Slice: 格子点から特徴量を補完して出力
  • 132.
    29. SPLATNet [H. Su+,CVPR2018, arXiv:1802.08275, 2018-02-22] 担当: 千葉 2Dと3Dを統合して処理: SPLATNet2D−3D • 画像用のCNNはDeepLabを使用, PASCAL VOC Segmentationでプレトレーニング • 処理の流れ 1. Convolveを除いたBCLで2D→3Dのプロジェクション 2. 3D点群を処理するSPLATNetからの出力と統合,点ごとに畳み込み 3. BCLで3D→2Dにバックプロジェクション 4. 2D画像上でのセグメンテーションを出力 2D→3D 3D→2D
  • 133.
    29. SPLATNet [H. Su+,CVPR2018, arXiv:1802.08275, 2018-02-22] 担当: 千葉 ネットワーク構成 BCLのReceptive Fieldを段階的に大きくする 段階的にReceptive Fieldを変えたBCL
  • 134.
    30. URSA [M. B.Skouson, arXiv:1808.04848, 2018-08-14] 担当: 千葉 点群を入力できるURSA Layerの提案 • Constellation Neural Network Layer (URSA layer) • 入力点群を星 (Stars) に見立てて, 星座 (Constellation) を学習 評価 • クラス分類 ModelNet40, MNIST
  • 135.
    30. URSA [M. B.Skouson, arXiv:1808.04848, 2018-08-14] 担当: 千葉 URSA Layer • 星座 (Constellation) の各点が出力特徴量の一要素を担当 • 星座 (Constellation) 中の一点に対し,入力点群の 各点との関係から特徴量を計算 • 例)最も近い入力点群中の点との距離 • 例)入力点群中の各点との距離をガウスカーネルで変換したものの総和 • 例)入力点群中の各点との距離を指数関数で変換したものの総和 • 星座 (Constellation) の座標を学習
  • 136.
    30. URSA [M. B.Skouson, arXiv:1808.04848, 2018-08-14] 担当: 千葉 ネットワーク構造 URSA Layer以外はほぼPointNetのまま URSA Layer
  • 137.
    30. URSA [M. B.Skouson, arXiv:1808.04848, 2018-08-14] 担当: 千葉 学習された星座 (Constellation) 初期値(ランダム) 10 epochs 100 epochs 200 epochs 300 epochs 500 epochs
  • 138.
    31. Point CloudVAE-GAN [C. Kingkan+, ICPR2018, 2018-08-20] 担当: 戸田 点群からメッシュを作成するネットワークの提案 • VAEとGANを利用 • SDFで面までの距離を表現 • 全体の形状と局所的な形状の両方を再現できる 評価 • メッシュ生成 ModelNetのうち6のオブジェクト
  • 139.
    31. Point CloudVAE-GAN [C. Kingkan+, ICPR2018, 2018-08-20] 担当: 戸田 Signed Distance Function (SDF) • メッシュ面からの距離を表す • メッシュの外側は正、内側は負 SDF メッシュから遠い メッシュから近い
  • 140.
    31. Point CloudVAE-GAN [C. Kingkan+, ICPR2018, 2018-08-20] 担当: 戸田 ネットワーク構成 • Encoder: 点群を潜在変数に変換する • Generators: 潜在変数をSDFに変換する • Discriminator: Generatorの出力かGrand truthか識別 VAE GAN
  • 141.
    31. Point CloudVAE-GAN [C. Kingkan+, ICPR2018, 2018-08-20] 担当: 戸田 Encoder • 局所形状の情報をもつ潜在変数(Zloc)以外はPointNetと同じ • MLPとFC層を追加 Generator • deconv層(kernel: 4×4×4, stride: 2) • Local Generatorの出力をGrobal Generatorに加えることで 全体と局所の情報を同時に持つことができる
  • 142.
    31. Point CloudVAE-GAN [C. Kingkan+, ICPR2018, 2018-08-20] 担当: 戸田 グローバル&ローカル特徴 両方が利用可能 なめらかなモデルが作れる
  • 143.
    32. Fully ConvolutionalPoint Network [D. Rethage+, ECCV2018, arXiv:1808.06840, 2018-08-21] 担当: 千葉 PointNetとボクセルCNNのハイブリットで点群を 処理するFully-Convolutional Point Networkを提案 • PointNetを局所点群の特徴量記述子として利用 • 20万点規模の点群を一度に処理できる 三次元空間(ScanNet)に対してキャプションを 付けたデータセットを作成 評価 • セグメンテーション ScanNet, ShapeNet-Part • キャプション生成 SpanNetの一部+独自ラベリングのデータセット(公開済み)
  • 144.
    32. Fully ConvolutionalPoint Network [D. Rethage+, ECCV2018, arXiv:1808.06840, 2018-08-21] 担当: 千葉 Fully-Convolutional Point Network 点数によらず処理できる点群畳み込みネットワーク • Abstraction Layers • 第一層は一定の半径で点群を抽出し,PointNetで特徴量を出力 • 第二層以降は2x2x2, Stride=2の畳み込みで特徴量を出力 • Feature Learners • ボクセルごと(1x1x1)と3x3x3の畳み込みで,特徴量を出力 • Weighted Average Pooling • 半径1メートル内のボクセルの特徴量を,距離に応じた重み付け和で Pooling
  • 145.
    32. Fully ConvolutionalPoint Network [D. Rethage+, ECCV2018, arXiv:1808.06840, 2018-08-21] 担当: 千葉 ネットワークの構造 三段階の空間解像度で処理,Skip Connectionも使用 Weighted Average Pooling ボクセル内の点群を PointNetで処理
  • 146.
    33. PPF-FoldingNet [H. Deng+,ECCV2018, 2018-06-30] 担当: 戸田 PPFを入力にすることで回転不変なネットワーク • PPFNetとは異なりPoint Pair Featureのみを入力とする • PPFNetは点の位置、法線ベクトルも入力としている 出力された特徴で点群の位置合わせ 評価 • 点群位置合わせ 3DMatch Benchmark Dataset
  • 147.
    33. PPF-FoldingNet [H. Deng+,ECCV2018, 2018-06-30] 担当: 戸田 ネットワーク構成 Encoder: Point Netに類似したネットワーク Decoder: FoldingNetに類似したネットワーク 4D PPF (FoldingNetは 3D Point Cloud)
  • 148.
    本資料のアウトライン •はじめに •まとめた論文の一覧,大まかな傾向と感想 •各論文のまとめ • ~PointNet (PointNetに至るまで) •入力にボクセルを利用 • 入力を点群・ボクセル以外に変換 • 局所形状の利用 • 特殊なレイヤー • 個別のアプリケーション •参考文献,謝辞
  • 149.
    34. PCPNet [P. Guerrero+,Eurographics2018, arXiv:1710.04954, 2017-10-13] 担当: 千葉 局所点群から法線と曲率を推定するPCPNetの提案 • ノイズの多い生の点群に適用できる • 各点の近傍を複数のスケールでサンプリング 評価 • 法線推定 オリジナルのデータセット (いくつかのデータセット から選んで構成?) 法線・曲率の推定結果の例
  • 150.
    前処理 • 点群から半径𝑟𝑟でパッチを切り出し,長さを𝑟𝑟で正規化 • 点数が多すぎる場合ランダムにダウンサンプリング PCPNet •基本構造はPointNetと同様 • STN (PointNetのT-net) は回転行列の代わりに クオータニオンを出力するよう学習 • 回転のみを推定するようになり,学習が安定 • 特徴量をSumでプーリング Multi Scale PCPNet • 複数の半径でパッチを切り出し,特徴量を計算 • すべての特徴量を結合し,MLPを通して出力 34. PCPNet [P. Guerrero+, Eurographics2018, arXiv:1710.04954, 2017-10-13] 担当: 千葉
  • 151.
  • 152.
    35. Frustum PointNet [C.R. Qi+, CVPR2018, arXiv:1711.08488, 2017-11-22] 担当: 千葉 三次元点群と二次元画像を入力とする 3D物体検出ネットワークFrustum PointNetを提案 • 二次元画像で物体検出して三次元点群にマップ • 三次元点群上でバウンディングボックスを検出 • オクルージョンや密度変化にロバスト 評価 • 物体検出 KITTI, SUN-RGBD
  • 153.
    35. Frustum PointNet [C.R. Qi+, CVPR2018, arXiv:1711.08488, 2017-11-22] 担当: 千葉 Frustum PointNet • 二次元画像で領域検出 • 対応する三次元点群上でAmodal 3D Box (観測されていない点も含めた物体のバウンディング ボックス)を推定 • 境域についてのロスは各コーナーの距離の和を使用
  • 154.
    35. Frustum PointNet [C.R. Qi+, CVPR2018, arXiv:1711.08488, 2017-11-22] 担当: 千葉 Frustum PointNet 処理の流れ 1. 画像からFPN (Feature Pyramid Networks)で物体検出 2. 三次元空間で検出された物体が中心となるよう座標系を変換 3. PointNetで各点が物体に属するか判定 このとき画像から検出された物体のクラスもOne-hot Vectorで入力 4. T-Net (Spatial Transformer Network) で相対位置を補正 5. PointNetでバウンディングボックスを推定
  • 155.
    35. Frustum PointNet [C.R. Qi+, CVPR2018, arXiv:1711.08488, 2017-11-22] 担当: 千葉 ネットワークの構造 (v1) PointNetをベースに構築 3D Instance Segmentation PointNet(物体に属するか) Amodal 3D Box Estimation PointNet (バウンディングボックス) T-Net (相対位置の補正)
  • 156.
    35. Frustum PointNet [C.R. Qi+, CVPR2018, arXiv:1711.08488, 2017-11-22] 担当: 千葉 ネットワークの構造 (v2) T-Netはv1と共通,PointNet++をベースに構築 3D Instance Segmentation PointNet(物体に属するか) Amodal 3D Box Estimation PointNet(バウンディングボックス)
  • 157.
    36. SGPN [W. Wang+,CVPR2018, arXiv:1711.08588, 2017-11-23] 担当: 千葉 点群のインスタンスセグメンテーションのための ネットワーク Similarity Group Proposal Network (SGPN) を提案 • インスタンスとセマンティッククラスを推定 • 画像上での2DCNNと統合して,パフォーマンスの 向上が可能 評価 • インスタンス・セマンティックセグメンテーション S3DIS, NYUV2, ShapeNet
  • 158.
    36. SGPN [W. Wang+,CVPR2018, arXiv:1711.08588, 2017-11-23] 担当: 千葉 Similarity Group Proposal Network (SGPN) • PointNet/PointNet++で特徴量を計算 • 得られた特徴量をさらにそれぞれ別のPointNetで変換し, 以下を出力 • Similarity Matrix • 点群中の2点が同じインスタンスに属しているかを推定 • 各点を表す行ベクトルの差をノルムで評価 • Confidence Map • 点ごとにSimilarityの推定がどの程度信頼できるかを推定 • Segmentation Map • 点ごとのセマンティッククラスを推定 • 各クラスの出現頻度に応じたMedian Frequency Balancingを使用
  • 159.
    36. SGPN [W. Wang+,CVPR2018, arXiv:1711.08588, 2017-11-23] 担当: 千葉 Similarity Matrixに対するロス インスタンスとセマンティッククラスを考慮し, Double-Hinge Lossで評価 同じインスタンス 違うインスタンスで 同じセマンティッククラス 違うインスタンスで 違うセマンティッククラス すべての2点の組について足し合わせ
  • 160.
    36. SGPN [W. Wang+,CVPR2018, arXiv:1711.08588, 2017-11-23] 担当: 千葉 インスタンスの統合 (Group Merging) • 出力するインスタンスをプーリングし,重複検出を防ぐ • 処理の流れ 1. Confidence Mapからの予測信頼度が閾値で以下の点を除く 2. Non-Maximum Suppressionを適用して統合 3. 複数のインスタンスに割り当てられてしまった点は ランダムに振り分ける 画像を入力する2DCNNとの融合 • 点群とアライメントされた 画像を使用 • 点ごとの特徴量に2DCNNで 抽出された特徴量を結合
  • 161.
    36. SGPN [W. Wang+,CVPR2018, arXiv:1711.08588, 2017-11-23] 担当: 千葉 ネットワークの構造 PointNet/PointNet++で 点ごとの特徴量と グローバル特徴量を計算 出力(Similarity, Confidence, Semantic Label)に応じて もう一度PointNetで変換
  • 162.
    37. PU-Net [L. Yu+,CVPR2018, arXiv:1801.06761, 2018-01-21] 担当: 千葉 点群をアップサンプリングするネットワーク PU-Netを提案 • 入力,出力ともに点群だが,それぞれの点数が異なる • アップサンプリングに適したロスを設計 評価 • アップサンプリング VISIONAIR repositoryで学習 SHREC15,ModelNet40,ShapeNetでテスト
  • 163.
    37. PU-Net [L. Yu+,CVPR2018, arXiv:1801.06761, 2018-01-21] 担当: 千葉 処理の流れ 1. Patch Extraction 2. Point Feature Embedding 3. Feature Expansion 4. Coordinate Reconstruction
  • 164.
    37. PU-Net [L. Yu+,CVPR2018, arXiv:1801.06761, 2018-01-21] 担当: 千葉 処理の流れの詳細 1. Patch Extraction 指定半径で部分点群を切り出し,ポアソンディスクサンプリングに 従ってランダムに点を固定点数になるよう選択 2. Point Feature Embedding 着目半径を変えてそれぞれで特徴抽出を行う 選択されなかった点については近傍点から特徴量を補完する (PointNet++と同様) 3. Feature Expansion 入力各点が𝑟𝑟個の点を出力(合計点数は𝑟𝑟倍になる) 4. Coordinate Reconstruction 点ごとに畳み込みを行い点の三次元座標を出力
  • 165.
    37. PU-Net [L. Yu+,CVPR2018, arXiv:1801.06761, 2018-01-21] 担当: 千葉 ロスの設計 Reconstruction Loss: 入出力点群間のEarth Mover’s Distance Repulsion Loss: 入力点から少しばらけるよう設計 近傍点と近づき すぎないようにする 離れたら ペナルティーを減衰 𝑖𝑖番目の点の K近傍 パラメータの L2正則化
  • 166.
    37. PU-Net [L. Yu+,CVPR2018, arXiv:1801.06761, 2018-01-21] 担当: 千葉 アップサンプリングの結果 既存のネットワークをアップサンプリングに 直接適用するよりも良い結果を得られた 提案法
  • 167.
    38. Hand PointNet [L.Ge+, CVPR2018, 2018-06-18] 担当: 千葉 手の関節位置を推定するHand PointNetの提案 • 手の三次元点群を直接入力 • PointNet++のHierarchical PointNetで推定 • 指先付近の点群を切り出し,指先位置を修正 評価 • 手の関節位置の推定 NYU, MSRA, ICVL
  • 168.
    38. Hand PointNet [L.Ge+, CVPR2018, 2018-06-18] 担当: 千葉 OBB-based Point Cloud Normalization • OBB: Oriented Bounding Box • 入力点群をおおまかな形状で正規化 • 処理の流れ 1. PCAでOBBの座標軸方向を決定 2. OBBの最長辺の長さで スケールの正規化 3. 手を覆うようバウンディング ボックスを決定 4. OBBの重心が原点となるよう 点群を並進
  • 169.
    38. Hand PointNet [L.Ge+, CVPR2018, 2018-06-18] 担当: 千葉 Hand Pose Regression Network • PointNet++のように階層的にPointNetを適用 kNNで近傍点を接続,プーリングすることで段階的に点数を減らす Fingertip Refinement Network • 指先位置の誤差が大きい&指先位置はrefineが容易 • 処理の流れ 1. Hand Pose Regression Networkで推定された指先位置を中心に, 近傍点群を抽出 (学習時には指先位置に ノイズを付与) 2. 点群をOBBで正規化 3. 近傍点群を入力として, PointNetで指先位置を推定
  • 170.
    38. Hand PointNet [L.Ge+, CVPR2018, 2018-06-18] 担当: 千葉 各階層で処理される点群の図示 色はある次元の特徴量に対する応答例
  • 171.
    39. Point AttentionNetwork [C. Kingkan+, BMVC2018, 2018-09-03] 担当: 戸田 Attention module が重要な要素を学習することで ジェスチャーの推定を精度良く実現 評価 • クラス分類 独自データセット
  • 172.
    39. Point AttentionNetwork [C. Kingkan+, BMVC2018, 2018-09-03] 担当: 戸田 点ごとに重要度を重み付け(Attention Module) • “gather”で注目する点を学習する • “scatter”で選ばれた注目点をもとの点群に戻す • 出力は重要度のマスクとして利用できる
  • 173.
    39. Point AttentionNetwork [C. Kingkan+, BMVC2018, 2018-09-03] 担当: 戸田 Gather • 各点ごと特徴量の平均値 を求め、上位K点選ぶ • Global max-poolingで次 元削減してるとも見れる Scatter • “gather”で処理される前 と同じ位置に戻される
  • 174.
    39. Point AttentionNetwork [C. Kingkan+, BMVC2018, 2018-09-03] 担当: 戸田 ネットワーク構造 • 特徴空間にある点群にAttention Moduleの出力で マスクすることで注目点に重み付けする • Max-poolingで点群の順不同
  • 175.
    40. P2P RegressionPointNet [L. Ge+, ECCV2018, 2018-10-08] 担当: 千葉 手の関節位置を推定するPoint-to-Point Regression PointNetの提案 • 三次元点それぞれで関節位置の推定を行い統合 • 基本構造はHierarchical PointNet 評価 • 手の関節位置の推定 NYU, MSRA, ICVL
  • 176.
    40. P2P RegressionPointNet [L. Ge+, ECCV2018, 2018-10-08] 担当: 千葉 Offset Fieldsの推定による手の関節位置推定 • Offset Fields: 各三次元点における,各関節の距離と方向 • 距離の離れた関節は推定しない(0を出力) • Offset Fieldsを直接ネットワークで推定するのは 難しいため,距離と方向に分けてそれぞれを推定 • 距離: 関節点までの近さをHeat-maps • 方向: 関節点の方向を向いた単位ベクトル • Hand PointNet同様,OBBによる正規化
  • 177.
    40. P2P RegressionPointNet [L. Ge+, ECCV2018, 2018-10-08] 担当: 千葉 Post-processing • 関節位置の統合 • 各点から推定された関節位置が一点に まとまらない場合がある(右図) • 推定された関節位置の分散が大きい場合, 別のネットワークが代わりに関節位置を出力 PointNetの中間表現を入力とし, 直接各関節位置を出力 • 手の形状になるように制約をつける • PCAで次元削減し,関節位置を30次元で表現 • 推定結果を30次元空間に乗るように制約
  • 178.
    40. P2P RegressionPointNet [L. Ge+, ECCV2018, 2018-10-08] 担当: 千葉 ネットワークの構造 Hierarchal PointNetを2回つなげたような構造 関節位置がうまく統合 できないときの出力 基本となる ネットワーク 関節までの距離 関節の方向
  • 179.
    本資料のアウトライン •はじめに •まとめた論文の一覧,大まかな傾向と感想 •各論文のまとめ • ~PointNet (PointNetに至るまで) •入力にボクセルを利用 • 入力を点群・ボクセル以外に変換 • 局所形状の利用 • 特殊なレイヤー • 個別のアプリケーション •参考文献,謝辞
  • 180.
    参考文献・謝辞 本資料を作成するにあたり,以下の資料を参照しました. ありがとうございました. • CVPR2018のPointCloudのCNN論文とSPLATNet https://www.slideshare.net/takmin/cvpr2018pointcloudcnnsplatnet • 3DMachine Learning https://github.com/timzhang642/3D-Machine-Learning • cvpaper.challenge http://hirokatsukataoka.net/project/cc/index_cvpaperchallenge.html また,多忙にもかかわらず資料のチェックを手伝ってくれた 元同期の研究室OB 福地くんに感謝します.ありがとうございました.