MLエンジニアへの道 #68 - NeRF

Last Edited: 10/11/2025

このブログ記事では、コンピュータビジョンにおけるNeRFについて紹介します。

ML

これまで、単一視点測量、エピポーラ幾何学、Structure from Motionに対応する、 MDE、ステレオマッチング、特徴追跡、構造と運動などの3Dコンピュータビジョンタスクを扱ってきました。 しかし、これまでの記事で一貫して言及されているように、これらのタスクは対応問題に関連する困難と限界に直面しています。 そこでこの記事では、3D再構築において対応問題を完全に回避する異なるアプローチを取る、 ボリューメトリックステレオに暗黙的対応する、深層学習対応手法Neural Radiance Fields(NeRF)を紹介します。

Radiance Fields

ボリューメトリックステレオは、3Dオブジェクトを3Dボクセルグリッド上にある、 色と透明度(r,g,b,αr, g, b, \alpha)を持つボクセルの集合として解釈し、 オブジェクトを撮影した画像と一致するように各座標でのボクセル特性を推論します。 ボリューメトリックステレオと同様に、3Dオブジェクトを色と密度(透明度)を持つ粒子や点の集合として解釈し、 画像と一致する点群を生成することもできます。ここで、 色は座標(x,y,zx, y, z)だけでなく角度(ψ,ϕ\psi, \phi)にも依存させることができ、 反射性、透明性、その他の材質の表面(煙やその他の拡散効果を含む)を効果的にモデル化できます。

Radiance fieldsは、3Dオブジェクトを点群としてモデル化することに基づくベクトル場であり、 座標と角度を色と密度にマッピングします:L:X,Y,Z,ψ,ϕr,g,b,σL:X, Y, Z, \psi, \phi \to r, g, b, \sigma。 (依存関係を反映するために、LLを色と密度のLc:X,Y,Z,ψ,ϕr,g,bL^c: X, Y, Z, \psi, \phi \to r, g, bLσ:X,Y,ZσL^{\sigma}: X, Y, Z \to \sigmaのような副成分にさらに分解することもできます。) 効率的に正しくradiance fieldsをモデル化できれば、 対応問題を明示的に解くことなく構築される効率的な代替3D表現となり、3D再構築とビュー・モーフィングに有用です。

ボリュームレンダリング方程式

Radiance fieldsを得た際は、ボリュームレンダリングを使用して画像をレンダリングできます。 これは、カメラ光線に沿ってradiance値を積分することで機能します。 具体的には、光線に沿った粒子の色を、それらの粒子の密度で重み付けして合計すれば良いです。 以下は、LσL^{\sigma}LcL^cから光線rrに対応する色(r)\ell(r)を生成するボリュームレンダリング方程式です。

(r)=tntfα(t)Lσ(r(t))Lc(r(t),D)dtα(t)=exp(tntLσ(r(t))dt) \ell(r) = \int_{t_n}^{t_f} \alpha(t)L^{\sigma}(r(t))L^c(r(t), D) dt \\ \alpha(t) = \text{exp}(-\int_{t_n}^{t} L^{\sigma}(r(t))dt)

ここで、r(t)r(t)は点ttでの光線rrに沿った座標を表し、DDは光線の単位ベクトル、 tnt_ntft_fは積分のカットオフ点に対応します。 したがって、α(t)\alpha(t)は開始点と点r(t)r(t)の間の粒子の透明度を表します。 その点まですべての粒子の密度がゼロであった場合、α(t)\alpha(t)は1となり、積分の結果に影響を与えません。 逆に、固体オブジェクトの粒子密度が無限大に設定された場合、 α(t)\alpha(t)は光線がオブジェクトの表面と交差した以降は常にゼロになります。 (密度ゼロの空の空間と無限密度の固体オブジェクトからなるこの単純なモデルは、 レイキャスティングと呼ばれ、多くのレンダラーの基礎となっています。)

(r)i=1Tαi(1eLσ(Ri)δi)Lc(Ri,D)αi=exp(j=1i1Lσ(Rj)δj)δj=ti+1ti \ell(r) \approx \sum_{i=1}^{T} \alpha_i(1-e^{-L^{\sigma}(R_i)\delta_i})L^c(R_i, D) \\ \alpha_i = \text{exp}(-\sum_{j=1}^{i-1} L^{\sigma}(R_j)\delta_j) \\ \delta_j = t_{i+1} - t_i

ボリュームレンダリング積分は複雑で扱いが困難になる可能性があるため、 上記のような離散サンプルの和でレンダリング積分を近似できます。 画像を再構築する際は、まずピクセルn,mn, mを選択し、 これをカメラキャリブレーションで得られたカメラ座標OcamO_{\text{cam}}とカメラ行列KcamK_{\text{cam}}を使用して対応するカメラ光線方向DDに変換できます。 (O=OcamO=O_{\text{cam}}D~=Kcam1[n,m,1]TOcam\tilde{D}=K_{\text{cam}}^{-1} * [n, m, 1]^T - O_{\text{cam}}D=D~/D~22D=\tilde{D}/||\tilde{D}||_2^2) 次に、対応するカメラ光線に沿ってR1,R2,...,RT{R_1, R_2, ..., R_T}をサンプリングし(R=O+tDR = O + tD)、 上記の積分の近似を使用してピクセルに対応する光線の\ellを取得できます。 ここで重要な点は、レンダリングプロセス全体を微分可能にできることであり、 これは勾配降下法を使用してパラメータ化された関数LθL_{\theta}LLに適合させる可能性を示唆しています。

Neural Radiance Fields

そこで勾配降下法を使用して、かなり複雑な関数を近似でき、長らくコンピュータグラフィックスに使用されてきたGPUで効率的に実行できるニューラルネットワークを訓練できます。 具体的には、MLPをLθL_{\theta}とし損失(n,m)^(n,m)22\sum ||\ell(n, m) - \hat{\ell}(n, m)||_2^2を基に訓練してLLを近似できます。 ここで、\ell^\hat{\ell}は画像からの真値の色と、LθL_{\theta}とボリュームレンダリング方程式を使用し予測した色です。 オブジェクトやシーンのradiance fieldにニューラルネットワークを適合させるこのアプローチはNeural Radiance Fields(NeRF) と名付けられ、 NeRFは再構築と新規ビュー合成のためのコンパクトで暗黙的な3D表現の生成において大きな成功を収めました。

しかし、NeRFは入力の低次元性とサンプリングに関する課題のため、上記で説明した最も単純な方法では実装していません。 5D入力の次元性と分離可能性を向上させ、座標を知的にサンプリングするために、 NeRFは正弦波位置エンコーディングと階層的ボリュームサンプリングを導入しています。 位置エンコーディングはTransformerで使用されているものとほぼ同一であり、 アブレーションによりシーンの細かい詳細の捕捉に貢献することが確認されています。 階層的ボリュームサンプリングは、座標を均等にサンプリングする粗い(coarse)ネットワークと、 粗いネットワークによって予測された高密度領域周辺をサンプリングする細かい(fine)ネットワークの2つのネットワークを最適化することで実行され、 最適化には損失(n,m)^c(n,m)22+(n,m)^f(n,m)22\sum ||\ell(n, m) - \hat{\ell}_c(n, m)||_2^2 + ||\ell(n, m) - \hat{\ell}_f(n, m)||_2^2を使用します。 これもアブレーションにより性能向上への効果が確認されています。

4つの単純な形状を持つランベルト面オブジェクト(上半球でサンプリングされた視点からの512×512512\times512ピクセル)を含むDeep Voxelsデータセットと、 8つの複雑な形状を持つ現実的な非ランベルト面オブジェクト(800×800800\times800ピクセル)を含むカスタムデータセットでNeRFを訓練した後、 ニューラル3D表現と新規ビュー合成の他のアプローチ(Neural Volumes(NV)、Scene Representation Networks(SRN)、 Local Light Field Fusion(LLFF))といくつかの評価指標を使用して比較されました。 結果は、ほぼすべての指標でこれらの他のアプローチを上回ったことを示しました。 指標は、予測画像と真値を比較するPeak Signal-to-Noise Ratio(PSNR)、 輝度、コントラスト、構造を比較するStructural Similarity Index Measure(SSIM)、 知覚的類似性と現実性を比較するLearned Perceptual Image Patch Similarity(LPIPS)が使用されました。

また、NeRFはシーンを表現するのにネットワーク重みを約5MBしか必要とせず、これは入力画像よりも小さいです。 (ボクセルグリッドを生成するLLFFは、現実的なシーンに15GB以上を必要とします。) しかし、NeRFには必然的にいくつかの課題があります。NeRFは通常、GPUで一つのシーンを訓練するのに約1〜2日かかり、 サンプルサイズとハードウェアによっては、リアルタイム推論には十分効率的でない場合があります。 また、ボリュームレンダリングには光の反射の物理学をモデル化しないという固有の限界があり、 観察された通りに影と反射を描画するだけです(ただし、この限界はNeRF特有のものではなく、 NeRFはそもそもそれを考慮するように設計されていません)。

これらの課題があるにもかかわらず、NeRFは比較的シンプルなアプローチと高い性能でこの分野に大きな貢献をもたらし、 ニューラル3D表現における多くの研究の出現につながりました(言語インターフェースのためにCLIPを組み合わせるLeRFや、 テキスト指示でNeRFシーンを反復編集するためにInstructPix2Pixを使用するInstruct-NeRF2NeRFなど)。 NeRFやその他のNeRF関連技術の作成、訓練、テストのためのシンプルなAPIであるNerfstudioのリリースも、 NeRFの影響のアクセシビリティと重要性に大きく貢献しています。

結論

本記事では、ニューラル3D表現と新規ビュー合成の研究に大きな貢献をしたNeRFとそれに伴うradiance fields、 ボリュームレンダリングを紹介しました。NeRFのさらなる情報や実装の詳細は、 以下に引用されたリソースやその他の関連リソースをチェックすることを強くお勧めします。

リソース