※当サイトはPRを含みます

【3D点群処理】PointNet, PointNet++の解説

2022年6月3日

はじめに

点群データ処理に用いられる代表的なモデル、PointNetとその発展形のPointNet++についてまとめてみました。
(3Dデータと深層学習については下記記事にまとめています。)

3D点群データと深層学習

従来手法の課題

従来の点群データ処理にはいくつか課題がありました。
・物体認識のタスクで使用されるVolumetoric CNNなどはvoxelを用いた3Dの畳み込みを行っているが、データが疎(sparse)になる
・3D畳み込みはコストがかかる
・点群の性質を考慮する必要がある

点群の3つの性質

上記で述べた点群データの代表的な性質は3つあります。

①Unordered:順序を持たない
点群データに格納されているデータは規則なくばらばらにポイントの位置情報が入っています。

②Interaction among points:点同士の関係性
ポイントは上記で述べたように順不同ですが、空間に配置したときには隣り合うポイントは互いに関連性を持っています。

③Invariance under transformation:変形による不変性
平行移動や回転移動を作用させた点群データを機械学習モデルに入力したとしても出力は不変でなければいけません。

PointNet

PointNetとは

PointNetは上記3つの性質を考慮(主にUnordered)したネットワークになります。

論文は下記にあります。

PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

image.png

主にクラス分類やセグメンテーションのタスクに用いられます。
image.png

PointNetの特徴

PointNetの特徴をいくつか見ていきます。

①MaxPooling層
点に対し全結合ネットワークを複数回かけ合わせ、特徴量を抽出していき、最終的に得られた点に対して特徴量(n*1024部)をmaxpoolingすることで点群全体の特徴量を得ます。
「Unordered:順不同」の性質を担保した処理になります。
image.png

②ローカルとグローバルな情報を組み合わせる
各点ごとの特徴に、Global Max poolingによって取得した全体特徴を結合します。
この処理はセグメンテーション時に使用されます。
image.png

③点群の回転、移動の考慮
T-Netによって点群を回転させて正規化します。
このT-Netの処理で「Invariance:不変性」を担保します。
image.png

PointNet++

PointNetは深層学習における点群データ処理に大きな影響を与えましたが、近傍点群の情報を取り込めないという課題がありました。

PointNet++はPointNetに入力する点群を事前にクラスタリングしてから入力することで、擬似的に局所的特徴量も抽出できるように改善されたネットワークになります。

PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space

PointNet++の特徴

それではネットワーク構造や具体的な工夫点などを見ていきます。

PointNet++はPointNetを階層的に適用し、サンプリングとグルーピングを繰り返すことで局所的な特徴も学習する事が出来るように改善しました。

・サンプリング
FPS(Farthest Point Sampling)でサンプリングして、半径r内の点全部を1つのPointSetとしてPointNet入力します。
ランダムサンプリングと比較してポイントセット全体をより網羅するようにサンプリングすることができます。

・グルーピング
点の密度に応じてマルチスケール情報を集約するMSG(Multi-scale grouping)やMRG(Multi-resolution grouping)を実装しました。

MSGは、異なるスケールのグループ化レイヤーを適用することで、近傍点が少ない点において参照空間を拡大させます。大規模なすべての重心点に対してPointNetを実行し、多くの重心点を選択するため、計算コストが高くなります。

MRGは、大規模な近傍点の特徴抽出を回避するのでMSGより計算コストが小さくなります。
image.png

PointNetとPointNet++の比較

ModelNet40をベンチマークとした検証ではPointNetと比較して精度が上がっていることが分かります。
image.png

セグメンテーションにおいてもPointNetと比較して正確にセグメンテーションできています。


image.png

おわりに

深層学習の点群データ処理に用いられる代表的のPointNetとPointNet++についてまとめました。
以降の研究でもPointNetをベースとした手法が多くあるので他の論文も読んでいきたいです。

おすすめ参考書