CG×ML #1 微分可能レンダリング [Devlog #010]

Table of Contents

微分可能レンダリング(differential rendering)


微分可能レンダリングとは

微分可能レンダリングは、コンピュータグラフィックスと機械学習を組み合わせた技術であり、2D画像から3D空間のパラメータを推定することを目的としている

通常のレンダリングでは、3Dモデル、カメラ位置、ライティング条件などのパラメータを利用して2D画像を生成するが、微分可能レンダリングはこのレンダリングのプロセスを逆に行う

2D画像から3D情報への変換の精度を向上させるために、レンダリング画像と入力画像(教師データ)との差分を計算し、ネットワーク全体を学習する手法として使用される
この場合、教師画像データはカメラパラメータ(撮影された位置と方向)がわかっているものとし、レンダリングの際にはそのパラメータと同じような仮想カメラを設定してレンダリング画像を生成することになる

特に3次元形状の教師データが手に入らない場合に効果的で、さまざまな物体カテゴリにも適応可能である

一方で、3Dデータ(3次元形状やポーズなど)を機械学習タスクの教師データとして用いる学習は"3D supervision"と呼ばれる
こちらは3D教師データを大量に用意しなければならないという点であまり現実的な選択肢ではない

微分可能レンダラとは

レンダリング画像における入力画像(教師データ)との差分を誤差逆伝播させてニューラルネットを学習させるには、レンダリング箇所が微分可能である必要がある

つまり、レンダリング画像と入力画像(教師データ)との差分からパラメータの更新ができる(ロスからBackwardできる)レンダラを微分可能レンダラという

勾配ベースの最適化アルゴリズム(SGD、Adam等)で3Dシーンを最適化できるレンダラ

最適化する3Dシーンの例
頂点位置
カメラポーズ(姿勢)
テクスチャ
ライト
その他、レンダリングに関する概念ほぼ全て

参考:微分可能レンダラのつくりかた
参考:ニューラルネット3D表現に対する微分可能レンダラー
参考:微分可能レンダリング

3次元構造の表現方法(研究発展中)

  • ボクセル(Voxel)
  • 点群(Point)
  • メッシュ(Mesh)
  • +α ニューラルネットワーク表現(ニューラル場)
  • +α 点群->ガウス
メッシュ(Mesh)

メッシュ表現を用いる場合は、何らかの初期形状を仮定して、それを変形させることで3次元構造の再構成を行う手法が主流である

レンダリング方式(研究発展中)

  • ラスタライズ
  • レイトレーシング
  • +α Radiance Field
  • +α 微分可能ガウスラスタライズ

ラスタライズは視界の範囲だけ、レイトレーシングは視界範囲外の考慮してレンダリングする

参考:レイトレーシングとラスタライズの違い - NVIDIA

ラスタライズのアプローチ

メッシュの微分可能ラスタライズには2つのアプローチがある

  • レンダリング画像を変えずに擬似的な勾配を計算(逆伝搬を工夫)
  • レンダリング画像をぼやかすことで最適化に有用な勾配を得る(順伝搬を工夫)
レイトレーシングのアプローチ

物理ベース微分可能レンダリング

計算速度が遅く、深層学習(機械学習)と組み合わせるのは難しいのが現状

Neural Radiance Field(NeRF)のアプローチ

レンダリング方程式(詳細)を逆問題として解くが、ピクセルの色の決定にボリュームレンダリングを用いる

NeRF(neural radiance field)のボリュームレンダリングは微分可能(特に工夫は必要ない(自動微分でオーケー))

レンダリング方程式を放射輸送方程式に戻し、ニューラルネットワークで表される3Dシーン(ベクトル場)と微分可能なボリュームレンダリング関数で解く

ニューラル場(Neural Fields)の研究はNeRFの登場以前からも行われており、NeRFはDeepSDFのテクニックを継承している

陰関数とCGの関係

従来のCGは離散的な頂点定義によって成り立っているのに対して、陰関数(Implicit Function)によるCGは連続的な数学定義によって成り立っている

陰関数で0の値をとるサーフェスを定義し、距離場(SDF、TSDF、DeepSDF)はそのサーフェスからの距離を定義する

関数でCGが表現できる!(密に点群を用意せずとも関数でCGが表現できる点で最近注目されている)

参考:【メタサーベイ】Neural Fields

NeRFにはがなく、透明体を通る光の重ね合わせによって表現している(陰関数は面=0と定義している点で異なる)

つまり、NeRFは放射輝度場(Radiance Field)を復元する手法

参考:[DL輪読会]Neural Radiance Field (NeRF) の派生研究まとめ

Signed Distance Field(SDF)のアプローチ
Signed Distance Field(SDF)とは

日本語に訳すと"符号付き距離場"であり、場にある物体との距離を表す

SDFはレイトレーシング手法の1つであるレイマーチで使われる

参考:Signed Distance Fieldとは?
参考:[GLSL] レイマーチング入門 vol.1
参考:レイマーチングのすすめ
参考:シェーダだけで世界を創る!three.jsによるレイマーチング

微分可能ガウスラスタライズのアプローチ(Gaussian Splatting)

手順

  • 3次元点群の推定
  • 点群からガウスへの変換(ラスター化された単一のガウス分布への変換)
  • SGDによる学習
    • 微分可能ガウスラスタライズを使用してラスタライズ
    • ラスタライズ画像とGrandTruth画像の差分からロスを計算
    • ロスに応じてガウスパラメータを更新
    • 高密度化とプルーニング
      • 特定のガウスに対して勾配が大きい場合
        • ガウスが小さい場合はクローンを作成
        • ガウスが大きい場合は分割
      • ガウスのアルファが低すぎる場合は削除
  • ラスタライズ
    • カメラ視点から各ガウスを投影
    • ガウス分布を深さ順に並び替え
    • ピクセルごとに各ガウスを前から後ろに繰り返しそれらをブレンド

現状、既存のレンダリングパイプラインと互換性がない

参考:3D Gaussian Splatting の概要

ガウス分布とは

正規分布(ガウス分布)は"normal distribution"からもわかるように、“ありふれた"確率分布である(自然界や人間の行動、性質など様々な現象に対してよく当てはまる)

参考:正規分布の分かりやすいまとめ
参考:正規分布の密度関数を意味的に理解する
参考:中心極限定理

微分可能レンダラの例(ライブラリ)

Mitsuba(以下の内容はMitsuba3)
表現方法 レインダリング
メッシュ レイトレーシング

Mitsuba3の詳細

公式ドキュメント
GitHubリポジトリ

Mitsuba3はスイス連邦工科大学ローザンヌ校(EPFL)で開発された順方向逆方向の光輸送シミュレーションのための研究指向のレンダリングシステム

基礎となる実装とデータ構造を変換して、さまざまな異なるタスクを実行できる

just-in-timeコンパイラのDr.Jitを基盤として構築されている

Dr.JitのGitHubリポジトリ

Mitsuba3の主な特徴はこちら

CG×ML #2 勾配ベースの最適化(Mitsuba3) [Devlog #011]
CG×ML #3 DRを可能にするMitsuba3の中身 [Devlog #012]

nvdiffrast
表現方法 レインダリング
メッシュ ラスタライズ
PyTorch3D
表現方法 レインダリング
メッシュ ラスタライズ

参考:微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解〜
Differentiable Rendering: A Survey(微分可能レンダリングのサーベイ論文)