# NeRF
NERF 코드 분석 5.run_nerf
5개 파트중 마지막 부분인 run_nerf 인데 1000줄 가까이 되는 코드를 올리는건 좀 그렇고 각 클래스나 함수들의 역할만 정리해서 올리는 식으로 하겠다. Import Statements: 필요한 라이브러리와 모듈 임포트. Global Variables: device: 현재 사용 가능한 디바이스 (CUDA GPU 또는 CPU) 설정 np.random.seed(0): 랜덤 시드 설정 DEBUG: 디버깅 모드를 위한 플래그 Utility Functions: batchify(fn, chunk):메모리 사용량을 줄이기 위해 주어진 함수 fn을 작은 배치로 적용하는 함수를 반환한다. run_network(...): 주어진 입력과 네트워크 함수에 대해 네트워크를 실행한다. 필요한 경우 view directions도 포함된다. `batchify
NERF 코드 분석 4.run_nerf_helper
이제 직접 nerf를 돌리는데 필요한 함수들을 차근차근 살펴보자 Utility Functions: img2mse: 이미지 간의 Mean Squared Error (MSE)를 계산한다. mse2psnr: MSE 값을 Peak Signal-to-Noise Ratio (PSNR)로 변환한다. 여기서 PSNR (Peak Signal-to-Noise Ratio)은 두 이미지 간의 차이를 측정하는 데 사용되는 표준적인 메트릭인데, 특히 원본 이미지와 압축 또는 복원된 이미지 간의 차이를 측정하는 데 주로 사용된다. PSNR은 높을수록 이미지의 품질이 더 좋다는 것을 뜻한다. PSNR은 다음과 같은 수식으로 정의된다: $\text{PSNR} = 10 \times \log_{10} \left( \frac{\text{MAX}^2}{\text{MSE}} \right)$ 여기서: $\text{MAX}$ 는 가능한 최대 픽셀 값인데 예를 들어, 8비트 이미지의 경
NERF 코드분석 3.load_LINEMOD
동차행렬에 대한 설명은 위의 내용은 1장에서 이미 설명 했으니 아래를 참고하면 된다. NERF 코드 분석 1.load_blender 그리고 동차 좌표계 c2w 위에서 설명하지 않았던 부분으로 c2w에 대해 좀 설명 하자면 c2w (camera-to-world 변환)는 "camera-to-world" 변환을 나타낸다. 이 변환은 카메라 좌표계에서의 점을 세계 좌표계로 변환하는 데 사용되는데, 이 함수에서는 c2w 변환을 구성하여 카메라의 위치와 방향을 결정한다. @ 연산자는 행렬 곱셈 연산이다. transpose같은 기능 안쓰고 바로 행렬 곱셈이 가능한 편리한 기
NERF 코드 분석 2.load_deepvoxels
load_deepvoxels.py 코드는 DeepVoxels 데이터셋을 로드하는 함수를 포함하고 있으며, DeepVoxels는 3D 재구성을 위한 데이터셋이다. 먼저, 필요한 사전 지식을 살펴면 다음과 같다: Intrinsics: 카메라의 내부 파라미터를 나타낸다. 이는 카메라의 렌즈와 이미지 센서의 특성을 반영하고, 주로 초점 거리(focal length), 중심점(center point) 등을 포함한다. Extrinsics: 카메라의 외부 파라미터로, 카메라의 위치와 방향을 나타낸다. Homogeneous Coordinates: 동차 좌표계를 사용하여 점과 변환을 표현한다. 코드 분석: 1.loaddvdata: 메인 함수로, DeepVoxels 데이터셋의 이미지와 관련 pose를 로드한다. 특정 장면에 대한 이미지, pose, render poses 및 카메라 파라미터를 반환한다. **parse_int

NERF 코드 분석 1.load_blender 그리고 동차 좌표계
4학년 졸업논문 주제 겸 기업 프로젝트 겸 연구실 인턴으로 진행중 일단 NERF-pytroch 분석부터 시작하는게 맞는거 같아서 nerf-pytorch는 다음과 같은 구조로 이루어져 있다. load_blender: Blender에서 생성된 데이터셋을 로드하는 함수 load_deepvoxels: DeepVoxels 형식의 데이터를 로드하는 함수 load_LINEMOD: LINEMOD 3D 객체 인식을 위한 데이터셋 load_llff: LLFF (Local Light Field Fusion) 빛의 광선을 표현 run_n

[Paper Review] F2-NeRF: Fast Neural Radiance Field Training with Free Camera Trajectories
Abstract > #### 문제 기존 grid-based NeRF 프레임워크는 주로 bounded scene을 위해 설계되었으며 unbounded scene을 처리하기 위해 space warping에 의존 기존 space warping 방법은 forward-facing 궤적 또는 360° object-centric 궤적만을 위해 설계되었을 뿐 임의의 궤적 처리 불가 제안 grid-based NeRF 프레임워크에서 임의의 궤적을 처리할 수 있는 perspective warping이라는 새로운 space warping 방법 제안 임의의 입력 카메라 궤적을 가능하는 grid-based NeRF의 일종 F$^2$-NeRF (Fast-Free-NeRF) 제시 결과 제안 wariping 방법이 두 표준 데이터 세트와 수집한 자유 궤적 데이터 세트에서 고품질 이미지 렌더링 가능함을 입증 1. Introduction NeRF의
Learned Initializations for Optimizing Coordinate-Based Neural Representations
Paper : [Learned Initializations for Optimizing Coordinate-Based Neural Representations] (https://arxiv.org/abs/2012.02189) (TLearned Initializations for Optimizing Coordinate-Based Neural Representations / CVPR 2021) NeRF 본 논문의 저자가 쓴 논문이다. Motivation: NeRF는 training view image도 많이 필요하고, training time도 많이 소요가 되는 단점이 있는데, 이러한 단점을 해결할 수 있는 방법을 찾고 있었다. Test time optimization task인 NeRF 학습에 간단한 방법으로 prior를 잘 부여하여 학습 속도를 개선시키고 Short Summary Meta-learning algorithm을 NeRF training에 도입하여
Instant Neural Graphics Primitives with a Multiresolution Hash Encoding
Paper : [Instant Neural Graphics Primitives with a Multiresolution Hash Encoding] (https://arxiv.org/abs/2201.05989) (Thomas Müller, Alex Evans, Christoph Schied, Alexander Keller / SIGGRAPH 2022) Motivation : Multiresolution Hash Encoding이 궁금해서 공부 Short Summary NeRF에서 사용하는 positional encoding인 frequency encoding을 Multiresolution Hash Encoding으로 대체 Rapid training / High quality / Simplicity의 측면에서 우세 Introduction 
NeRF
NeRF NeRF는 ECCV 2020 best paper에 선정되어 많은 주목을 받았고, 현재까지도 NeRF를 기반으로 발전시킨 논문들이 등장하고 있습니다. 따라서 해당 분야를 팔로업하기 위해서 Neural Radience Field를 최초로 제안한 논문을 분석해보았습니다. NeRF를 이해하기 위해선 Background가 많이 요구되는데, 아래에 Appendix 부분에서 설명하였으니 이를 참고하여 글을 읽으시면 더 도움이 될 것입니다. 1. Introduction / 2. Related Work NeRF는 특정 시점에서 얻은 이미지들을 통해서 해당 물체를 다양한 시점에서 바라보았을 때를 예측하여 결과적으로 2D 물체를 3D로 보이게 하는 모델입니다. 기존 연구와 달리 Deep Convolutional Layer가 아닌(Deep CNN을 사용하여 렌더링을 하였을 때는 많은 데이터셋을 요구하는 점, 시간이 매우 오래 걸리며 공간 복잡도가 큰 점 등 많은

[Point Review] Renderable Neural Radiance Map for Visual Navigation
Encoder에서는 이미지로부터 만든 feature map을 3D로 올리고 RNR-Map 상의 동일한 (u,v)를 가지는 feature들을 average하여 latent code를 만듬. 이 때 feature의 개수를 저장하여 이미지가 추가될 때 마다 계속 average하여 업데이트 Decoder에서는 GSN의 구조를 따라 floorplan으로부터 neural rendering을 하여 이미지를 reconstruction 하도록 학습

[Point Review] Text2NeRF: Text-Driven 3D Scene Generation with Neural Radiance Fields
Input prompt $p$를 condition으로 하는 diffusion model로부터 2D image 생성 Initial view를 warping하여 multi-view supervision 생성 Warping된 이미지의 빈 영역은 다시 $p$를 condition으로 주는 diffusion model에 태움. 이 때, inpainting의 quality를 보장할 수 없기 때문에 30개의 후보군을 생성한 뒤 CLIP semantic space에 서 initial view와 가장 유사한 것을 선택 3D constraint가

'NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis' Paper Summary
Abstract   Sparse set of input views로부터, MLP로 구성된 underlying continuous volumetric scene function을 optimize하여 complex scene에 대한 novel view를 합성함. 모델은 spatial location $(x, y, z)$와 viewing direction $(\theta, \phi)$를 입력받아 volume density와 view-dependent emitted radiance를 출력
NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
Paper : [NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis] (https://arxiv.org/abs/2003.08934) (Ben Mildenhall, Pratul P. Srinivasan, Matthew Tancik, Jonathan T. Barron, Ravi Ramamoorthi, Ren Ng / ECCV 2020) Motivation : View synthesis field에서 아주 중요한 논문이고, 최근 3D reconstruction 등에 관심이 생겨서 분석해보려 한다. 방법론 자체가 아주 novelty가 있고, medical image synthesis로 쉽게 확장될 수 있겠다고 생각했다. > [NeRF project page] (https://arxiv.org/abs/2003.08934)에 들어가면 이게 무엇을 하는 것인지 intuitive하게 알 수 있다. Shor

'Collaborative Score Distillation for Consistent Visual Synthesis' Paper Summary
Abstract   Stein Variational Gradient Descent (SVGD)를 기반으로 한 Collaborative Score Distillation (CSD) 모델 제안. 여러 샘플을 SVGD의 'particle'로 여겨 score function을 합산하는 방법으로 inter-sample consistency를 향상시킴. 1. Introduction   "Adapting the knowledge of pre-trained text-to-image diffusion models to more complex high-dimensional visual generative tasks beyond 2D images without mo

Instant NGP, NeRF 개발 도전기
딥러닝 기술로 3D object를 만들 수 있을까? Neural Radiance Fields for View Synthesis ECCV 2020 Oral, Best paper Honorable Mention 논문이다. 신경망을 이용해 radiance field를 만들어 사진을 3D object로 만드는 task를 수행하는 기술로, 3D contruction 기술자가 아니어도 사진만으로 입체 영상을 만들고 편집할 수 있다는 점에서 3D 그래픽 기술의 확장 가능성을 제시하였다. Nerf overview 
[논문] GRAF : Generative Radiance Fields for 3D-Aware Image Synthesis
💡 NeRF가 novel view synthesis 잘하던데 NeRF랑 GAN으로 3D-Aware generation 해보자 Generation Pipeline : GAN Representation : NeRF ✍️ Abstract 기본적으로 Generator와 Discriminator가 존재하는 GAN 아키텍처를 사용하는데, generator에서 2D 이미지를 생성하기 위해서 Radiance Fields를 사용한다. 이때 다음과 같은 점에서 NeRF setting과 조금 다르다. 그냥 vanila NeRF는 한 scene (Lego, fern etc)을 MLP 에 fitting하는 용도이지만, GRAF는 MLP에서 다양한 scene이 나오길 원하기 때문에 input으로 random성을 줄 noise가 필요하다. 이게 Shape code와 Apperance code이고, 이런 code들에 condition되어 있기 때문에 GR

3D-Aware Image Synthesis는 뭘까?
Generative Adversarial Networks, Diffusion Models, VAE 등 Image Generation Model들은 실제 사진과 같은 퀄리티의 이미지들을 만들어 낸다. 이러한 고퀄리티 image generation 모델들에 text embedding을 결합시켜 stability, runaway 등 기업들에선 사용자들의 text input으로 해당 내용의 이미지를 생성해 주는 서비스를 제공한다. 그러나 이런 생성모델들은 2D image밖에 생성해 내지 못한다. 그렇기 때문에 해당 scene을 다른 viewpoint에서 바라본 image를 얻는 것은 불가능하다. (사실 어느정도 가능하긴 하다. 다만 문제점이 많다) 예를 들어 강아지 사진을 만들고 싶은 사용자가 text prompt로 "강아지"를 주고 여러개의 이미지를 받아와 그중 가장 마음에 드는것을 골랐다. 이미지 안에 있는 강아지는 너무 마음에 드는데 강아지가 오른쪽을 바라보고 있는 사진이다. 그래

Vox-Fusion: Dense Tracking and Mapping with Voxel-based Neural Implicit Representation 리뷰
공유용으로 영어로 작성했는데 그대로 올림 논문 링크: https://arxiv.org/abs/2210.15858 이제 완전히 feature grid embedding + octree가 기본 구조로 자리잡은 듯 하다. spatial한 구조가 나름 최적화 된 것 같으니 여러 센서와의 퓨전 (특히 라이다와의 찰떡궁합을 예상)으로 쭉쭉 영역을 넓혀 나갈거라고 예상했는데 아니나 다를까 블로그에 포스팅 하는 지금 벌써 NeRF-LOAM이라는 애가 선발로 치고 나왔다.. 미묘한 기분이 든다. 바로 NeRF-LOAM 리뷰를 연이어 해야겠다. dense tracking&mapping system fuses neural implicit representations with traditional volumetric fusion methods use mlp to encode and optimize the scene inside each voxel octree-based str

[논문] Mixed Neural Voxels for Fast Multi-view Video Synthesis
✍️ Abstract A new method of representing 4D dynamic scenes as a mixture of static and dynamic voxels which utilizes the light weight static voxels for fast training and competitive rendering qualities. 🔒 Prerequisites Neural Radiance Fields Neural Voxel Fields Dynamic Nerf with multi-view inputs 🤔 Motivation Different from Dynamic NeRF settings which takes input from a monocular camera, MixVoxels synthesizes vidos from real-world multi-view input first introduced by *

Representing Scenes as Neural Radiance Fields for View Synthesis - ECCV 2020
Summary Input : spatial location (x, y, z), viewing direction (θ, φ) (5D coordinate) Spatial Position $\textbf{x}$ : xyz coordinate Viewing Direction $\textbf{d}$ : camera position output : volume density, view-dependent emitted radiance Volume Density map $\sigma(x): \mathbb{R}^3 \rightarrow \mathbb{R}_{\ge0}$ xyz coordinate to opaque Color Radiance map