Quantcast
Channel: ALBERT Official Blog
Viewing all articles
Browse latest Browse all 191

ニューラルネットワークによる三次元表現手法

$
0
0
図の一部をStanford Computer Graphics Laboratory より引用
はじめまして、2020年新卒で入社した プロジェクト推進部 の童です。今回は新卒研修の一環として取り組んだ、ニューラルネットワークによる三次元表現手法の技術調査について書かせて頂きます。三次元とニューラルネットワークというテーマに沿って比較的近年のトピックについて解説するつもりです。特にニューラルネットワークによる三次元表現について、陰関数表現をアイディアとしたIM-NETとDeepSDFについて解説します。また今回の内容と類似したテーマで、NeRFについて解説した記事がありますので、そちらも併せてご覧ください。

1 はじめに

画像認識タスクでの深層ニューラルネットワークの成功を皮切りに、画像、動画、音声など、ありとあらゆるタスクにおいて深層ニューラルネットワークの応用が盛んになっています。今回は特に三次元図形の表現におけるニューラルネットワークの応用について紹介していきたいと思います。

2 物体の三次元表現とは?

三次元表現とは、一言でいうと、現実世界(三次元)の図形の情報をコンピュータ上で表現するための方法です。画像がコンピュータ上でピクセルの集合としてデジタル情報で表現されるように、三次元図形もデジタル情報としてそれらを表現する方法が存在します。現在主に用いられている三次元表現にはボクセル、点群、メッシュがあります。それぞれの特徴について簡単に以下にまとめます。なお図1~図3は[4]より引用しました。
図1 : ボクセル
図2 : 点群
図3 : メッシュ
  • ボクセル
    ボクセルはピクセルの三次元への拡張です。ボクセルの集合を三次元配列で表すことで三次元表現を得ます(図1)。配列の各要素には、色や輝度など、そのボクセルの持つ属性が格納されます。それ以外にも例えば、CTスキャンではX線の吸収率が格納されたり、超音波検査密度や流速変化率が格納される場合もあります。ボクセルを細かくすればより精細な表現を得られますが、メモリが3乗に比例して増大するのがデメリットです。
  • 点群
    点群は三次元上の点の集まりとして三次元表現を得ます(図2)。点群は3Dスキャナー、センサーや深度カメラから直接得らえることの多いデータ形式です。点群それ自体はあまり使われず、様々な後処理をして応用されることが多いです。点の情報だけを保存すればよく、ボクセルに比べてメモリ効率は良いです 。
  • メッシュ
    メッシュは頂点と面の張り合わせで三次元表現をします(図3)。面にテクスチャを貼りつけたりしてリアルな質感表現が可能なため、ゲームや映画のCGなどに広く応用されています。また頂点と面の情報を保持すればいいので、メモリ効率も良いです。一方で、ボクセルや点群と比べてデータ構造が複雑で、人手での制作コストがとても大きいです。
作成難易度メモリ応用性
ボクセル  △ ×
点群  〇 ×
メッシュ  ×
上の表でまとめた通り、ボクセル、点群、メッシュにはどれも利点と欠点が存在し、どれが最良なものかというのは判断が難しいです。用途に合わせて最もふさわしいものを用いるしかありません。後述しますが、それは機械学習タスクで用いる場合でも同様です。

3 ニューラルネットワークによる三次元表現

近年、ボクセル、点群、メッシュとは異なる、新たな三次元図形の表現をニューラルネットワークで得る方法が考案されています。三次元図形の表現をニューラルネットワークで得るとはどういうことでしょう?例えばボクセルは三次元配列によって、点群は集合データによって、メッシュはグラフ構造によって三次元図形の表現を得ています。ニューラルネットワークで三次元の表現を得るというのはある特定のニューラルネットワークのパラメータや構造自体を三次元図形の表現としてしまうということです。このようなことを考えるモチベーションとしては、ニューラルネットワークで三次元データを扱う際に、初めからニューラルネットワークで三次元表現を使うことで前処理なしでスムーズに移行できるようにすることです。 というのはボクセル、点群、メッシュをそのままニューラルネットワークへの入力とするにはいくつかの問題があるからです。 ボクセルデータについては、メモリ使用量が多く、計算負荷が大きいため、解像度を高くできないことが問題です。点群データは点の集合を表しているデータ構造なので、点群の順序不変性などをネットワークに反映させるために様々な工夫が必要です。詳しくは[6]などで述べられています。 メッシュに関してもその特殊なデータ構造からニューラルネットワークに入力として与えるためには、更に複雑な前処理をする必要があります。[3] ニューラルネットワークによる三次元表現を用いることで以上の問題を回避しつつ、学習タスクを行うことが可能になると期待されています。ニューラルネットワークで行いたいタスクとしては、画像認識でも盛んな、物体認識やセグメンテーションなどに加え、三次元特有のものとしては、
  • 二次元画像からの三次元図形の再構成
  • 点群データからボクセルやメッシュによる三次元表現の獲得の自動化
  • 複数の三次元図形間の補間
  • 敵対的生成モデルによる三次元図形の生成
などが挙げられます。

4 陰関数表示による三次元図形の表現

陰関数表示とは端的に言うとf(x,y,z)=0といった方程式の形で図形を表現する手法です。例えばx^2+y^2+z^2=1という方程式の曲線は球になります。陰関数表示の嬉しいところは比較的少ないパラメータで図形を”任意の解像度”で表現できる点にあります。例えば球をメッシュで表現しようとすると、十分滑らかに見える程度のメッシュを用意しなくてはいけません。また円の半径を変更したり楕円に変形するといった操作が簡単には行えません。そしてどれだけメッシュを増やしたとしても離散化が入っている以上、完全な球を表現することはできません。一方で陰関数表示ならば、 パラメータとして半径だけを与えれば、球を表すことが可能です。(図4)
図4 : 陰関数表示とメッシュの比較
陰関数表示では、方程式に代入する値を決めることによって任意の解像度でレンダリングができ、方程式の係数と半径を変更することで表現される図形を変化させることができます。更にこの際パラメータを連続的に変化させることで中間の図形の補間も可能です。すなわち陰関数表示は少ないメモリで完全に図形を表現できる形式であると言えます。 一方でデメリットとして、複雑な図形を表現することが苦手です。これは複雑な図形を表すような方程式を具体的に定める(モデリング)のが困難だからです。 そこでニューラルネットワークの登場です。曲面を表す関数を人手で発見するのではなく、データから学習させてしまおうという発想です。これにより人手で関数を見つけなくても、パラメータを学習することによって複雑な図形の陰関数表示を得ることができます。ニューラルネットワークの近似定理[2]によって十分複雑な図形を表現できると期待されます。各手法の利点と欠点を次の表にまとめておきます。
モデリングメモリ精密さ
ボクセル、メッシュ   人手 ×
陰関数表示(従来)  人手
陰関数表示(NN)  学習 ◎(学習が上手く行けば)
さて、ニューラルネットワークを使った陰関数表示 f(x,y,z)=0 によって実際に三次元図形を模らせるためには、ニューラルネットワークのパラメータを学習させる必要があります。この部分から各論文で手法が異なってきて独創性やアイディアの多様性を見ることが出来ます。

5 IM-NET

IM-NETではOccupancyという概念を用いて表現を獲得します。 Occupancyとは図形の内部ならば1、外部ならば0を取るような変数と定義されます。図5に示すように、各座標に対してそのOccupancyを出力するネットワークを用意します。表現したい三次元図形のOccupancyを学習データとして与え、ネットワークを学習することで、表現を得ます。すなわちIM-NETはOccupancyの二値分類を行っていると言えます。しかしこのままだと一つのネットワークで一つの図形しか表現できません。IM-NETは更に入力にCode特徴量(図6)と呼ばれる変数を加え、潜在空間を表現することで、様々な三次元図形を表現することが出来ます。
図5 : Occupancyを学習するIM-NET
図6 : コード特徴量を追加[1]

5.1 IM-NETと他手法の組み合わせ

IM-NETはCode特徴量から元の図形を復元するデコーダと見なすことが出来ます。 これによりIM-NETはそれ単体で用いるというよりは、様々な既存の三次元図形に対するエンコーダ・デコーダ型のネットワークのDecoder部分に置き換わることで幅広い応用を可能とします。 図7に示す模式図を用いて説明します
図7 : IM-NETによるデコーダの置き換え
エンコーダデコーダ型のネットワークに対して(基本的にはこれは何でもよいです)デコーダの部分をIM-NETで置き換えることで、ボクセルやメッシュを出力していたところをOccupancyを出力するようにして、学習をします。これにより学習の精度があがる現象が報告されているようです。ボクセルやメッシュよりもIM-NETによる三次元表現のほうが学習に有利に働いているようです。
IM-NETのCode特徴量によって、他ネットワークのエンコーダから得られた特徴量を自然に入力できるようになっています。

5.2 応用

実際にIM-NETがどのようなタスクでどのようなネットワークと共に用いられているのかを見ていきます。なお図8~図11は全て[1]で掲載されていたものです。

オートエンコーダの学習回数削減

図8 : 従来のオートエンコーダ vs デコーダをIM-NETに置き換えたオートエンコーダ
オートエンコーダのデコーダ部分をIM-NETに置き換えることに従来より少ないエポック数で学習ができるようです。論文ではアルファベットの”A”という文字の画像での学習の様子を実際に[1]では図8のように示してます。(a)が従来のオートエンコーダで(b)がそのデコーダ部分をIM-NETに置き換えたネットワークです。(b)のほうがより早い段階でアルファベットの”A”が浮かび上がることが分かります。

5.3 敵対的生成モデルによる三次元図形の生成と補間の精度向上

IM-NETを使うことにより、敵対的生成モデルから生成される図形の品質を向上させることができます。次の図9は実際に、敵対的生成モデルによって生成された図形の比較です。(e),(f)がIM-NETを用いたモデルで他のモデルより表面の凸凹などが少なく、綺麗な図形が表示されています。
図9 : 敵対的生成モデルによって生成された三次元図形の比較
図10は二つの生成図形間の補間の様子を示したものです。Code特徴量を線形補間することで生成されます。IM-NETを用いたモデル(d)は中間の図形がスムーズに変化していくのに対して、他手法では上手く補間が出来ていないことが分かります。
図10 : 複数の三次元図形間の補間[1]
その他、単一視点画像からの三次元図形再構築などにもIM-NETが応用可能です。

ネットワーク詳細

図11 : IM-NETのネットワーク構造
最後に気になる方のために、IM-NETの詳細なネットワーク構造を載せます。図11に示すようにIM-NETは入力に対してスキップコネクションなどを駆使した複数の全結合層からなります。またCode特徴量は128次元のベクトルで表されています。 学習は次のような損失関数の下で行われます。
サンプリング点 p の予測Occupancyf_\theta(p)と実際のOccupancy \mathcal{F}(p) の誤差を w_p で重みつけた損失関数を用います。w_pは図形の表面に近いほど大きな重みが与えられます。
IM-NETの簡単にまとめると次のようになります。
  • Occupancyを学習するようにして三次元表現を獲得
  • IM-NETは従来手法のDecoder部分に置き換わることで様々なタスクに汎用的に応用が可能である
  • Code特徴量により潜在空間を表現し、ひとつのモデルで複数の三次元図形を表現することができ、

DeepSDF

DeepSDF[5]はIM-NETと同時期に発表されたネットワークです。基本的なアイディアはIM-NETと同じですが、DeepSDFはOccupancyではなく SDF(Signed distance fields)と呼ばれるスカラー場を学習します。 これは三次元図形に対して定義される符号付き距離であって、各点のスカラー値には、その点から物体の表面までの最短距離が入ります。ただしその点が物体の内部にある場合はマイナス、外部にある場合はプラスの値を取ります。図12では、ウサギの図形を例としてSDFを可視化しています。
図12 : Signed distance fields [5]より引用
またIM-NETと同様、DeepSDFにも図13のようにCode特徴量が存在していて、潜在空間を表現し様々なタスクへの応用が可能になります。
図13 : Code特徴量の追加
DeepSDFの損失関数は次のように定義されます。
ここでclampは値を[-\delta,\delta]の範囲に収める関数(Numpyのclip関数やC++のstd:clamp関数と同じ) で\deltaが大きいほど学習が早くなりますが、細部の形状表現がおろそかになり、 \delta を小さくすると、細部の形状まで表現できるようになります。

Encoder-less learning

IM-NETではCode特徴量は他ネットワークから得るといった使い方がされていました。もちろんDeepSDFでも同様な使い方はできますが、DeepSDFではコード特徴量をDeepSDFだけで得る手法があり、Encoder-less learnigと名付けられています。具体的には以下のようにします。 始めにデータ(三次元図形)ごとにランダムでCode特徴量を設定します。 次に各データに関して次のような損失関数を定義します。ここでzはコード特徴量を表しています。
一見突拍子ないように見えますが、ベイズ統計の枠組みではこれはCode特徴量にガウシアン事前分布を仮定したとき、次のような指数型分布族から得られたサンプルに対しての事後分布の対数尤度最大化に相当します。

Code推定による三次元図形推定

DeepSDFの独自の応用例として、Code推定による三次元図形推定を紹介します。学習が完了したDeepSDFを用いて新たなデータに対してもっともフィットするような三次元図形を表現することが可能となります。これにより図6のように不完全な三次元図形のデータ(点群など)から完全な三次元図形の推定などのタスクに応用することができます。 具体的には
という最適化問題を解くことで、データにもっともフィットする形状を取るようなコード特徴量を推定することで、三次元表現を推定します。[5]で、実際にノイズの入った点群データからCode推定を行うことで三次元図形を獲得した例を図14として引用します。
図14 点群データからの三次元表現獲得

まとめ

以上ニューラルネットワークの陰関数表示による表現に関する論文を紹介しました。どちらもニューラルネットワークならではの特性を使って巧みに三次元表現を得ているという印象を受けました。IM-NETもDeepSDFもOccupancyやSDFに対する分類問題や回帰問題を解くことで三次元表現を得ていて、これは従来ボクセル、点群、メッシュといった、人手で構築していく表現とは一線を画したものだと思います。応用範囲として非常に興味深いものがたくさんあり、実社会に関わってくる未来も近いかもしれません。一方で両者とも色や質感などを表現できないといった欠点があります。今回は物体の内部と外部を表すスカラー場を学習させましたが、 NeRF では色や輝度の情報まで持たせたRadiance fieldと呼ばれるベクトル場を学習させることで、色や質感などを表現でき、よりそちらのほうが実用には近いのではないかといった所感があります。 今回はニューラルネットワークによる三次元表現に焦点を絞りましたが、他にも3Dメッシュのレンダラーをニューラルネットワークで再現する研究[4]なども盛んです。 ALBERTではともにAIを活用し最先端の課題に挑戦するメンバーを募集しています。興味をお持ちいただいた方は、こちらまでお問い合わせください。

参考文献

[1] Chen, Z., & Zhang, H. (2019). Learning implicit fields for generative shape modeling. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 5939-5948). [2]Csáji, B. C. (2001). Approximation with artificial neural networks. Faculty of Sciences, Etvs Lornd University, Hungary24(48), 7. [3]Feng, Y., Feng, Y., You, H., Zhao, X., & Gao, Y. (2019, July). MeshNet: Mesh neural network for 3D shape representation. In Proceedings of the AAAI Conference on Artificial Intelligence (Vol. 33, pp. 8279-8286). [4]Kato, H., Ushiku, Y., & Harada, T. (2018). Neural 3d mesh renderer. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 3907-3916). [5]Park, J. J., Florence, P., Straub, J., Newcombe, R., & Lovegrove, S. (2019). Deepsdf: Learning continuous signed distance functions for shape representation. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 165-174). [6]Qi, C. R., Su, H., Mo, K., & Guibas, L. J. (2017). Pointnet: Deep learning on point sets for 3d classification and segmentation. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 652-660).

Viewing all articles
Browse latest Browse all 191

Trending Articles