機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Cloudsを読んだのでメモ

はじめに

RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Cloudsを読んだのでメモ. LiDARデータなど,大量の点群データ(10^6オーダー)に対して従来より高速にsemantic segmentationをするモデルの提案.

RandLA-Net

提案するモデルは点群を効率的に演算するためのRandom Samplingと局所的な特徴を抽出するLocal Feature Aggregationからなる.

Random samplingは名前の通り入力の点群からランダムに点をサンプリングする. ランダムのモチベーションは,何か凝ったことをやろうとするとO(N)オーダーになり,ミリオンオーダーの点群に対しては例え線形のオーダーでも厳しい. 強化学習で効率的なサンプリングのpolicyを学習する方法もあるが,探索空間が広すぎて学習が収束しないという問題がある. なのでランダムサンプリングにしたよということ. 一方で,ランダムにサンプリングすると重要な点を落とす可能性があるので強力なfeature aggregationが必要ということで,新たなaggregation方法を提案する.

RandLA-Netのlocal feature aggregationはlocal spatial encoding (LocSE)とAttentive Poolingから成るresidual blockによって実現される.

local spatial encoding (LocSE)

入力として,点群の点ごとの3次元座標p_i\in\mathbb{R}^3と特徴量(RGBや中間出力など) f_i\in\mathbb{R}^dを考える. 処理としてまず,i番目の点に対してK近傍[tex:\{p_i^1,\dots,p_i^k,\dots,p_i^K\}を計算する. これらrの点を使い次のように変換する.

\displaystyle
\mathbf{r}^k_i=\mathrm{MLP}(p_i\oplus p_i^k\oplus(p_i-p_i^k)\oplus\|p_i-p_i^k\|)

ただし,\oplusはconcatenationで,\|\cdot\|ユークリッド距離を表す. MLPの入力は冗長性を持つがプラクティカルには良かったとのこと. 結果的に3+3+3+1=10次元ベクトルをMLPに入力し,対応する特徴ベクトルと同じd次元ベクトルを出力する. これはK近傍の各点に適用されるため,結果として\mathbf{r}_i\in\mathbb{R}^{K\times d}次元となる.

最終的に\mathbf{r}_i^k\mathbf{f}_i^kをconcatenateして\hat{\mathbf{f}}_i^k次元ベクトルを出力する.

Attentive Pooling

Attentive PoolingはLocSEの出力\hat{\mathbf{F}}_i=\{\hat{\mathbf{f}}_i^1,\dots,\hat{\mathbf{f}}_i^k,\dots,\hat{\mathbf{f}}_i^K\}を集約する.

より具体的には次のように重み付き和を行う.

\displaystyle
\tilde{\mathbf{f}}_i=\sum_{k=1}^K(\hat{\mathbf{f}}_i^k\cdot\mathbf{s}_i^k)

\mathbf{s}^k_iMLPg(\cdot)から\mathbf{s}_i^k=g(\hat{\mathbf{f}}_i^k;\mathbf{W})として計算される. ただし,\mathbf{W}MLPの学習パラメータで,式の通りkiに依存しない(パラメータ共有してる). また,式からは分かりにくいが,\mathbf{s}_i^kはsoftmaxで正規化されている(Fig. 3).

Dilated Residual Block

上記のLocSEとAttentive Poolingから成るDilated Residual BlockとRandom Samplingを積み上げることで提案するRandLA-Netは構成される. 言葉で書くと煩雑に成るためFig. 3参照.

最終的なモデルの全体像はAppendixのFig. 7参照.

まとめ

各種データセットで従来手法を上回るmIoUを達成. 計算時間もPointNetより少し早いにもかかわらずmIoUはPointNetを大幅に上回る. Random Samplingでも十分動くものだなという印象. 前のPoint-Voxel Convでも思ったけど,点群処理は意外と単純なやり方でも精度出るものだなと.