Introduction slides for "Instant Neural Graphics Primitives with a Multiresolution Hash Encoding" at 第58回 コンピュータビジョン勉強会@関東
第58回 コンピュータビジョン勉強会@関東@daigo_hirookaInstant Neural Graphics Primitives with aMultiresolution Hash Encoding
View Slide
スピーカー自己紹介● 廣岡大吾○ dhirooka (@daigo_hirooka) / Twitter● キャディ株式会社○ MLOps エンジニアとして図面解析システムやML リポジトリの CI/CD の整備○ 最近は図面活用 SaaS の SRE として GKE のお守りなどを担当
3D × DeepLearning の研究紹介にあたって● 最近は ML ベースの 3D レンダリングも簡単に利用可能になってきている○ Luma AI: 3D レンダリングの API やアプリを提供○ nerfstudio: NeRF の学習・評価用フレームワーク● 今回は nerfstudio でも提供されている InstantNGP を紹介● キャディでは現在これらの技術は使っていませんが、使う機会が来たら面白そう 🤗
3D × DeepLearning の研究紹介にあたって● Zip-NeRF: Anti-Aliased Grid-Based Neural Radiance Fields arXiv 2023○ mip-NeRF 360(サブボリュームアプローチ)によるアンチエイリアス○ InstantNGP(グリッドベースアプローチ)による高速化
3D × DeepLearning の研究紹介にあたって● Zip-NeRF: Anti-Aliased Grid-Based Neural Radiance Fields arXiv 2023○ mip-NeRF 360(サブボリュームアプローチ)によるアンチエイリアス■ →Mip-NeRF ICCV2021輪読会スライド - Speaker Deck で一部紹介○ InstantNGP(グリッドベースアプローチ)による高速化■ →今回紹介
紹介論文:InstantNGPhttps://nvlabs.github.io/instant-ngp/
紹介論文:InstantNGP● SIGGRAPH 2022 にて NVIDIA から発表● SDFやNeRFなど様々なレンダリングタスクに導入可能● 学習・推論の両方を大幅に高速化https://nvlabs.github.io/instant-ngp/
グラフィックスプリミティブとはコンピュータグラフィックスの描画における基本要素のこと● 点プリミティブ:ピクセル描画など● 線プリミティブ:図形描画など● 三角形プリミティブ: 3Dモデルの描画など
Neural Graphics Primitives(NGP)NGP:NNへのクエリに基づいたグラフィックス描画( NeRF, SDF, etc. )https://tom94.net/data/publications/mueller22instant/mueller22instant-gtc.mp4
Why using NN?https://tom94.net/data/publications/mueller22instant/mueller22instant-gtc.mp4● メモリ負荷を計算負荷に置き換え● 柔軟な入力形式● レンダリングは遅い○ →工夫により高速化
SummaryTitle: InstantNGP with a Multiresolution Hash Encoding= Multiresolution Hash Encoding によるお手軽 NN グラフィックス描画
Summaryhttps://tom94.net/data/publications/mueller22instant/mueller22instant-gtc.mp4
Input encoding in NeRF● NeRF では入力位置と角度に frequency encoding を適用し NN へ入力○ →高周波成分を捉えられるようになり、ぼやけづらくなるhttps://tom94.net/data/publications/mueller22instant/mueller22instant-gtc.mp4
Input encoding in NeRF: Parametric encodings● 補助的な学習可能パラメータを配置する方法も提案されている○ 代表例:空間を分割するボクセルグリッドの頂点に特徴ベクトルを配置・学習する■ +:位置→特徴量の推論を省略できるため、学習・推論高速化、精度向上の傾向■ +:グリッドを多重解像度にすることで省パラメータ化できる[2007.11571] Neural Sparse Voxel Fields より
Input encoding in NeRF: Parametric encodings● 補助的な学習可能パラメータを配置する方法も提案されている○ 代表例:空間を分割するボクセルグリッドの頂点に特徴ベクトルを配置・学習する■ Δ :重要なのは物体表面。多くのグリッドの特徴ベクトル(≒メモリ)は無駄[2007.11571] Neural Sparse Voxel Fields より
Input encoding in NeRF: Parametric encodings● 補助的な学習可能パラメータを配置する方法も提案されている○ 代表例:空間を分割するボクセルグリッドの頂点に特徴ベクトルを配置・学習する■ Δ :重要なのは物体表面。多くのグリッドの特徴ベクトル(≒メモリ)は無駄● →特徴ベクトルを sparse に保持することで効率化可能[2007.11571] Neural Sparse Voxel Fields より
Encoding によるレンダリングへの影響● グリッドの各頂点に特徴ベクトルを配置 →学習・推論高速化、精度向上● グリッドを多重解像度化 →省パラメータ化● グリッドをスパース化 →省パラメータ化
Encoding によるレンダリングへの影響● グリッドの各頂点に特徴ベクトルを配置 →学習・推論高速化、精度向上● グリッドを多重解像度化 →省パラメータ化● グリッドをスパース化 →省パラメータ化提案Hash table を用いてシンプル・汎用に実装
Encoding によるレンダリングへの影響● グリッドの各頂点に特徴ベクトルを配置 →学習・推論高速化、精度向上● グリッドを多重解像度化 →省パラメータ化● グリッドをスパース化 →省パラメータ化パラメータ数は「NN のパラメータ数+特徴ベクトルのパラメータ数」を表記提案Hash table を用いてシンプル・汎用に実装
Proposed: Multiresolution Hash Encoding● グリッドの各頂点に特徴ベクトルを配置 →学習・推論高速化、精度向上● グリッドを多重解像度化 →省パラメータ化● グリッドをスパース化 →省パラメータ化提案Hash table を用いてシンプル・汎用に実装
Proposed: Multiresolution Hash Encoding● 1. 多重解像度のグリッドを導入○ 多様なスケールの特徴を効率よく捉える○ 位置 x の評価時には周囲のボクセルグリッドの頂点を参照する
Proposed: Multiresolution Hash Encoding● 2. Hash table からグリッド頂点に対応する特徴ベクトルを参照○ 頂点の位置ベクトルを hash 関数によって擬似ランダムなインデックスに置き換え
Proposed: Multiresolution Hash Encoding● 2. Hash table からグリッド頂点に対応する特徴ベクトルを参照○ 頂点の位置ベクトルを hash 関数によって擬似ランダムなインデックスに置き換え○ Hash table からインデックスに応じた特徴ベクトルを参照
Proposed: Multiresolution Hash Encoding● 3. 位置 x の特徴ベクトルを線形補間
Proposed: Multiresolution Hash Encoding● 4. 各解像度の特徴ベクトルを連結して NN ヘ入力○ 追加の特徴ベクトルを導入することも可能( NeRF の場合視線の角度など)
Proposed: Multiresolution Hash Encoding● 1. 多重解像度のグリッドを導入● 2. Hash table からグリッド頂点に対応する特徴ベクトルを参照● 3. 位置 x の特徴ベクトルを線形補間● 4. 各解像度の特徴ベクトルを連結して NN ヘ入力
Proposed: Multiresolution Hash Encoding● グリッドの各頂点に特徴ベクトルを配置 →学習・推論高速化、精度向上● グリッドを多重解像度化 →省パラメータ化● グリッドをスパース化 →省パラメータ化○ 高解像度では hash table のサイズ T <グリッド頂点数→スパース化提案Hash table を用いてシンプル・汎用に実装
Implicit hash collision resolution● 高解像度では hash table のサイズ T <グリッド頂点数→スパース化○ →暗黙的にハッシュ衝突を許している● 実際にはレンダリングへの悪影響は少ない○ 低解像度:そもそもハッシュ衝突が少ない○ 高解像度:hash 関数によって、衝突は空間上でほぼランダムに発生する■ →頂点のペアが複数の解像度で衝突することはほとんどない○ 学習時:衝突した位置の両方が描画に有用(≒物体周辺)であることは稀■ →hash tableの特徴ベクトルに対して、物体周辺の学習が支配的になる
Hash Table size affects performance / quality tradeoffs● Hash table のサイズ T によるトレードオフ○ Large T:高品質、学習に時間がかかる、高メモリ○ Small T:低品質、学習高速化、省メモリ
Implementationtiny-cuda-nn フレームワークを用いて全体を実装:NVlabs/instant-ngp● 推論・勾配計算の速度向上のために hash table は半精度で保持● GPU キャッシュを有効に利用するために hash table は解像度ごとに評価● RTX 3090 の 6 MB L2 キャッシュを踏まえて、各解像度の特徴ベクトルの次元 F = 2 とした● その他詳細設定は論文を参照
Experiments● さまざまなタスクを高速に学習、高精度にレンダリング可能
Experiments: Performance & Quality (NeRF)● 既存手法よりも非常に高速に優れたレンダリングを学習可能● Ours: Hash は〜1 min 程度の学習で Ours: Frequency (5 min) より優れた性能○ → Hash table が学習高速化に貢献している
Experiments: Performance & Quality (SDF)● 既存の優れた手法( NGLOD)に匹敵● 物体表面にハッシュ衝突によると思われるアーティファクトが発生している
Discussion● ハッシュ関数の選定○ いくつか試した中では、本文内のものが最も優れていた○ 将来的には辞書学習アプローチも検討できる● ハッシュ衝突によるアーティファクト○ 特にSDFでは、ハッシュ衝突によると思われる粒状のアーティファクトが確認された○ → Lookup 時のフィルタリングなどによる対応が考えられる
まとめ・感想● まとめ○ さまざまなレンダリングタスクに利用できる multiresolution hash encoding を提案した○ tiny-cuda-nn フレームワークで全体を実装することでさらに高速化した○ 高速な学習と優れたレンダリング性能が確認された● 感想○ グリッド化やスパース化による改善を hash table によってシンプルに達成している■ さまざまなレンダリングタスクに導入しやすい点も◯○ ハッシュ衝突に対する hash table サイズのチューニングが難しそう○ 画像や 3D シーンを圧縮する技術としても今後期待したい
参考資料● Instant Neural Graphics Primitives with a Multiresolution Hash Encoding○ 本スライド内で記載のない画像は論文から引用● Real-time Neural Radiance Caching for Path Tracing | Research● Mip-NeRF ICCV2021輪読会スライド - Speaker Deck● プリミティブ (Direct3D 9 グラフィックス) - Win32 apps | Microsoft Learn● Zip-NeRF: Anti-Aliased Grid-Based Neural Radiance Fields arXiv 2023