InstantNeRFで空間を再構築する

NVIDIAよりInstantNeRFが公開された。NeRFは、neural radiance fieldsの略で、座標情報(x,y,z)+視線方向(θ,φ)の5次元の入力情報から、体積密度(σ)と放射輝度(RGB)を出力する(図.1)。NeRFをベースに、リアルタイムに空間の再構築を可能にしたのがInstantNeRFである。GUIも提供されて、パラメーターの調整やスナップショットの撮影、さらにカメラワークの作成などをおこなう事が可能である。

図.1 neural radiance fieldsの論文より(※1)

データ

最初に必要なデータは、カメラで撮影した写真100-200枚程度を用意する。

COLMAP

InstantNeRFの最初の作業は、COLMAPを使用して撮影した写真それぞれのカメラの位置を決定していく。

C:¥Users¥akira¥workspace¥instant-ngp> python scripts/colmap2nerf.py --colmap_matcher exhaustive --run_cilmap --abb_scale 16 --images data/koil

GUIの起動と学習

COLMAPで各画像のカメラ位置を決めたら、次は、InstantNeRFのGUIを起動して学習をおこなう。学習の損出グラフは数分程度で改善しつづけ、認識可能な画像が再構築される。学習済みの結果を用いて、5次元の入力情報から、体積密度(σ)と放射輝度(RGB)の出力をおこないリアルタイムにおこなう。

C:¥Users¥akira¥workspace¥instant-ngp> build¥testbed.exe --scene data/koil

また、各種パラメーターもGUIで調整する事が可能だ。

アニメーション動画の作成

GUIの画面から、カメラの位置をJSONファイルに保存する。

JSONファイルに保存されたカメラ位置からアニメーションを作成する。

C:¥Users¥akira¥workspace¥instant-ngp> python scripts/render.py --scene data/koil --n_seconds 10 --render_name koil --width 1920 --height 1080

アニメーション

実際に作成したアニメーションは、こんな感じになる。

様々な試み

Ray-Ban Storiesのカメラ搭載メガネをつかってInstant-NeRFで再構築。

写真をアニメGANでアニメ調にそこからInstantNeRFで再構築。

360度動画から、InstanetNeRFで360度のアニメーションを出力している。

リファレンス