軸屋敬介 | Keisuke Jikuya
Home
Blog
Note
Post
Ref-NeRF: Structured View-Dependent Appearance for Neural Radiance Fields
Ref-NeRF: Structured View-Dependent Appearance for Neural Radiance Fields
https://dorverbin.github.io/refnerf/
Aug 24, 2022
NeRF,
CVPR (2022)
概要
既存のNeRFは光沢のある表面の外観を正確に再現できない場合が多い
そこで、NeRFの視点から色を出力する箇所に手を加えたRef-NeRFを提案
鏡面反射の精度を大幅に改善した
アイデア
NeRFは座標を与えると、空間(Spatial) MLPが密度を出力し、方向(Directional) MLPが視点の方向に従った放射輝度(色)を出力する(下図)
鏡面では見る方向によって色が急激に変化するため、学習した方向しかうまくいかなく、鏡面反射を霧がかかったようにして偽造する
そこで、下図のようなネットワークを提案
Reflectionは法線ベクトルを使用することで鏡面反射の処理を行う
$\hat{\omega}_r = 2 (\hat{\omega}_o \cdot \hat{n} ) \hat{n} - \hat{\omega}_o$
$\hat{\omega}_o$はある点からカメラに向かう単位ベクトル
$\hat{n}$はその点での法線ベクトル
IDEは粗い素材の見え方がゆっくり変化し、滑らかな素材の見え方が急激に変化することに対応するためのIntegrated Directional Encoding
Dot productは視点と法線ベクトルの角度を考慮させるために存在
$\hat{n}\cdot\hat{\omega}_o$
IDEとDot productの出力、照明に対応するために空間MLPの出力$b$を方向MLPに入力して鏡面色$c_s$を得る
Toneで分離した拡散色と鏡面色$c_s$を組み合わせて放射輝度(色)を出力する
$c=\gamma (c_d + s \odot c_s)$
$c_d$は空間MLPが出力した拡散色
$\gamma$はRGBに変換し、値を0~1に収める関数
ペナルティ項
法線ベクトルのノイズ対策
$R_p = \sum_i \omega_i | \hat{n}_i - \hat{n}^{\prime}_i | ^2$
カメラから離れる裏向き法線対策
$R_o = \sum_i \omega_i \max (0, \hat{n}^{\prime}_i \cdot \hat{d})^2$
結果
Shiny Blender
Blender
garden spheres (PSNR)
一覧へ戻る