CG×ML #5 Radiative Backpropagation [Devlog #021]
Table of Contents
放射逆伝搬(Radiative Backpropagation)
放射逆伝搬と高速微分可能レンダリング
ここでは放射逆伝搬と高速微分可能レンダリングについての論文1を理解する
Merlin Nimier-David, Sébastien Speierer, Benoît Ruiz, and Wenzel Jakob. 2020. Radiative Backpropagation: An Adjoint Method for Lightning-Fast Differentiable Rendering. ACM Trans. Graph. (SIGGRAPH) 39, 4 (July 2020).
微分可能レンダリングとは
フォーワードレンダリング(Forward Rendering)とは
フォーワードレンダリングは、シーンの説明(オブジェクトの形状、外見、位置など)を取り、それを美しくリアルなイメージに変換する
物理ベースのレンダリングプロセス全体をシーンパラメータ$x$の関数$f$として示す
微分可能レンダリング(Differential Rendering)とは
画像を入力してそのシーンを復元したい場合、関数$f$を単に反転させるにしても複雑すぎる
そこで、代わりに勾配を用いて、勾配ベースの方法で$x$の最適化を行う
ここでは、レンダリング関数$f$のシーンパラメータ$x$に対する偏微分を効率的に推定する問題に焦点を当てている
既存研究(Related work)
微分可能レンダリングは近年注目を集めており、その応用については発展途上中である
すでにポーズ推定、マテリアルデザイン、マテリアルと照明の同時推定、ボリュームの逆レンダリングなどに使用されてる
微分可能レンダリングには、レンダリング自体がどのように行われるかに基づいて3つの主要なアプローチがある
ラスタライゼーション(Rasterization)
最も人気のあるアプローチはラスタライゼーションに基づき、これは非常に高速であるが、レンダリングできる外観の範囲は、特にグローバルイルミネーションの欠如により限られている
ニューラルレンダリング(Neural rendering)
多くの最近の研究では、ニューラルネットワークから直接画像をレンダリングすることを可能としたが、形状や素材のエンコード方法を含め、ほぼすべてを一から解明しなければならない
物理ベースレンダリング(Physically based rendering)
不連続性を含む完全な物理ベースのレンダリングシミュレーションを通じて微分が可能であることを示す手法が提案されている(2018年)
また、自動微分をサポートするレンダリングに対応した微分可能レンダラーが提案手法に追加された(2019年)
課題設定
ティーポットの写真を入力とし、ただの一定の暗い灰色のテクスチャから深い模様のテクスチャを復元したいとする
最初のステップは、現在のレンダリングが目標からどれだけ離れているかを定量化する目的関数を定義することになる(ここでは、単に画像ごとの距離)
パラメータ$x$を最適化することが目的となる(ここでは、ティーポットのテクスチャ)
この最適化問題を解決するために、目的関数の導関数が必要になる
連鎖則(Chain rule)
パラメータ$x$に対して、連鎖則を適用する
目的関数はレンダリング方法から計算される
最初の項は、目的関数に対する各ピクセルの感度を表す画像になる(目的関数を最小限に抑えるためにピクセルをどのように変更するべきかを教えてくれる)
複雑な光輸送シミュレーションであるため、2番目の項は難しい
シーンパラメータに対するレンダリングのピクセルの導関数を取得するにはどうすればよいか?
そこで自動微分を利用する
自動微分(Automatic differentiation)
フォーワードモード自動微分(Forward-mode autodiff)
変数(パラメータ)から始め、最初の関係を出力まで伝搬させる
これはすべての単一変数に対して行う必要がある
図では変数の数は3つだが、実際には数十万もの入力$x$があると想定される
逆モード自動微分(Reverse-mode autodiff)
一度計算を行い、変数間の依存関係をグラフデータ構造に記録する(ノードが変数を表し、エッジが変数間の計算上の依存関係を示す)
計算が終了した後、出力の摂動(小さな変化)を入力変数まで逆伝搬させる(これによって、出力変数の変化が入力変数にどのように影響を及ぼすかを計算することができる)
この逆モード自動微分は、一度の逆伝搬で全ての入力変数に関する勾配を同時に計算できるため、出力変数が少なく入力変数が多い場合に効率的である(ニューラルネットワークのバックプロパゲーションは、この逆モード自動微分の一例)
自動微分ベースの微分可能レンダリング(Autodiff-based differentiable rendering)
パラメータ$x$、レンダリングアルゴリズムがわかっているので、逆モード自動微分を行うことができる
しかし、シミュレーションのサイズが少し大きくなるとグラフに使うメモリ使用量が爆発的に増加してしまう
ここでの各エッジは、何百万ものエントリを持つGPUバッファを保持している
光輸送シミュレーションの性質により、シーンのどの部分でも他の部分に影響を与える
放射線逆伝搬(Radiative Backpropagation)
代わりに、放射線逆伝搬を使用して、レンダリングアルゴリズムのブラックボックスを開き、その構造を活用する
特別なタイプの光輸送シミュレーションとして再構成して、これらの勾配を推定する
測定方程式(Measurement equation)
フォーワードレンダリングプロセスは、測定方程式によって説明できる
ピクセル $k$ の値 $I_k$ は、その重要度関数(Sensitivity of sensor(importance)) $W_k$ と入射放射関数(Incident radiance) $L_i$ の内積をとり、それを$A×S^{2}$のレイスペースで積分することで求められる
レンダリングプロセスにおける重要度(センサーの感度)は、カメラや視点に対して表面がどの位置にあるかによって異なり、光がセンサーに到達する方向によっても異なる
これにより、視覚的に重要な部分にリソースを集中させ、より現実的な処理コストでレンダリングすることを可能にする
$W_k$:カメラがシーンの特定部分の入射光にどれだけ影響を受けるかを示す重要度関数
$L_i$:どの方向からどれだけの光が来ているかを示す入射放射関数
$A$:レイトレーシングにおいて光線がカバーするオブジェクトの平面領域
$dp$:平面$A$における点$p$の積分
$S^2$:レイトレーシングにおいて光線の方向の分布を示す立体角
$dω^⊥$:点$p$における投影立体角に対応する積分
微分測定方程式(Differential measurement equation)
シーンパラメータ$x$に対する画像ピクセルの勾配を計算したいので、両辺を微分する
静的センサの場合 $\partial_x W_k=0$
特に可視性に関して積分に不連続性がない
左辺の微分はピクセル $k$ での微分測定(Differential measurement at pixel k)、右辺の微分は微分入射(Differential incident radiance)と呼ぶ
微分入射 $\partial_x L_i(p,ω)$ はどう振る舞い、どう散乱するのか?
レンダリング方程式 $L_o$ において、 $L_e$ はその点で発せられた光を表し、 $L_i$ はその点に他から届いた光、 $f_s$ は反射率を表す


$\partial_x$ :シーンパラメータ $x$ に対する微分
右辺第一項の微分は、時間パラメータが変化する時に炎がどのように変化するかによるもの
右辺第二項の微分は、BSDFのパラメータが変化する時に放射される光がどのように変化するかによるもの
右辺第三項の微分は、シーンのどこか他の場所で微分放射されて伝搬される光によるもの



ティーポットのテクスチャでの例
ティーポットのテクスチャをターゲット画像にあわせるために最適化する例を考える
ティーポットのテクスチャの一部に小さな変更を加えると、赤い部分で微分放射が起こる
ここで、ランプの強度が変わっていたら、そこでも微分読み取りが起こる
ティーポットから放出される微分放射はシーン内で散乱する
ここで、この微分領域の量は重み付けされる
例えば、ティーポットが明るく照らされている場合、(色の変化は大きいため)重要になり、暗い角に置かれている場合、変化は通常のフォワードレンダリングではあまり重要にならない
対称性を利用する(Exploiting the symmetry)
光輸送(Light transport)において、光源から放射される光と重要度との間には対称性があり、これにより、パストレーシング、レイトレーシング、双方向パストレーシング、または任意の組み合わせを実行することができる
提案手法(放射線逆伝搬)で主張するのは、微分放射(Differential radiance)と随伴放射(Adjoint radiance)との間に同じ対称性があるということ
微分放射はシーン内のパラメータが変化する時に放射され、随伴放射は目的関数を局所的に改善するために放射関数をどのように変化させるべきかを表す
この対称性を利用することで、すべての単一変数で微分放射を伝搬する必要がなくなる
放射線逆伝搬の理論
カメラから勾配画像(随伴放射)をシーンに投影する
赤で表す微分放射と青で表す随伴放射の間の積が、目的関数に直接影響を与える
※動画を参照すべし
画像ピクセルの勾配をシーンパラメータに関連付けるのが難しかった連鎖則において、提案手法では、複雑さを取り除き、(対称性から導いた)トランスポートシミュレーションに置き換えた
例で挙げたテクスチャ最適化の場合、BSDFの勾配はパラメータに対して簡単に計算できる(自己完結した微分シェーダーとして考えることができる)
アルゴリズム
微分放射(Differential radiance)のためのパストレーシング
アルゴリズムは非常にシンプルである
シーンパラメータの初期値から始め、現在の状態の通常のレンダリングを行い、プライマルレンダリングと参照画像から目的関数 $g(y)$ を計算する
レンダリング $y$ の各ピクセルに対する目的関数の感度を表す $\delta_y$ を計算する
随伴微分放射(Adjoint differential radiance)を各ピクセルを通して追跡し、微分放射(Differential radiance)を集めることでシーンに伝搬させる
最後に、勾配 $\delta_x$ を得て、シーンパラメータを更新し、次のイテレーション(繰り返し処理)を行う
後半部分を詳細に見る
随伴放射は最初のレイによってカメラからシーンに輸送され、微分可能なオブジェクト(ここではテーブル)に遭遇すると、次の方向からBRDFをサンプリングし、入射勾配を推定する
BSDFへの変更は、それが受ける光の量に基づいて重要かどうかが異なるため、オレンジ色の再帰的なレイを使って入射勾配を推定する
黒色二重レイで表される随伴放射を入射勾配と掛け合わせ、BSDFパラメータに伝播させる
このアプリケーションでは、事前にコンパイルされた自動微分シェーダーを使用する
最終的に、微分可能なパラメータを持つオブジェクトに遭遇するたびにこの伝播を繰り返す
このバックドロップアルゴリズムは、うまく機能し偏りがないが、実際のところ場合によっては二次の複雑さをもたらす再帰的な束縛がある
偏ったバリアント(Biased variants)
(省略)
実装(Implementation)
高速微分可能レンダリング(Lightning-fast differentiable rendering)
ベースラインのMitsuba2は、ループ内の自動微分を使用してGPU上で微分可能レンダリングを実装しており、計算グラフの維持コストを分散させ、一度に大きなレートで伝播させる
実行時間はGPUメモリトラフィックに依存する
放射線逆伝播(Radiative Backpropagation)を用いれば、オートメーションの必要がないため、光源とBSDFのための微分シェーダーを事前にコンパイルし、OptiXなどで動作するMegakernelにすべてを組み立てることができる
Mitsubaを持ちれば、手書きのコードをほとんど使わずに自動変換することができる
結果(Results)
等時間実験を行う
表面テクスチャの最適化(Surface texture optimization)
ガラスに閉じ込められた地球儀のテクスチャを最適化する
すべての光は複数のガラス層や鏡を通ってオブジェクトまで届くため、非常に複雑である
実行すると、ガラスや鏡を通して見えるすべての部分はすぐに新しい解に変化する
どのようにしても見えない部分は、初期状態のままになる
※動画を見るべし
提案手法と既存手法(Autodiff-based)の比較
最適化(目的関数の最小化)を反復回数で比較した結果と実行時間で比較した結果
提案手法が比較的短時間で収束していることがわかる
3Dプリントアプリケーションの実験では、プラスチック板(拡散の影響がある)の表面で望ましい見た目のテクスチャを再現するように最適化する
提案手法が比較的短時間で収束していることがわかる
まとめ
結論
- 提案手法によって、微分可能レンダリングが光輸送シミュレーションとして再構成されたことを示した
- 既存手法に比べて、メモリ制限を完全に解消し、大幅なスピードアップを実現した
展望
- 既存のレンダリング技術(path guiding, bidirectional path tracingなど)を適応させることによって、新しい解釈を構築することが興味深い
- 視認性に関連した勾配のサポートを追加したい
以上
-
Merlin Nimier-David, Sébastien Speierer, Benoît Ruiz, and Wenzel Jakob. 2020. Radiative Backpropagation: An Adjoint Method for Lightning-Fast Differentiable Rendering. ACM Trans. Graph. (SIGGRAPH) 39, 4 (July 2020). ↩︎