KPConv: Flexible and Deformable Convolution for Point Cloudsを読んだのでメモ
はじめに
KPConv: Flexible and Deformable Convolution for Point Cloudsを読んだのでメモ.
気持ち
Point Cloudに対する効果的な畳み込みの方法の提案.基本的には2D regular gridに対する畳み込みを元にしていて,カーネルの形状をdeformation可能なdeform KPConvも提案.
Kernel Point Convolution
各点群の座標と特徴ベクトルをと定義.畳み込みカーネルをとして,畳み込みを次のように定義.
ただし,はを中心とする半径以内の点群を表す.以下とする.ここでは画像での畳み込みと同様,異なる位置の点に異なる重みをかけて足し合わせるという演算を考える.畳み込みカーネルは,個の位置に重みを持ち,それぞれカーネルの中心からの相対座標と重みを持つ.画像の場合には,カーネルにおける位置に一致する画像上の値に重みをかけて,全ての要素の足し合わせで畳み込みが実現されるが,点群の場合には必ずしも位置に値が来るとは限らない.また,カーネルでカバーされる範囲にいる点の数も未知のため,一工夫が必要.KPConvでは,ととの距離を使って,次のようにカーネルを定義する.
Deformable Kernel
KPConvをさらにDeformableに拡張する.基本的にはDeformable Convと同様,オフセットを加えるというもので,次のように定義できる.
オフセットの値はやはりdeformable Convと同様に別ブランチの出力結果として得る.
画像と違い点群はスパースなため,rigidなカーネルでは点のないところに重みを用意するような状況に陥りやすく表現力の無駄遣いを起こすため,deformable KPConvは無駄なく畳み込みを行うことが可能とのこと.ただし,そのような挙動を実際に示すように以下の正則化をかけると良いらしい.
はカーネルの位置と点群の位置が重なるようにするもので,はカーネルの位置が一箇所に固まらないようにするもの.
まとめ
気づけばPointNetから点群を扱うニューラルネットがだいぶ進化していてなかなか面白い.ただTable 2の実験結果を見るとPointNetが圧倒的過去の物になっているのはちょっと恐ろしい.