https://kyujinpy.tistory.com/16
[NeRF 논문 리뷰] - NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
* 이 글은 NeRF에 대한 논문 리뷰이고, 핵심만 담아서 나중에 NeRF Code를 이해할 때 쉽게 접근할 수 있도록 정리한 글입니다. * 코드와 함께 보시면 매우 매우 도움이 될 것이라고 생각이 들고, 코드
kyujinpy.tistory.com
NeRF는 point cloud나 mesh,voxel등으로 표현된 3D object 자체를 rendering하는 게 아니라, 3D object를 바라봤을 때 보일 2D 이미지를 예측하도록 하는 것이다.
해당 물체를 어느 각도에서 봐도 2d 이미지로서 표현할 수 있게함으로써 3D 렌더링의 역할을 수행해내는 것
3D 오브젝트를 표현하는 건 cost가 많이 들기 때문에 explicit하게 저장하지 않고,
좌표를 network에 넣으면 MLP를 통해 continuous representation 즉, pixel 별 rgb값을 얻는 implicit한 방식을 사용한다.
-> 그래서 모델이 매우 가볍고 continuous하다
일반적인 3D 구조는 discrete하다. 각 grid에 해당하는 지점에 feature가 하나씩 존재한다.
NeRF의 경우는 continuous하게 어느 방면에서든지 feature를 뽑을 수 있다.
따라서 매우 부드러운 3D 장면 연출 가능
color값 뿐만 아니라 volume density까지 함께 뽑기 때문에, 정말 photo realitic..? 하다
*** structure from motion : 카메라의 포즈를 계산하기 위한
먼저 input image를 여러장 준비한다.
위 드럼은 블렌더 툴에서 제작한 툴에서의 드럼을 캡처하였지만,
real image로 구성할 때에 콜맵사용! 카메라 파라미터값이 매우 중요
렌더링이 잘 안됐을 때는 카메라 파라미터 부터 의심하기
x,y,z,세타,파이 를 넣어주면 바라보는 위치에 따라 rendering을 해준다.
전체 network는 간단히 mlp로 구성되어있음
위치 좌표값인 x,y,z를 첫번째 layer와 다섯번째 layer에 넣어줌
9번째에서는 density값인 시그마를 출력하고 direction값인 세타와 파이를 입력
**desntiy : 해당 공간에 물체가 있는지 없는지 알아내는 것이므로 시점(direction)과 상관 없이 공간에 의해서 결정
최종 출력은 : 해당 위치와 방향에서 바라본 r,g,b값을 출력
//시점에 따라 보이는 색상이 다르니까 9번째 layer에서 넣어준 방향값을 바탕으로 rgb값 출
위치와 방향값을 넣어서 density와 색상 값을 출
모든 이미지 set에 대해서 pixel마다 ray를 쏴서 최종 픽셀값을 결정
카메라의 중심으로부터 각 pixel을 지니가는 ray를 쏜다
ray위에 많은 sample point를 생성하고 특히 , object 근처에서 더 많은 샘플 포인트를 생성한다.
위치값 x,y,z와 방향값 세타 파이로 구성된 샘플 포인트가 input이 된다.
MLP( multi layer perceptro )을 통해서 각 sample point의 color rgb값과 desntiy sigma값이 예측된다.
위 사진처럼 값들이 모두 모여서 color값을 생성한
총 9개의 fully connected layer ( MLP) 가 각 layer를 통과할 때마다 ReLU를 통과
각 layer는 256차원의 dimension을 가지고 있음4
------------- Multi-Resolution Hash Encoding--------------------
기존의 Positional encoding대신에 mutli resolution hash encoding을 적용하여
보다 빠르게 NeRF를 학습하고 해상도를 높일 수 있음
9개 layer -> 3개의 layer
256차원 -> 64차원
학습속도를 빠르게 향상시켰음
'SYDLAB > NeRF' 카테고리의 다른 글
NeRF - "Instant Neural Graphics Primitive with a Multiresolution Hash Encoding" + Mixed dimension (0) | 2024.03.31 |
---|---|
SYDLAB seminar "NeRF" 2024.01.22-23 (0) | 2024.01.22 |