はじめに
ICCV2019より以下の論文
[1] Y. Wang, et. al. Deep Closest Point: Learning Representations for Point Cloud Registration. ICCV2019.
-
以下は著者らのコードか?:
https://github.com/WangYueFt/dcp
概要
- 2種類の点群が与えられた場合に、点群1から点群2へのR, t を求める手法
- 機械学習的な手法を取り入れて従来の ICP による手法の精度を上回った
- モデルとしてはまず2種類の点群をencoderで特徴量化し、それぞれをtransformer moduleで対応づける?
背景
従来手法の ICP
点群1と点群2のマッチング手法として、従来より Iterative Cosest Point(ICP)というものがある。以下はICPをわかりやすく解説してくれたサイト。
https://www.albert2005.co.jp/knowledge/robotics/spatial_recognition/icp_algorithm
これによると、1)点の対応関係からR, tを推定、2)R, tを用いて点を移動させ、対応関係を更新、の2つを繰り返すようだ。
しかし、この手法だと局所解に陥ってしまう。ノイズやスパース的な状況にも弱い。
本手法 DCP
著者らは Deep Closest Point(DCP)なるものを提案する。これは ICP をベースとして、ニューラルネットワークを取り入れ、最適化でマッチング・transformの推定を行うものだ。
これにより従来手法以上の精度を達成した。
関連研究
手法
諸々定義
一方の点群:
\mathcal{X} = \{ {\bf x}_1, \ldots , {\bf x}_i, \ldots, {\bf x}_N \} \subset \mathbb{R}^3
もう一方の点群:
\mathcal{Y} = \{ {\bf y}_1, \ldots , {\bf y}_j, \ldots, {\bf y}_M \} \subset \mathbb{R}^3
${\bf R}_{\mathcal{X}, \mathcal{Y}} \in SO(3)$ :点群 X から点群 Y へのrotation
${\bf t}_{\mathcal{X}, \mathcal{Y}} \in \mathbb{R}^3$ :点群 X から点群 Y への translation
ネットワークのアーキテクチャ
全体像
ネットワークのアーキテクチャは以下の図。
- 2つの位置から取得した point-cloud X, Y に対してDGCNN(あるいはPointNet)で point ごとに encode する
- それら2点の特徴量に対してtransformerで一致する点同士のベクトルを近くする
- SVDなどでRとtを算出する
step 1:encode
点群 X および Y に対するDGCNN(もしくはPointNet)L 層からの特徴量は
\mathcal{F_X} = \{ {\bf x}_1^L, {\bf x}_2^L, \ldots , {\bf x}_i^L, \ldots , {\bf x}_N^L \} \\
\mathcal{F_Y} = \{ {\bf y}_1^L, {\bf y}_2^L, \ldots , {\bf y}_i^L, \ldots , {\bf y}_N^L \}
この特徴量は $\mathcal{F_X} \in \mathbb{R}^{N \times P}$ と各点が P 次元。
step 2:transformerによる点群どうしのマッチング
相手の点群の情報を使って、対応する点は同じ特徴量になるようにする処理を $\Phi$ と考えると、
\Phi_{\mathcal{X}} = \mathcal{F_X} + \phi(\mathcal{F_X}, \mathcal{F_Y}) \\
\Phi_{\mathcal{Y}} = \mathcal{F_Y} + \phi(\mathcal{F_Y}, \mathcal{F_X})
$\phi$ はencoderからの出力に対して差分だけ学習するようになされている。残差を求めるので、φにより次元は変わらず。
\phi: \mathbb{R}^{N \times P} \times \mathbb{R}^{N \times P} \to \mathbb{R}^{N \times P}
こうして求めた $\Phi_{\mathcal{X}}$ の中のある i 番目の点とYのそれとの内積を計算すると
\Phi_{\mathcal{Y}}\Phi_{\mathcal{{\bf x}_i}}^T
対応する点 $\Phi_{\mathcal{{\bf y}_j}}$ との内積で値が最も大きくなるはず。よって Y の全点にわたってsoftmaxを求めると
m({\bf x}_i, \mathcal{Y}) = softmax(\Phi_{\mathcal{Y}}\Phi_{\mathcal{{\bf x}_i}}^T) \tag{9}
この値は ${\bf x}_i$ と対応する点で最も1に近い値となるだろう。
step 3:SVDにより R と tを求める
(9)式で求めた点群 X のある点 ${\bf x}_i$ に対する点群 Y の一致度的なもの m を用いて、Yの中から一致する点を抽出する。
\hat{{\bf y}_i} = Y^T m({\bf x}_i, \mathcal{Y}) \in \mathbb{R}^3 \tag{10}
この対応する点群のペアより論文中の(3)式、(4)式のSVDを用いた手法で R, t を求めるが、ここはよくわかってないので省略。
Loss
Lossは推定したR, t とそのターゲットとの差にノルムを加える。
Loss = \| {\bf R}^T_{\mathcal{XY}} {\bf R}^g_{\mathcal{XY}} - I \|^2 + \| {\bf t}^T_{\mathcal{XY}} - {\bf t}^g_{\mathcal{XY}} \|^2 + \lambda \| \theta \|^2 \tag{11}
実験と結果
以下は ModelNet40 datasetを用いて各種test dataに対する精度を他のモデルと比較したもの。DCP-v1 はattention無し、DCP-v2はattentionあり。