NeRF の論文解説
요약
NeRF(Neural Radiance Field)는 소수의 정지 이미지로부터 임의의 시점에서 고품질의 새로운 이미지를 합성하는 기술입니다. 이 방법은 3D 공간을 신경망(MLP)에 암묵적인 연속 함수로 표현하고, 볼륨 렌더링 기법을 사용하여 색상과 밀도를 계산합니다. 특히 위치와 방향 정보를 분리하여 처리함으로써, 거울 반사 같은 시선 의존적 외관까지 정확하게 포착할 수 있습니다. 초기 NeRF는 Coarse/Fine 네트워크를 사용하고 Positional Encoding으로 고주파 디테일을 표현하며, 볼륨 렌더링을 통해 미분 가능한 방식으로 이미지를 생성합니다. 이 기술은 높은 품질의 결과를 보여줬으나, 학습 및 추론 속도가 느리고 동적 장면이나 일반화에 어려움이 있다는 한계를 가집니다.
핵심 포인트
- NeRF는 3D 공간을 MLP를 이용해 연속 함수로 표현하는 Novel View Synthesis 기법이다.
- 위치(x, y, z)와 방향($ heta, ext{φ}$) 정보를 분리하여 처리함으로써 시선 의존적 외관(예: 거울 반사)을 효과적으로 모델링한다.
- Positional Encoding은 MLP가 고주파 디테일을 학습할 수 있도록 입력 데이터를 고차원 공간으로 매핑하는 핵심 기술이다.
- 볼륨 렌더링 공식($C(r)$)을 사용하여 레이를 따라 색상과 밀도를 적분하며, 이 과정이 미분 가능하여 최적화에 활용된다.
- 초기 NeRF는 속도와 일반화가 주요 한계였으며, 이후 Instant-NGP나 Gaussian Splatting 같은 후속 연구들이 이를 개선하고 있다.
NeRF の論文を読み解く
概要
NeRFとは少数の静止画像から、任意の視点の新規画像を高品質に合成する手法(Novel View Synthesis)。シーンを 5 次元の連続関数として MLP に暗黙的に表現し、古典的なボリュームレンダリングで画像を生成する。
手法・アーキテクチャ
- シーン表現(Neural Radiance Field)
シーンの姿勢や向きを次の 5D 関数として表現:
F_θ: (x, y, z, θ, φ) → (r, g, b, σ)
| 入力 |
説明 |
(x, y, z) |
3D 空間座標 |
(θ, φ) |
視線方向(極座標) |
| 出力 |
説明 |
(r, g, b) |
視線依存の放射輝度(色) |
σ |
体積密度(位置のみに依存) |
密度 σ
は位置のみから計算し、色は位置+視線方向から計算することで、
鏡面反射などの視線依存な外観を表現しつつ、幾何学的な一貫性を保つ。
- ネットワーク構造
Positional Encoding(x,y,z)
↓
[FC(256) + ReLU] × 4 層
...
- 全結合層 8 層、各 256 ユニット、ReLU 活性化
- 5 層目に入力
(x,y,z)
を skip connection で結合
- 視線方向は 8 層目以降のみに入力(密度と色の独立性を保つ)
- Positional Encoding
MLP は低周波な関数しか学習できないため、入力を高次元空間にマッピングする:
γ(p) = (sin(2⁰πp), cos(2⁰πp), sin(2¹πp), cos(2¹πp), ..., sin(2^(L-1)πp), cos(2^(L-1)πp))
| 入力 |
L の値 |
出力次元 |
| 位置 (x,y,z) |
10 |
60 次元 |
| 方向 (θ,φ) |
4 |
24 次元 |
これにより、細かいテクスチャや形状の高周波成分を正確に表現できる。
- ボリュームレンダリング
カメラからレイ r(t) = o + td
を飛ばし、期待色を積分で計算:
C(r) = ∫[t_n → t_f] T(t) · σ(r(t)) · c(r(t), d) dt
T(t) = exp( -∫[t_n → t] σ(r(s)) ds ) (透過率)
離散化した実装:
Ĉ(r) = Σᵢ Tᵢ · (1 - exp(-σᵢδᵢ)) · cᵢ
Tᵢ = exp( -Σ_{j<i} σⱼδⱼ )
δᵢ = t_{i+1} - tᵢ (サンプル間距離)
このレンダリング式は微分可能なので、損失からそのまま逆伝播できる。
- 階層的サンプリング(Coarse / Fine)
レイ上の無駄なサンプリングを減らすため、2 段階のネットワークを使う:
- Coarse ネットワーク: レイ上に均一に Nc=64 点をサンプリング
- Fine ネットワーク: Coarse の密度分布を PDF として、高密度領域に追加で Nf=128 点をサンプリング
損失は両ネットワークの出力で計算:
L = Σᵣ [ ‖Ĉ_c(r) - C(r)‖² + ‖Ĉ_f(r) - C(r)‖² ]
Fine ネットワークの推論時は Coarse + Fine の全 192 点を使う。
実験結果
データセット
| データセット |
内容 |
| NeRF Synthetic (Blender) |
8 種の合成オブジェクト(360 度撮影) |
| LLFF |
実写の前向きシーン 8 種 |
定量評価(NeRF Synthetic)
| 手法 |
PSNR ↑ |
SSIM ↑ |
LPIPS ↓ |
| SRN |
26.05 |
0.846 |
0.250 |
| NV (Neural Volumes) |
28.40 |
0.921 |
0.160 |
NeRF(提案) |
31.01 |
0.947 |
0.081 |
NeRF は全手法で最高スコアを達成。特に LPIPS(知覚的類似度)で大幅に改善。
限界・今後の課題
現時点での主な制限
| 制限 |
内容 |
学習速度 |
1 シーンあたり 1〜2 日(V100 GPU 1 枚)。リアルタイム利用不可 |
推論速度 |
1 画像あたり約 30 秒。インタラクティブ用途には不向き |
シーン特化型 |
1 つの NeRF が 1 シーンのみ表現。異なるシーンへの汎化なし |
静的シーンのみ |
動的物体・動く人物は扱えない |
カメラポーズ必須 |
事前に SfM(例:COLMAP)で正確なカメラ姿勢が必要 |
固定照明 |
照明変化や時間帯の変化には対応しない |
明示的な形状なし |
メッシュや点群といった明示的な幾何学表現を出力しない |
今後の方向性(論文より)
- 汎化: 複数シーンをまたいで汎化できるモデルへの拡張
- 動的シーン: 時間軸を扱える NeRF の開発
- 高速化: リアルタイム推論を可能にする手法の探索
- カメラ姿勢推定の統合: SfM への依存を減らす
補足: これらの課題は後続研究で多く解決されており、特に Instant-NGP(学習数秒〜数分)、Nerfacto、3D Gaussian Splatting などが代表的な発展手法として知られている。
実装のポイント(エンジニア向け)
- 공식 구현: nerf-pytorch (비공식 PyTorch 포팅), 공식 TF 구현
- 입력은 각 시나의 이미지 + COLMAP로 추정된 카메라 내외 파라미터
- Positional Encoding 은 FourierFeature 와 동등한 생각방식
- Fine 네트워크는 Coarse 의 가중치를 계승하지 않고 독립적으로 학습
NeRF의 발전 방법론
원저 NeRF 가 겪었던 과제 (속도, 동적 시나리오, 일반화, 대규모화) 를 축으로, 많은 후속 연구가 발전하고 있다.
- 고속화 방법론
Instant-NGP (2022, Müller et al., SIGGRAPH 2022)
| 항목 |
내용 |
해결한 과제 |
학습에 12 일 걸리는 속도 문제 |수 분, 실시간에 가까운 추론 |
주요 아이디어 |
Multi-resolution Hash Encoding 으로 공간을 희소한 해시 테이블로 저장하고 MLP 를 극소화 |
속도 |
학습 수 초
트레이드오프 |
해시 충돌에 의한 일부의 아티팩트 |
원 NeRF 의 MLP 가 모든 공간 정보를 가중치로 밀어넣는 반면, Instant-NGP 는 MLP 의 역할을 최소화하고, 공간적인 특징을 해시 테이블로 외부하는 설계.
TensoRF (2022, Chen et al., ECCV 2022)
| 항목 |
내용 |
해결한 과제 |
학습 속도와 메모리 효율성 |
주요 아이디어 |
3D 보кс 그리드를 행렬·벡터의 텐소 분해로 표현 |
속도 |
Instant-NGP 와 동등. NeRF 의 약 30 배 고속 |
트레이드오프 |
대규모 시나리오에서는 메모리 사용량이 증가 |
Mip-NeRF (2021, Barron et al., ICCV 2021)
| 항목 |
내용 |
해결한 과제 |
원거리·근거리에서의 아일리어싱 (기어·흐림) |
주요 아이디어 |
레이 (선) 대신 코너 (기둥체) 로 샘플링하고, 적분 범위를 Gaussian 으로 근사 |
효과 |
멀티스케일한 시나리오에서도 고품질의 렌더링 |
- 동적 시나리오 대응
D-NeRF (2021, Pumarola et al., CVPR 2021)
| 항목 |
내용 |
해결한 과제 |
움직이는 물체의 표현 |
주요 아이디어 |
시간 t 를 입력에 추가한 변형장 네트워크 (Deformation Field) 와 정적인 Canonical NeRF 를 조합 |
제한 |
단일 물체의 단순한 움직임에만 제한. 복잡한 시나리오는苦手 |
변형장: Ψ_t(x) → Δx (각 시간에서의 좌표 오프셋)
Canonical NeRF: F(x + Δx, d) → (c, σ)
Nerfies (2021, Park et al., ICCV 2021)
| 항목 |
내용 |
해결한 과제 |
인물·얼굴 등의 비강체 변형 |
주요 아이디어 |
D-NeRF 와 동일한 변형장을, 탄성 정규화 (elastic regularization) 로 제약 |
용도 |
스마트폰 동영상에서 인물의 자유시점 영상을 생성 |
- 조명 변화·외부 대응
NeRF in the Wild (NeRF-W, 2021, Martin-Brualla et al., CVPR 2021)
| 항목 |
내용 |
해결한 과제 |
인터넷 수집 이미지 (조명·폐쇄·노출이 불일치)에서의 학습 |
주요 아이디어 |
각 이미지에 잠재 코드 (appearance embedding) 를 할당하고, 조명 변화를 흡수. 동적인 폐쇄물 (인 등) 을 별도 네트워크로 모델링 |
용도 |
관광지의 사진군 (다른 시간·날씨) 에서의 3D 복원 |
Block-NeRF (2022, Tancik et al., CVPR 2022)
| 항목 |
내용 |
해결한 과제 |
도시 규모의 대규모 시나리오 (단일 NeRF에서는 표현 용량이 부족) |
주요 아이디어 |
공간을 블록으로 분할하고, 각 블록을 독립적인 NeRF 로 모델링. 렌더링時は 주변 블록을 합성 |
용도 |
자율운전 데이터에서 도시 규모의 맵 생성 |
- 일반화·소수 샷 대응
pixelNeRF (2021, Yu et al., CVPR 2021)
| 항목 |
내용 |
해결한 과제 |
1 시나리오 1 NeRF 라는 비일반화의 문제 |
주요 아이디어 |
CNN 특징량을 픽셀 단위로 추출하고, 각 3D 점에서의 그 특징을 MLP 에 입력. 여러 시나리오에서 사전 학습함으로써, 1~수장의 이미지에서 제로샷 추론이 가능 |
트레이드오프 |
시나리오 특화 NeRF 와 비교하여 품질은 낮음 |
MVSNeRF (2021, Chen et al., ICCV 2021)
| 항목 |
내용 |
해결한 과제 |
소수 이미지에서의 고속 3D 추정 |
주요 아이디어 |
다시점 스테레오 (MVS) 의 코스트 볼륨과 NeRF 를 조합하고, 3 장 정도의 이미지에서 15 분 이내에 학습 완료 |
- NeRF 를 넘어선 방법론
3D Gaussian Splatting (3DGS, 2023, Kerbl et al., SIGGRAPH 2023)
| 項目 |
内容 |
解決した課題 |
NeRF系全般のリアルタイム推論の困難さ |
主なアイデア |
シーンをNeRFのような暗黙的関数ではなく、数百万個の 3D ガウス関数(位置・回転・スケール・不透明度・色を持つ)の集合として表現 |
速度 |
学習 30〜60 分、推論 30〜100+ FPS(リアルタイム) |
品質 |
NeRF と同等以上。特に細部のシャープネスで優れる |
トレードオフ |
ガウス関数の数が多くメモリ消費が大きい(数百 MB〜数 GB)。滑らかな曲面表現は NeRF が得意 |
NeRF 系との本質的な違いは、NeRF が「どこを見ても答えを計算する暗黙関数」であるのに対し、3DGS は「明示的な 3D プリミティブ(ガウス関数)をラスタライズする」点。後者は GPU のグラフィクスパイプラインと相性が良く、リアルタイム化が容易。
発展手法の比較まとめ
| 手法 |
発表 |
解決課題 |
学習時間 |
リアルタイム |
| NeRF(原著) |
2020 |
- |
1〜2 日 |
× |
| Mip-NeRF |
2021 |
エイリアシング |
1〜2 日 |
× |
| NeRF-W |
2021 |
照明変化・屋外 |
1〜2 日 |
× |
| pixelNeRF |
2021 |
汎化 |
不要(推論のみ) |
△ |
| D-NeRF |
2021 |
動的シーン |
数時間 |
× |
| Instant-NGP |
2022 |
高速化 |
数秒〜数分 |
△ |
| TensoRF |
2022 |
高速化 |
数十分 |
× |
| Block-NeRF |
2022 |
大規模シーン |
数日(分散) |
× |
3DGS |
2023 |
高速化・品質 |
30〜60 分 |
○ |
実装について
- 公式実装:nerf-pytorch(非公式 PyTorch ポート)、公式 TF 実装
- 入力は各シーンの画像 + COLMAP で推定したカメラ内外パラメータ
- Positional Encoding は FourierFeature と同等の考え方
- Fine ネットワークは Coarse の重みを引き継がず独立して学習
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기