본문 바로가기
AI/NERF, GaussianSplatting

DBARF

by wenect 2023. 6. 28.

이 논문은 "DBARF: Deep Bundle-Adjusting Generalizable Neural Radiance Fields"라는 제목의 논문입니다. 이 논문은 깊은 번들 조정을 통한 일반화 가능한 신경 방사장에 대해 다룹니다. 이 연구는 신경 방사장(Neural Radiance Fields, NeRF)의 일반화 능력을 향상시키기 위한 새로운 접근 방식을 제안합니다.

DBARF는 번들 조정(bundle adjustment)이라는 고전적인 컴퓨터 비전 기술을 NeRF에 통합하여, 신경 방사장이 새로운 장면에 대해 더 잘 일반화되도록 합니다. 번들 조정은 카메라의 위치와 방향을 최적화하여 3D 재구성의 정확성을 향상시키는 기술입니다.

이 방법은 NeRF의 일반화 능력을 향상시키는 데 성공했으며, 실험 결과 이 방법이 기존의 NeRF 방법보다 우수한 성능을 보였습니다. 또한, 이 방법은 실제 세계의 장면에 대한 NeRF의 적용 가능성을 확장하는 데 도움이 될 것으로 기대됩니다.

이 논문은 이론적인 설명과 실험 결과를 통해 이 방법의 효과를 보여줍니다. 이 연구는 신경 방사장의 일반화 능력을 향상시키는 데 중요한 발전을 나타냅니다.

BARF와 DBARF로 카메라 포즈 최적화 결과. 왼쪽에서 오른쪽으로 초기 카메라 포즈, 1e4 반복 후 최적화된 카메라 포즈의 새로운 뷰(bird's eye view, BEV), 2e4 반복 후 최적화된 카메라 포즈의 측면 뷰(side view, SV)입니다. 빨강과 파랑은 각각 실제 값과 추정된 카메라 포즈를 나타냅니다(다른 반복에서 일관되지 않은 실제 포즈는 학습 배치를 선택하는 무작위성 때문입니다). 위쪽: BARF[20]를 GeNeRF에 적용하면 카메라 포즈가 매우 빠르게 발산하며, 아주 작은 노이즈로 실제 값에 대한 근접 초기화가 이루어지더라도 마찬가지입니다. 아래쪽: 우리의 DBARF에 의해 얻어진 결과, 카메라 포즈는 무작위로 초기화됩니다.

https://aibluefisher.github.io/dbarf/

 

DBARF: Deep Bundle-Adjusting Generalizable Neural Radiance Fields

CVPR 2023 paper: [ link ] Supplementary material: [ link ] --> BibTex: @InProceedings{Chen_2023_CVPR,   author = {Chen, Yu and Lee, Gim Hee},   title = {DBARF: Deep Bundle-Adjusting Generalizable Neural Radiance Fields},   booktitle = {Proceedings of

aibluefisher.github.io

https://github.com/AIBluefisher/dbarf

 

 

GitHub - AIBluefisher/dbarf: Official Implementation of our CVPR 2023 paper: "DBARF: Deep Bundle-Adjusting Generalizable Neural

Official Implementation of our CVPR 2023 paper: "DBARF: Deep Bundle-Adjusting Generalizable Neural Radiance Fields" - GitHub - AIBluefisher/dbarf: Official Implementation of our CVPR 2023...

github.com

 

 

 GRAF

기본적으로 Generator와 Discriminator가 존재하는 GAN 아키텍처를 사용하는데, generator에서 2D 이미지를 생성하기 위해서 Radiance Fields를 사용한다. 이때 다음과 같은 점에서 NeRF setting과 조금 다르다.

  1. 그냥 vanila NeRF는 한 scene (Lego, fern etc)을 MLP 에 fitting하는 용도이지만, GRAF는 MLP에서 다양한 scene이 나오길 원하기 때문에 input으로 random성을 줄 noise가 필요하다. 이게 Shape code와 Apperance code이고, 이런 code들에 condition되어 있기 때문에 GRAF에서 사용하는 Radiance fields를 Conditional Radiance Field하고 부른다.
  2. Patch 도입. training시 전체 이미지를 만들어 내면서 하면 computation이 너무 비싸다. 그래서 이미지의 한 부분인 patch를 생성하고 이를 discriminate함. 어떤 patch를 쓸지는 random 으로 결정함. inference할 땐 whole image가 patch라고 생각하고 생성하면 됨.

 Main Method

Generator

The Generator  takes

  • Camera matrix 
    • 카메라의 intrinsic parameter들을 나타내는 matrix이며 카메라가 어떻게 이미지를 capture할꺼냐에 관한 parameter이다 (focal length etc)
  • Camera Pose  (uniform distribution)
    • Extrinsic parameter에 해당하는 값들 인데 그냥 upper hemisphere에 카메라가 오도록 해놓고 uniform distribution에서 sample!
  • 2D sampling pattern  
    • Image를 하나 다 생성하는 것보다 더 효율적으로 학습하기 위해서 Patch라는 걸 도입함! 이 Patch의 크기, patch의 문양?등을 결정하는 parameter라고 보면됨.
  • Shape codes 
    • Shape을 결정할 noise. From 가우시안
  • Appearance codes 
    • Appearance를 결정할 noise. From 가우시안

as input, and outputs an image patch  which is discriminated by 

Generator에서 2D patch(image)를 생성해내는 과정은 다음과 같다.

1. Ray sampling

카메라 matrix, 카메라 pose, sampling pattern을 사용하여 개의 RAY를 sampling한다

2. Point Sampling

개의 ray에서 각각 개의 point를 sampling한다!

3. Conditional Radiance Field 

각각의 point당 에 query하여 density와 RGB값을 구함. 이때 apperance code와 shape code도 오른쪽 그림과 같이 input 됨. 결국 다음과 같은 함수임! 그저 3D좌표와 direction, code를 받으면 RGB랑 density를 output함.

4. Volume Rendering

너프랑 똑같음. 너프를 완벽하게 이해하자!

Discriminator 

The discriminator  compares the predicted patch  and the real patch  from real Image  drawn from data distribution 

그냥 2D convolution discriminator. 단지 training할 땐 전체 이미지가 아닌 Patch를 구별!

Training, Inference

Training할 때랑 inference할 때를 한번 쭉 다시 살펴보자. Dataset은 cars나 Celeb 같은 그냥 2D 이미지들이다!

Training

  1. Camera matrix, pose, patch pattern을 하나씩 랜덤으로 뽑음.
  2. 1의 parameter들로 개의 ray를 sampling
  3. 각각의 RAY당 개의 point를 sampling
  4. 각각의 Point좌표랑 가우시안에서 뽑아온 ,  를 사용하여 해당 점의 밀도와 RGB값 구함
  5. 각 RAY에 대하여 모든 point들의 밀도와 RGB를 이용하여 한 pixel로 volume rendering.
  6. 모든 RAY에 대하여 하면 patch(image)임!
  7. patch를 discriminator에 넣어서 real인지 아닌지 판별!

Inference

  1. 특정 Camera matrix, pose를 잡고 patch pattern는 이미지 전체로 고정!
  2. Generator로 이미지 생성!
  3. 2번에서 사용한 ,  를 바꾸면 다양한 이미지 생성가능!

  1. 1번에서 사용한 Camera matrix, pose를 바꾸고 ,  를 고정하면 한 scene에 대한 여러 방면의 이미지를 볼수 있음!

 

참고 graf

https://velog.io/@damab/%EB%85%BC%EB%AC%B8-GRAF-Generative-Radiance-Fields-for-3D-Aware-Image-Synthesis

'AI > NERF, GaussianSplatting' 카테고리의 다른 글

Adaptive Shells for Efficient Neural Radiance Field Rendering  (0) 2024.01.07
GPS-Gaussian  (0) 2024.01.01
NeRF−−  (0) 2023.06.27
Vid2Avatar  (0) 2023.06.26
Neuralangelo  (0) 2023.06.11

댓글