1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

論文まとめ:Deep Closest Point: Learning Representations for Point Cloud Registration

Posted at

はじめに

ICCV2019より以下の論文
[1] Y. Wang, et. al. Deep Closest Point: Learning Representations for Point Cloud Registration. ICCV2019.

概要

  • 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

ネットワークのアーキテクチャ

全体像

ネットワークのアーキテクチャは以下の図。

スクリーンショット 2022-10-02 3.40.38.png

  1. 2つの位置から取得した point-cloud X, Y に対してDGCNN(あるいはPointNet)で point ごとに encode する
  2. それら2点の特徴量に対してtransformerで一致する点同士のベクトルを近くする
  3. 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あり。

スクリーンショット 2022-10-02 6.50.48.png

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?