ニューラルネットワークによるLiDAR点群データの表現

こんにちは、先進技術部でアルバイトをしている上垣です。
今回はLiDARで計測された3次元点群データを、ニューラルネットワークを用いて表現する方法について紹介します。

ニューラルネットワークを用いて3次元データそのものを表すニューラル陰関数表現(Implicit Neural Representation) についての研究は、現在注目を集めています。本記事では、実際に3次元の計測データとして広く利用されているLiDAR計測の点群データから、ニューラル陰関数表現を獲得する手法について調査と実験を行いました。

はじめに

近年、深層学習で扱う対象が3次元データにまで拡大しています。例えば、3次元データの領域分割や生成、3次元表現獲得といったタスクが存在しています。

おおまかに3次元データと言っても、利用目的によって様々なデータ表現がありえます 。その中でも深層学習への導入の手軽さから、データをニューラルネットワークのような関数の形で表す陰関数表現が注目を集めています。3次元データの陰関数表現を獲得するタスクは、CGでモデリングされたデータなどを使って試みられてきており、現実的なデータへの適用も視野に入りつつあります 。現実的なデータの例として、LiDARによって計測された点群データが考えられます。LiDARは地形計測などでよく用いられる計測方法で、最近では低コストな3Dスキャナーも増えてきています。LiDARによって計測される点群は点群データの中でも特殊なものであり、陰関数表現獲得の研究で扱っている例は少ないです。一方で、LiDAR点群データから陰関数表現を獲得できれば、地形や路面の計測データを用いた分析においても比較的容易に深層学習を利用可能になると考えられます。

3次元データ表現について

SDF

一般的によく用いられる3次元のデータ表現には点群、メッシュ、ボクセル、SDFといった種類があります。
  • 点群: 物体を構成する頂点のみによってデータのおおよその形を表します。
  • メッシュ: 点群に頂点同士の結びつき(面)を加えることでデータを表します。
  • ボクセル: 3次元の空間を細かなブロックに区切り、ブロック単位で物体の領域を表します。
  • SDF(Signed Distance Field;符号付き距離場): 3次元空間の各座標に、そこから最も近い物体表面までの符号付き距離を割り振ることで、距離が0となる部分を表面として表します。座標に距離を割り振る関数もSDF(Signed Distance Function)と表記されます。
これらのデータ表現のうち、メモリ効率やニューラルネットワークとの相性、既存レンダリング手法との相性といった点で、注目を集めているのがSDFです。SDFでは、物体表面の外側にある空間に正の距離、内側にある空間に負の距離を割り当てます。2次元で円形の物体表面について考えると図1の通りとなります。黒線で示した円を表現するため、表面の外側には赤の強さで示す正の距離が、内側には青の強さで示す負の距離が、それぞれ割り当てられています。この符号付き距離場(あるいは割り当て関数)を保存しておくことで、距離が0となる部分を抽出すればデータを復元できるようになります。
図1: SDFによる物体の表現(2次元)
SDFをベースとした表現方法として、座標に対する距離の割り当てをニューラルネットワークで近似する物があります。このようにデータ表現となる関数をニューラルネットワークで近似する手法は「ニューラル陰関数表現」と呼ばれています。3次元データ表現におけるニューラル陰関数表現の詳細については以前のブログ記事“ニューラルネットワークによる三次元表現手法”をご覧ください。

ニューラル陰関数表現は当初、新しいデータへの汎化を目的とするエンコーダ・デコーダ型の生成モデルにおいてデコーダとして利用されていました[1][2]。これらの手法では、エンコーダで物体の大まかな形状を表す潜在特徴量を学習します。同時に、デコーダでは潜在特徴量と座標とを条件として、その座標における最も近い表面までの距離を学習します。これによって、物体形状の潜在特徴量を元にSDFを介した3次元物体生成を可能としていました。
一方でSIREN[3]やOverfitSDF[4]では、既存の機械学習手法のように新しいデータへの汎化を目的とするのではなく、一つのデータポイントについて詳細な学習をするという少し変わったタスク設定をしています。一つのデータポイントが持つ座標と距離の対応関係をもとにニューラルネットワークによるSDFの近似を行うことで、データ内の空間に対する汎化が期待できます。これにより、データ利用時に解像度に縛られることなく取り出せるというメリットがあります。加えて、ストレージ上の容量面での圧縮も期待できると言われています[4]。
また、3次元データに限らず画像の陰関数表現獲得においても、SIRENモデルを用いた画像圧縮が行われており、条件によっては非常に小さい容量でもJpegに並ぶ圧縮が可能であると言われています[5]。

このような3次元の陰関数表現からデータを取り出す方法として、主に二つの方法が考えられます。
一つは、3次元のままのデータとして取り出す方法です。物体を含む空間の座標をモデルに入力し、得られた距離の絶対値に閾値を設けて点群やメッシュとして復元する方法です。閾値は入力座標のスケールに合わせて0に近い値に設定します。
もう一つは、ある視点から見た際の2次元画像として取り出す方法です。この場合にはレイマーチングというアルゴリズムが用いられます。空間における視点の位置と視線の方向をそれぞれ定めた上で視線を飛ばし、視線の先に物体表面があるか否かを確認し描画するアルゴリズムです。視線を飛ばす処理では、視点から見ている先に向けてその位置におけるモデル出力の距離分だけ視線を進め、物体表面にたどり着くか一定回数進むまで確認します。

点群データからの陰関数表現学習

モデルが前提としているSDFには「表面で囲まれた閉鎖的な空間を持つ(=表面を挟んで正と負の距離を持つ)データでなければ表現できない」という問題点があります。実際の3次元データには必ずしも閉鎖的な空間がある訳ではありません。例えばLiDARのように、ある方向から光を当てた反射によって対象を計測する手法では、得られるデータは非常に平面的な点群データです。そして、平面的な点群データから計算できるのは符号を持たない距離(Unsigned Distance)になります。符号を持たない距離を2次元で考えてみると、以下の図2のようになります。 
図2: 平面的な物体と符号を持たない距離場(UDF) 
SDFを想定した手法で閉鎖的な空間を持たないデータや符号を持たない距離を扱う問題点として、既存手法の学習がうまくいかないことや、出力アルゴリズムのレイマーチングが収束しないことが考えられます。この問題に対して、SAL[2]では符号を持たない距離を教師データとして符号付き距離を学習するように、ニューラルネットワークモデルを設計しています。しかし、SALは最終的な出力でSDFに頼るため、点群からの学習はできても平面データへの適用は難しいです。NDF[6]では、符号なしの距離場(UDF; Unsigned Distance Field)における汎化的な表面構成モデルの実装や描画アルゴリズムの改良を提案しています。NDF論文から、ニューラルネットワークの出力が符号を持たない距離であっても、描画アルゴリズムに少し改良を加えることでデータを復元できることがわかります。

以上の背景を踏まえて以降の実験では、符号付き距離の算出が難しいLiDAR計測の点群データから、一つのデータポイントについてニューラル陰関数表現を獲得する方法を検討しました。 

実験

使用データ

データには静岡県ポイントクラウドデータベース[7]のものを使用しました。今回の実験では、結果の視認のしやすさから開けた街道の1サンプル(図3)を元データとしています。
図3: 使用した点群データ[7] 
以降、見やすさのために点群可視化時には色情報に対してヒストグラム平坦化を行います(図4)。 
図4: 点群データ[7]に対しヒストグラム平坦化を行なったもの 

使用モデル: SIREN

これまでSDFを近似するニューラルネットワークモデルには活性化関数をReLUにしたMLPが多く使われてきました。それに対してSIREN[3]モデルでは活性化関数をSin関数に変更することで、画像や音声、3次元空間など信号として扱えるデータについてReLU MLPよりも詳細な表現を得られると言われています。

\mathbf{y}^{(l)} = \sin (\mathbf{W}^{(l)} \mathbf{y}^{(l-1)} + \mathbf{b}^{(l)})

SIRENモデルでは各層の活性化関数をSin関数としているため、その導関数もSin関数として表せます。 

\sin'(\mathbf{y}^{(l)}) = \cos (\mathbf{y}^{(l)}) = \sin (\mathbf{y}^{(l)}+\frac{\pi}{2})

このため、SIRENモデルの導関数もまた表現力の高いSIRENとなり、詳細な表現獲得が可能となります。

オリジナルのSIRENモデルによるSDF学習では、境界値問題を解くために損失関数に制約を与えて最適化を行っています。

\displaystyle L_{sdf}= \int_{\Omega} \lVert \lvert \nabla_{\mathbf{x}} \Phi(\mathbf{x}) \rvert - 1 \rVert d\mathbf{x} + \int_{\Omega_0} \{ \lVert \Phi(\mathbf{x}) \rVert +(1 - \langle \nabla_{\mathbf{x}} \Phi(\mathbf{x}) , \mathbf{n}(\mathbf{x})\rangle)\} d\mathbf{x} + \int_{\Omega \backslash \Omega_0} \psi(\mathbf{x}) d\mathbf{x}

\psi(\mathbf{x}) = exp(-\alpha \cdot |\Phi(\mathbf{x})|) , \alpha \gg 1

上の式についてそれぞれの項は順に
  1. 全ての点xにおける勾配の大きさは1とする 
  2. 表面上の点xの距離\Phi(\mathbf{x})を0とし、xにおける勾配は法線ベクトルn(x)に合わせる 
  3. 表面以外の点xにおける距離\Phi(\mathbf{x})は0とならない 
の制約と対応しています。

この方法は点群と法線ベクトルが揃っている場合には前処理なく最適化できます。しかし、今回利用したデータでは収束しませんでした。これは、そもそも学習データに閉鎖的な空間がないことに加え、密な点群データに対して自動で法線ベクトルを算出したため、入力データにおけるノイズが大きくなり、最適化できなくなったと考えられます。

そこで、前述の点群データに対してある程度の解像度を持つ学習用グリッドとの符号なし距離を算出し、直接教師データを作成する方法を採用しました。ただし、元データの点群全てに対して学習用グリッドとの距離を求めるのは効率的でないため、元データに関して正規化後にボクセル重心を利用したダウンサンプリングを行っています。具体的な教師データの算出は、学習用グリッドに含まれる各点xについてダウンサンプリングした点群Sとの最短距離を以下の式で計算しました。

f(\mathbf{x}) = \underset{\mathbf{y} \in S}{\min} || \mathbf{x} - \mathbf{y} ||_2

実験のはじめの段階ではボクセルサイズを0.001として、6,168,095点であった元データを282,316点まで削減して300^3点のグリッドとの距離を求めていましたが、次に述べるような理由からボクセルサイズを0.004、削減後のデータ数は23,383点、グリッドの解像度は500^3としました。理由としては、グリッド解像度による精度への影響が大きく、距離計算の効率を考えてバランスを取ったためです。なお、ボクセルサイズは0.004程度までは元データの情報を大きく損なわないことを目視により確認しています。

損失関数も以下の式で表される符号の影響を除いたMAEに変更し、最適化手法にはAdamを使い、学習率1e-5で300epoch学習しました。

L_{UDF} = | |f_\theta(\mathbf{x})| - f(\mathbf{x}) |

f_\theta(\mathbf{x})は座標xを入力とした場合のニューラルネットワークの予測距離で、f(\mathbf{x})は座標xにおける正解距離になります。

学習データのサンプリング

グリッドなどの空間に落とし込んだデータからSDFを近似する場合、一般的に表面への距離が近い点を多く学習させた方が表面の再現精度は高い傾向があります。そのため、グリッドではなく球からのサンプリングや、表面への距離によってペナルティを加える方法などが考えられます。

事前に別データ[8][9]を用いてSIRENモデルでこれらのサンプリングを試した結果、表面の精度は上がった一方で、学習データの範囲外にある空間に表面が出現しました(図5)。そこで、今回の実験では球からのサンプリングをベースに、学習範囲から大きく離れた点(点群座標最大値+大きさ1以上のベクトル)を距離1として、ミニバッチサイズ8192点に8点を加えて学習することで対応しました。
図5: 学習に用いたうさぎのデータ[8][9]と表面からの距離に応じて学習頻度にペナルティを与えたSIRENモデルの出力 

モデル分割

LiDARによって計測された点群データは規模が大きく細かい物体を含むため、単体のSIRENモデルでは学習しきれない可能性があります。そこで、点群に対して意味的な領域分割を行った上で、各領域に対するSIRENモデルを学習しました。

今回の実験で使用するような地形的な点群データでは、建物などに対して地面の比率が高い一方で、学習難易度としては地面よりも建物の方が高いことが考えられます。データの比率という点で建物は外れ値と見做せるため、open3dのRANSACアルゴリズムによる平面検出を用いて領域分割を行いました。今回の実験では目視で確認をしながら、距離の閾値を0.005として分割しています。学習難易度の違いについては、分割領域ごとにモデルのパラメタ数に差をつけることで対応しました。単体のSIRENモデルではモデルの層数を10、次元数を1024として、パラメタ数は10,501,121となりました。一方で領域分割を行なったモデルでは、地面のモデルは層数10、次元数512に、建物のモデルは層数12、次元数720にそれぞれ設定し、合計のパラメタ数は10,419,522となりました。地面と建物のモデルパラメータは比率でおよそ1:3としています。 

点群復元アルゴリズム

モデルからの点群復元には、NDF[6]の点群復元アルゴリズム(図6)を利用しました。 
図6: NDFの点群生成アルゴリズム[6] 
上記のアルゴリズムでは
  1. ある程度の解像度を持つグリッド(BB)をモデルに与え、モデルによる予測距離f(\mathbf{p})\delta以下である点P_{init}のみを残します。
  2. 不正確なUDF予測に対応するため、P_{init}に対してnum_steps回だけ勾配を利用した座標修正を行います。この時点では距離に基づいて最低限の点群が生成されています。
  3. より密な点群を生成するためにP_{init}の各座標に対して、\frac{\delta}{3}を分散としたガウス分布サンプリングを足し合わせて水増しを行い、点群P_{dense}を生成します。
  4. P_{dense}についても勾配を利用した座標修正をnum_steps回行います。
これにより初期のグリッド解像度は低いまま密な点群を生成でき、メモリ効率が高まります。ただし、本実験では勾配による座標修正をすることでデータの詳細が損なわれたため、座標修正は行わず点群水増しのみを行いました。各パラメータは最初に与えるグリッドのサイズを500^3点、\deltaを0.004、点群の水増し回数を10回として生成しています。また、以降で表示する生成点群の色には、各点の元データにおける最近傍の色を利用しています。

評価方法

評価指標には、学習データセット全体に対する符号の影響を除いたMAEロスに加え、予測点群と教師点群とのChamfer Distanceを求めています。Chamfer Distanceは、2つの点群同士の近さを求める評価指標であり、以下の式で求められます。

CD(S_1, S_2) = \frac{1}{|S_1|} \underset{\mathbf{x} \in S_1}{\sum} \underset{\mathbf{y} \in S_2}{\min} || \mathbf{x} - \mathbf{y} ||^2_2 + \frac{1}{|S_2|} \underset{\mathbf{x} \in S_2}{\sum} \underset{\mathbf{y} \in S_1} {\min} || \mathbf{x} - \mathbf{y} ||^2_2

Chamfer Distanceは遠さの指標なので、一致している場合で0となり、数値が大きいほど正解に遠く、小さいほど正解に近くなります。

結果

単一のSIRENモデルで学習した場合(単体モデル)と分割領域ごとに学習した場合(領域分割モデル)それぞれの結果は表1の通りとなりました。

表1: 各モデルの評価
 MAE Loss   Chamfer 
 Distance 
 モデル保存容量 
(MB)
単体モデル 0.00019 0.0032 41
領域分割モデル 地面 0.00016 0.0031 11
建物 0.00020 30
結果として、符号を用いないMAE Loss(各領域の平均値で検討)、Chamfer Distance共に、大きな差はありませんでした。モデル保存容量に関して、元データの点群のみをnumpyのfloat32配列としてテキストに書き出した場合では465MBだったので、今回の実験結果では容量的に1/10程度の圧縮をしたことになります。

実際の復元結果を図7、図8に、復元結果と同じ方向から見た元データを図9に示します。 
図7: 単体モデルでの復元結果 
図8: 領域分割モデルでの復元結果 
図9: 復元結果と同じ方向から見た元データ[7] 
復元結果について、地面はそれなりに再現できている印象を受けますが、建物(壁、電線、電柱など)は元データの細かさに対して荒い印象を受けます。今回の実験では、この難易度の違いを想定して領域分割モデルを学習したのですが、数値による評価から分かる通り、目立った改善はされませんでした。可視化した印象として、領域分割モデルよりも単体モデルの方が電線や建物などの詳細が取れているように見えます。この点については、領域分割をした内の建物モデルにもう少しパラメタ数を割いても良かったかも知れません。

一方で、元データの詳細な特徴については、図10における確認ポイントを各モデルの再現と見比べることで一部は再現できていることがわかります(表2)。表2では詳細を比較するため、単体モデルにおいて学習データのグリッド解像度を500^3ではなく300^3で200epoch学習した場合のデータも載せています。
図10: 元データ[7]における確認ポイント 


表2: 各モデルにおける詳細情報
確認ポイント① 確認ポイント②
元データ
単体
モデル
領域分割
モデル
単体
モデル
(300^3)
確認ポイント①では2本の電線が並走していますが、この特徴は単体モデルでは繋がることなく再現できています。これは、学習データのグリッド解像度を上げた際に見られるようになったもので、学習データを300^3の解像度としていた時には、一つの面のように繋がっていました。
また、確認ポイント②はLiDAR計測時の影となって点群が生成されなかった部分ですが、これについてもグリッド解像度をあげたことで単体/領域分割の両モデルで再現ができています。ただし、より細かなLiDARの影(図9や図10で地面が消えている部分など)は再現できずに補間されており、これらを再現するためには500^3の解像度よりも大きな解像度が必要であると考えられます。実際に実験をした感覚として、500^3よりも解像度をあげる場合には、学習時間やメモリ使用率の観点でより効率的な方法の検討が必要になると思います。

それぞれの確認ポイントについて、必要となる部分が場合によって異なる可能性も考えられます。例えば、電線のように細かい建物の情報が判断材料となる場合には、モデルによる補間は望ましくない一方、多少荒くてもLiDARの影を残したくない場合にはモデルによる補間は有効かも知れません。今回の実験で試した方法のように領域ごとにモデルを分割しておくことで、それぞれで学習データのグリッド解像度を変更でき、領域ごとに補間するか否かの選択ができると考えられます。 

まとめ

今回の実験では、LiDAR計測の点群をニューラルネットワークで表現するタスクについて、具体的なデータを利用して探索的に実験を行いました。結果として、条件統一による比較を行なった単体/領域分割の2モデル間では大きな差は見られませんでしたが、Lidar点群からニューラル陰関数表現獲得を行う場合の工夫について検討できたと思います。例えば、SIRENモデルによるニューラル陰関数表現では、学習範囲外に表面が生成されないような学習サンプリング手法が必要であることが分かりました。また、SIRENのように補間能力の高いモデルで詳細な表現を得ようとする場合には、「学習グリッド解像度を変化させる」などによって、モデルが補間する距離/しない距離を明確に学習させる必要があることも分かりました。今回の実験でわかったことなどを元に手法をより洗練させていくことで、機械学習における3次元の路面データや地形データなどの利用がより手軽にできるようになるのではないかと思います。

ALBERTでは、様々な専門的バックグラウンドを持つリサーチャー・アナリストを募集しています、詳しくは採用ページをご覧ください。

参考文献

  1. [1] Jeong Joon Park, Peter Florence, Julian Straub, Richard Newcombe, Steven Lovegrove: “DeepSDF: Learning Continuous Signed Distance Functions for Shape Representation”, Proc. the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2019, pp. 165-174.
  2. [2] Matan Atzmon, Yaron Lipman: “SAL: Sign Agnostic Learning of Shapes From Raw Data”, Proc. the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2020, pp. 2565-2574.
  3. [3] Vincent Sitzmann, Julien N.P Martel, Alexander Bergman, David Lindell, Gordon Wetzstein: “Implicit Neural Representations with Periodic Activation Functions”, Proc. NeurIPS, 2020.
  4. [4] Thomas Davies, Derek Nowrouzezahrai, Alec Jacobson: “Overfit Neural Networks as a Compact Shape Representation”, arXiv: 2009.09808v2.
  5. [5] Emilien Dupont, Adam Goliński, Milad Alizadeh, Yee Whye Teh, Arnaud Doucet: “COIN: COmpression with Implicit Neural representations”, arXiv: 2103.03123, 2021.
  6. [6] Julian Chibane, Aymen Mir, Gerard Pons-Moll: “Neural Unsigned Distance Fields for Implicit Function Learning”, arXiv:2010.13938, 2020.
  7. [7] 静岡県ポイントクラウドデータベース, https://pointcloud.pref.shizuoka.jp/, 2021/03/10閲覧, CCライセンス 表示 4.0 国際.
  8. [8] Qingnan Zhou, Alec Jacobson: “Thingi10K: A Dataset of 10,000 3D-Printing Models”, arXiv:1605.04797, 2016.
  9. [9] Tom Burtonwood: “The Rabbit In the Hat Trick”, https://ten-thousand-models.appspot.com/detail.html?file_id=441708, 2014, 2020/03/10閲覧.