Slide 1

Slide 1 text

写真からあっという間に 3Dシーンを⽣成する Instant NeRFをDockerで動かす 板垣正敏@Python機械学習勉強会in新潟 #15 2022-4-24

Slide 2

Slide 2 text

アジェンダ š NeRFとは︖ š Instant NeRFとは︖ š Instant NGPとは︖ š noVNCとは︖ š 環境構築の⼿順 š データの準備 š デモ š まとめ 2

Slide 3

Slide 3 text

NeRFとは︖ 3

Slide 4

Slide 4 text

NeRFとは︖ š NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis š https://arxiv.org/abs/2003.08934 š Novel View Synthesis (いくつかの画像から新しいカメラ位置からの画像を合成する⼿法)の1つ š 被写体の形状を学習するのではなく、空間内のある位置(座標)と⽅向から、RGBの輝度 (Radiance)と不透明度(Opacity)を得るためのMLPを学習させる š このため、⾼解像度でもネットワークパラメータは少なくて済む š ただし、学習時間は元の論⽂ではNVIDIA V100で1、2⽇かかる 4

Slide 5

Slide 5 text

NeRFとは︖︓その原理 š 被写体の形状を学習するのではなく、空間内のある位置(座標)と⽅向から、RGBの輝度 (Radiance)と不透明度(Opacity)を得るためのMLPを学習させる š カメラを通る直線上の座標をサンプリングし、上記で得られた輝度と不透明度からRGBを計算 5

Slide 6

Slide 6 text

NeRFとは︖︓その構造 š MLPは⽐較的単純 š Positional Encodingした位置座標𝛾(𝑥)は5層⽬に残差⼊⼒あり š Positional Encodingした⽅向ベクトル𝛾(𝑑)は不透明度𝜎出⼒の後に⼊⼒(不透明度はどこから⾒ても同 じ) 18 B. Mildenhall, P. P. Srinivasan, M. Tancik et al. RGB (x) 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 (x) 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 (d) AAAB+nicbVBPS8MwHE39O+e/Oo9egkOYl9GKoN6GXjxOsG6wlpGm6RaWpCVJxVH6Vbx4UPHqJ/HmtzHdetDNB4HHe78fv5cXpowq7Tjf1srq2vrGZm2rvr2zu7dvHzQeVJJJTDycsET2Q6QIo4J4mmpG+qkkiIeM9MLJTen3HolUNBH3epqSgKORoDHFSBtpaDf8EeIctXyO9DiM86g4HdpNp+3MAJeJW5EmqNAd2l9+lOCME6ExQ0oNXCfVQY6kppiRou5niqQIT9CIDAwViBMV5LPsBTwxSgTjRJonNJypvzdyxJWa8tBMlhHVoleK/3mDTMeXQU5Fmmki8PxQnDGoE1gWASMqCdZsagjCkpqsEI+RRFibuuqmBHfxy8vEO2tftZ2782bnumqjBo7AMWgBF1yADrgFXeABDJ7AM3gFb1ZhvVjv1sd8dMWqdg7BH1ifPyGTlAw= AAAB+nicbVBPS8MwHE39O+e/Oo9egkOYl9GKoN6GXjxOsG6wlpGm6RaWpCVJxVH6Vbx4UPHqJ/HmtzHdetDNB4HHe78fv5cXpowq7Tjf1srq2vrGZm2rvr2zu7dvHzQeVJJJTDycsET2Q6QIo4J4mmpG+qkkiIeM9MLJTen3HolUNBH3epqSgKORoDHFSBtpaDf8EeIctXyO9DiM86g4HdpNp+3MAJeJW5EmqNAd2l9+lOCME6ExQ0oNXCfVQY6kppiRou5niqQIT9CIDAwViBMV5LPsBTwxSgTjRJonNJypvzdyxJWa8tBMlhHVoleK/3mDTMeXQU5Fmmki8PxQnDGoE1gWASMqCdZsagjCkpqsEI+RRFibuuqmBHfxy8vEO2tftZ2782bnumqjBo7AMWgBF1yADrgFXeABDJ7AM3gFb1ZhvVjv1sd8dMWqdg7BH1ifPyGTlAw= AAAB+nicbVBPS8MwHE39O+e/Oo9egkOYl9GKoN6GXjxOsG6wlpGm6RaWpCVJxVH6Vbx4UPHqJ/HmtzHdetDNB4HHe78fv5cXpowq7Tjf1srq2vrGZm2rvr2zu7dvHzQeVJJJTDycsET2Q6QIo4J4mmpG+qkkiIeM9MLJTen3HolUNBH3epqSgKORoDHFSBtpaDf8EeIctXyO9DiM86g4HdpNp+3MAJeJW5EmqNAd2l9+lOCME6ExQ0oNXCfVQY6kppiRou5niqQIT9CIDAwViBMV5LPsBTwxSgTjRJonNJypvzdyxJWa8tBMlhHVoleK/3mDTMeXQU5Fmmki8PxQnDGoE1gWASMqCdZsagjCkpqsEI+RRFibuuqmBHfxy8vEO2tftZ2782bnumqjBo7AMWgBF1yADrgFXeABDJ7AM3gFb1ZhvVjv1sd8dMWqdg7BH1ifPyGTlAw= AAAB7HicbVDLSgNBEOz1GeMr6tHLYBA8hV0R1FvQi8cIbhJIljA7mU3GzGOZmRXCkn/w4kHFqx/kzb9xkuxBEwsaiqpuurvilDNjff/bW1ldW9/YLG2Vt3d29/YrB4dNozJNaEgUV7odY0M5kzS0zHLaTjXFIua0FY9up37riWrDlHyw45RGAg8kSxjB1knNrmEDgXuVql/zZ0DLJChIFQo0epWvbl+RTFBpCcfGdAI/tVGOtWWE00m5mxmaYjLCA9pxVGJBTZTPrp2gU6f0UaK0K2nRTP09kWNhzFjErlNgOzSL3lT8z+tkNrmKcibTzFJJ5ouSjCOr0PR11GeaEsvHjmCimbsVkSHWmFgXUNmFECy+vEzC89p1zb+/qNZvijRKcAwncAYBXEId7qABIRB4hGd4hTdPeS/eu/cxb13xipkj+APv8wcIeY72 AAAB7HicbVDLSgNBEOz1GeMr6tHLYBA8hV0R1FvQi8cIbhJIljA7mU3GzGOZmRXCkn/w4kHFqx/kzb9xkuxBEwsaiqpuurvilDNjff/bW1ldW9/YLG2Vt3d29/YrB4dNozJNaEgUV7odY0M5kzS0zHLaTjXFIua0FY9up37riWrDlHyw45RGAg8kSxjB1knNrmEDgXuVql/zZ0DLJChIFQo0epWvbl+RTFBpCcfGdAI/tVGOtWWE00m5mxmaYjLCA9pxVGJBTZTPrp2gU6f0UaK0K2nRTP09kWNhzFjErlNgOzSL3lT8z+tkNrmKcibTzFJJ5ouSjCOr0PR11GeaEsvHjmCimbsVkSHWmFgXUNmFECy+vEzC89p1zb+/qNZvijRKcAwncAYBXEId7qABIRB4hGd4hTdPeS/eu/cxb13xipkj+APv8wcIeY72 AAAB7HicbVDLSgNBEOz1GeMr6tHLYBA8hV0R1FvQi8cIbhJIljA7mU3GzGOZmRXCkn/w4kHFqx/kzb9xkuxBEwsaiqpuurvilDNjff/bW1ldW9/YLG2Vt3d29/YrB4dNozJNaEgUV7odY0M5kzS0zHLaTjXFIua0FY9up37riWrDlHyw45RGAg8kSxjB1knNrmEDgXuVql/zZ0DLJChIFQo0epWvbl+RTFBpCcfGdAI/tVGOtWWE00m5mxmaYjLCA9pxVGJBTZTPrp2gU6f0UaK0K2nRTP09kWNhzFjErlNgOzSL3lT8z+tkNrmKcibTzFJJ5ouSjCOr0PR11GeaEsvHjmCimbsVkSHWmFgXUNmFECy+vEzC89p1zb+/qNZvijRKcAwncAYBXEId7qABIRB4hGd4hTdPeS/eu/cxb13xipkj+APv8wcIeY72 + + 60 256 256 256 256 256 256 256 256 60 24 256 128 6

Slide 7

Slide 7 text

NeRFとは︖︓⼯夫点 š カメラの向き(視線の⽅向)は3次元単位ベクトルで表現 š 前スライドの説明では⼊⼒を3次元座標とカメラの向きを表す⾓度(θ, φ)として表現しているが、実装では3次 元の単位ベクトル d で表す š Positional Encoding š ニューラルネットワークが苦⼿とする⾼周波成分の学習のため、⾼次元にマッピングするPositional Encodingを 採⽤ γ 𝑝 = (sin 2!𝜋𝑝 , cos 2!𝜋𝑝 , ⋯ , sin(2"#$ 𝜋𝑝), cos(2"#$ 𝜋𝑝)) š 実装では、位置座標𝛾(𝑥)は60次元、カメラの向き𝛾 𝑑 は24次元のベクトルにエンコーディングしている š Hierarchical Volume Sampling š RGB合成のための直線上サンプリングで、何もない点をサンプリングしてもムダ š 「荒い」ネットワークと「緻密な」ネットワークを学習させ、荒いネットワークのサンプリング結果から、最適 なサンプリングの密度を計算して緻密なネットワークからサンプリングを⾏う 7

Slide 8

Slide 8 text

Instant NeRFとは︖ 8

Slide 9

Slide 9 text

Instant NeRFとは︖ 9 https://blogs.nvidia.com/blog/2022/03/25/instant-nerf-research-3d-ai/

Slide 10

Slide 10 text

Instant NGPとは︖ š Instant Neural Graphics Primitives with a Multiresolution Hash Encoding š https://arxiv.org/abs/2201.05989 š ハッシュテーブルを使うことで、2次元あるいは3次元のグラフィック情報を圧縮エンコードし、 ニューラルネットワークでの処理やレンダリングを⾼速にする⼿法の提案 š MLPの⼊⼒サイズが⼩さくなることで計算量を削減 š エンコーディングの学習パラメータ数は多いが、更新は局所的なので計算量はさほど⼤きくない š NeRFだけでなく、Gigapixel Image Approximation、Signed Distance Functions、Neural Radiance Cachingにおいても効果を確認 š 実装はNVIDIA GPUに特化したCUDAおよびtiny-cuda-nnフレームワークを使⽤ 10

Slide 11

Slide 11 text

Instant Neural Graphic Primitives の仕組み š NeRFの周波数(sin/cos)を使ったノンパラメトリックな位置エンコーディングの代わりに、複数 解像度での位置情報をハッシュテーブルのキーとして特徴量をマッピング、補間で得られた各解 像度の特徴量をMLPの⼊⼒とする 11

Slide 12

Slide 12 text

Instant Neural Graphic Primitives の演算 š 各階層の解像度 š 𝑁! ≔ N"#$ * 𝑏! š 𝑏 ≔ exp %& '!"#(%& '!$% )(* š ハッシュ関数の定義 š ℎ 𝕩 = 𝑑 ⊕ 𝑖 = 1 𝑥# 𝜋# 𝑚𝑜𝑑 𝑇 š ただし、⊕はbitwise XORで、𝜋# は𝜋* = 1を除き⼗分⼤きい素数 š ハッシュの衝突対策は⾏わない Fig. 3. Illustration of the multiresolution hash encoding in 2D. (1) for a given input c assign indices to their corners by hashing their integer coordinates. (2) for all resultin vectors from the hash tables \; and (3) linearly interpolate them according to the relat result of each level, as well as auxiliary inputs b 2 R⇢, producing the encoded MLP in gradients are backpropagated through the MLP (5), the concatenation (4), the linear in Table 1. Hash encoding parameters and their typical values. Only the hash table size ) and max. resolution #max need to be tuned to the use case. Parameter Symbol Value Number of levels ! 16 Max. entries per level (hash table size) ) [214, 224 ] Number of feature dimensions per entry 2 Coarsest resolution #min 16 Finest resolution #max [512, 524288] 3 MULTIRESOLUTION HASH ENCODING Given a fully connected neural network<(y; ), we are interested in an encoding of its inputs y = enc(x;\) that improves the approxima- tion quality and training speed across a wide range of applications without incurring a notable performance overhead. Our neural net- work not only has trainable weight parameters , but also trainable encoding parameters \. These are arranged into ! levels, each con- taining up to) feature vectors with dimensionality . Typical values b eac wh grid is 1 into no opt sub num bou W wh larg 12

Slide 13

Slide 13 text

Instant NeRFを学習させてみる 13

Slide 14

Slide 14 text

noVNCとは︖ š 私のNVIDIA GPU 搭載のLinuxマシンでは、ライブラリなどの互換性問題を避けるため、極⼒ Dockerで環境構築をしている š ただ、instant-ngpはGUIを含むツールであるため、デスクトップ環境が欲しい š Dockerでデスクトップ環境を使⽤する⽅法としてVNCが⼿っ取り早い š noVNCは、VNCポート(5900)を直接呼び出すVNCプロトコルクライアントの代わりにHTTP経 由でブラウザをクライアントとして使⽤できるのでさらに⼿っ取り早い š https://novnc.com/info.html 14

Slide 15

Slide 15 text

環境構築の⼿順 š はじめからnoVNCを使ったUbuntuのDocker環境の⽇本語版をベースにした š https://github.com/uphy/ubuntu-desktop-jp š NVIDIA CUDAを使⽤するため、上記のベースイメージを ubuntu:20.04からnvidia/cuda:11.2.2- devel-ubuntu20.04に変更 š 上記のイメージをベースに、さらに下記のソフトウェアをインストール š cmakeの最新バージョン š Python3.7以降 š Instant-ngp š COLMAPの依存ライブラリ š Ceres Solver(⾮線形最⼩⼆乗法に対応した最適化ライブラリ) š COLMAP(カメラパラメータ推定SfM: Structure-from-Motionのツール) š ffmpeg(動画からのサンプリング⽤) 15

Slide 16

Slide 16 text

データの準備 š COLMAPとは︖ š SfM (Structure-from-Motion), MVS(Multi-View Stereo)ツール š 動画または複数の静⽌画から3次元構造の復元を⾏うツール š NeRFの⼊⼒には、画像の他にカメラ座標と画⾓の情報が必要であるため、⼊⼒データからこうした情報を復元す るのに使⽤する š NeRFで使うデータセットでは、50枚から150枚程度の写真で、中⼼となる被写体が写っているものが望 ましいが、必ずしも360度をカバーするものでなくとも良い š 写真をimagesサブフォルダに格納した上で、Instant-ngpのリポジトリ中のPythonスクリプトを下記の ように実⾏する python [path-to-instant-ngp]/scripts/colmap2nerf.py –colmap_matcher exhaustive ¥ –-run_colmap –aabb_scale 16 š ビデオ⼊⼒の場合 python [path-to-instant-ngp]/scripts/colmap2nerf.py ==video_in path/to/videofile ¥ --video_fps 2 –-run_colmap –aabb_scale 16 16

Slide 17

Slide 17 text

デモ 17

Slide 18

Slide 18 text

まとめ š 2020年に発表されて話題になっていたNeRFをもう少し知りたいと思っていたところ、私の⼿持ち の環境でもつかえそうなInstant NGPというものをNVIDIAが発表したのを知り、動かしてみた。 š NVIDIAの紹介ビデオのような⾼品質の画像は⽣成できなかったが、NVIDIA GeForce RTX-2080 Ti (GPUメモリ11GB)の環境でも、独⾃のデータで学習させることができた。 š ⾼精細の画像⽣成には、データの質や、もう少し⼤きいGPUメモリなどが必要かもしれない。 š 多次元のデータを、限られたサイズでエンコードするInstant NGPの⼿法には、論⽂で紹介されて いる分野以外にも可能性を感じた。 š (おまけ)Docker上でも簡単にGUIがつかえるnoVNCは結構便利かもしれない。 18

Slide 19

Slide 19 text

参考 š 【論⽂5分まとめ】Multiresolution Hash Encoding š https://zenn.dev/takoroy/articles/d7bbb43ef12a2e š 三次元復元関連のツール紹介 š https://cyberagent.ai/blog/research/14861/ š 三次元空間のニューラルな表現とNeRF š https://blog.albert2005.co.jp/2020/05/08/nerf/ š 3D volumetric rendering with NeRF š https://keras.io/examples/vision/nerf/ š 数式を使わずにやさしく解説するNeRF: Neural Radiance Fields š https://techblog.leapmind.io/blog/introduction-to-nerf-without-math/ 19

Slide 20

Slide 20 text

追記 š ビルドに必要なDockerfile等をGitHub.comで公開しました。 š https://github.com/masa-ita/instant-ngp-on-docker š 発表時に使⽤していた⽇本語版UbuntuのnoVNCイメージはライセンスが不明だったため、下記 のリポジトリをベースとしました。 š docker-ubuntu-vnc-desktop š https://github.com/fcwu/docker-ubuntu-vnc-desktop 20