PointNet, 点群を扱うニューラルネットワーク

1日1本論文を読んで紹介しています。今日は、”PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation” by Charles R. Qi, Hao Su, Kaichun Mo, Leonidas J. Guibas.です。

PointNetとは?

PointNetは、点群(順序なし点集合) を扱うニューラルネットワークです。アーキテクチャはシンプルですが、物体の分類((Classification)、部品への分割(part segmentation)、意味的な分割(semantic segmentation)などで高いパフォーマンスを発揮します。

研究の新規性

典型的なCNNは、点群をボクセルなどのボリュームデータや画像を集めたデータに変換して学習・推定を行います。しかし、これらの表現ではサンプリングの過程で情報の欠損が起こります。この研究では、点群をそのまま入力として 受け取ります。入力は特別な順番のないN個の点の(x,y,z)座標です。

PointNetの応用範囲

PointNetは以下の3つのタスクに利用できます。

  • 物体の分類(Classification)
  • 部品への分割(Part Segmentation)
  • シーンの意味的な分割(Semantic Segmentation in Scene)
from PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation page1

アーキテクチャについて

全体像

下の図が全体像です。各ポイントのそれぞれが同じmlp(多層パーセプトロン, Multilayer perceptron)に入力され、最後にそれらがmax-poolingによって集約されて、特徴が抽出されます。

※max-pooling: 比較範囲の中で最大のもの1つを取り出すことによる近似で、この場合は各点の特徴ベクトルの要素を比較し、最大の値をglobal featureの値とします。

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

対称関数

このモデルの出力は、入力される点の順番に対して不変である必要があります。そのため、対称関数(symmetric function)が使用されています。対称関数とは、引数(ここでは入力される点の座標)の順序によって出力が変化しないような関数です。このモデルでは、各点に対して同じmlpを適用し、最後に全ての点についてmax-poolingを行なっているため、点の入力の順序を変えたとしても同じ出力となります。

局所的な情報と全体的な情報の集約

点の分割を行うためには、局所的な特徴(隣り合う点同士の関係など)と全体的な特徴(全体の形状など)の双方が必要です。PointNet concatenateでは、得られた全体的な特徴(全点に対するmax-poolingの結果)を、各点の局所的な特徴と連結し、それを入力としてmlpによって特徴抽出を行い、分割の結果(n:各点×m:その点が属するクラスm の行列)を出力します。

変換に対する普遍性

意味的なラベリングを行う際には、形状に対して平行移動や回転などの変換を行なっても結果が不変となる必要があります。PointNetでは、アフィン変換行列をmini-network(T-Net)によって推定します。この推定された行列を形状にかけられることで、変換の影響を無くしています。このmini-networkもまた、特徴抽出、max-pooling、全結合からなるネットワークです。

※アフィン変換行列とは、回転、平行移動、拡大縮小、せん断などの変換で、1つの3×3行列で表現することができます。(表現方法によっては4×4行列ですがこのモデルでは3×3行列を使っているようです)

視覚化

この論文を見ると、形状の表現において有用な特徴を持つ点upper-bound shape(上階形状と訳すのが適切かは分かりません)を視覚化した画像が掲載されています。これを用いて、入力形状を重要な点だけを用いて入力形状の情報を要約することができます。