NVIDIAよりInstantNeRFが公開された。NeRFは、neural radiance fieldsの略で、座標情報(x,y,z)+視線方向(θ,φ)の5次元の入力情報から、体積密度(σ)と放射輝度(RGB)を出力する(図.1)。NeRFをベースに、リアルタイムに空間の再構築を可能にしたのがInstantNeRFである。GUIも提供されて、パラメーターの調整やスナップショットの撮影、さらにカメラワークの作成などをおこなう事が可能である。
図.1 neural radiance fieldsの論文より(※1)
データ
最初に必要なデータは、カメラで撮影した写真100-200枚程度を用意する。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlg2O_LaM2K9luJ8OhgYNWp0F4PqB6A_2I3sJMeNwn34TLO_PAxdRGSS7QkGUySUwumFA_rkUEaX-ypdvptfuE5NHv_h-tnrxVD34yiPAZpYZi0e5mlUoIcWOGDNuXTX7pmIySRrXswmy8Ynp9Auyo_jkNqr6TKt9S3OmiDDFkMbOOVrELVaxIjIGSDw/s920/datasset.png)
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
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGtFVRM8SQgJFbiIoLwckuoXLNVGH5YE6sNoT9QFXnL4eGO97p5yuGzMuZcem32eZTQygSuBSVAqp-8MRIOoIZ8BsxXYbJo1lpFwP8W3Hjwb2A-ebOviAUTkhuXLtFPuzi9kSonPhSVEUY_wEpyIcnBOXEKn8lmH0LcuTNz5rQ2GlJZaar2bxKQ_1mDw/s1224/train01.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRjdaHKnNem8o2ZvEUpjLZPnWOZ8qXPJITCQuPBrRCHUzdiLzS2NSYN3PY-ROrLAefXeU0n7u2LTAjcEgvOdaHJYtO0JAHk5fHwTB7ssALogNO2zRWwJBBcjRb6VePgJsTtxEkkaVZ2QixvyDHMFPL_aR-FWyGVe6_J3S7Mp75jlS_zBZIpM_Gw5F16w/s1222/train02.png)
また、各種パラメーターもGUIで調整する事が可能だ。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkdD7BAOMK-cU5QkwhpkHOaB6eFdVns35xOBip0QSBj_9SYxJusKqc4TMUzPzK43QbjdFKzFRtlJXZKKrxXYku-x1FmqNN1MjHs4UciSY28CfRBMoGBG-lGZxS_dBPSXKGCWsuYY8Gkz_tTHMtWYs3wP6v3hqbwCBYoxk4r-EohqwCDHja9F0TtkcJ2w/s1315/param01.png)
アニメーション動画の作成
GUIの画面から、カメラの位置をJSONファイルに保存する。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb0h9dH0m1XfHE8OfZVhO2FVT372HG0zGpY5tQa_8Ax39RRNmOVPKFkUC3bcHpDc81TgDW5gdSLHEvO6zLYTXQh1e7Qqe58rDdArvEpSxt5JzGJ_guz46ShxwCvpNfpKrZOR3OF--xaWo0vG5j0EsouCK5MVmtQcYkXF5atIBpgAxW0eHGufdM6ZCukA/s1483/camera.png)
JSONファイルに保存されたカメラ位置からアニメーションを作成する。
C:¥Users¥akira¥workspace¥instant-ngp> python scripts/render.py --scene data/koil --n_seconds 10 --render_name koil --width 1920 --height 1080
アニメーション
実際に作成したアニメーションは、こんな感じになる。
InstantNeRFで、2回目のKOIL Mobility Field。晴れた日の写真のみ使用して、前回よりもちょっとレベルアップ。#instantNeRF pic.twitter.com/qpa78k1hgx
— Akira Sasaki (@gclue_akira) June 25, 2022
様々な試み
Ray-Ban Storiesのカメラ搭載メガネをつかってInstant-NeRFで再構築。
I think I just walked down a path I cannot come back from. @Luxottica/@RealityLabs Ray-Ban Stories plus @NVIDIAAIDev Instant-NeRFs.
— Jonathan Stephens (@jonstephens85) June 23, 2022
Imagine me running around a @NASCAR event with these one @Scobleizer 😎
Notice the bounce is gone without cropping the scene. Get it now?#3D #AI pic.twitter.com/Tvv2wRZkng
写真をアニメGANでアニメ調にそこからInstantNeRFで再構築。
360 video footage -> processed with animeGAN's paprika model -> @NVIDIAAIDev instant NeRF 🥲 #NeRF #instantNGP #volumetric #synthesis #AI #neuralrendering #neuralradiancefields #photogrammetry pic.twitter.com/OqHXJcOmFy
— grade eterna (@gradeeterna) June 22, 2022
360度動画から、InstanetNeRFで360度のアニメーションを出力している。
Rendered a 360 video of my last 360 drone NeRF🤯
— grade eterna (@gradeeterna) June 28, 2022
Uploaded to YouTube in 5K: https://t.co/MS8fAkLwnc
Clip below captured in YouTube VR on a Quest 2.@NVIDIAAIDev #NeRF #instantNGP #neuralnetworks #neuralradiancefields pic.twitter.com/BCn9jPgLVa
リファレンス
- NVLabs/instant-ngp
- ※1 Representing Scenes as Neural Radiance Fields for View Synthesis
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2ScRiknAbztPdSJdFw-ySMuKfhdSlBINXhYKzTvXVqPxJvhLdr9XcsIyj08xby8Mzzh-kH7peLiPk6bzUgAax70Xb3rTQorvPm4kTSp4v8Oqymz4F5jhSDHmstGjVj0MhMZGdWr5PQGJ060s_XAYDdaVEVwu4nQvwy9TYTfofEZ8YWONvZsS5QWG2pw/s1591/aisystem.png)