본문 바로가기

AI/Paper - Theory

[CLIP-NeRF 논문 리뷰] - CLIP-NeRF: Text-and-Image Driven Manipulation of Neural Radiance Fields

반응형

*해당 글은 CLIP-NeRF 논문 리뷰를 위한 글입니다. 궁금하신 점은 댓글로 남겨주세요!

 

CLIP-NeRF paper: [2112.05139] CLIP-NeRF: Text-and-Image Driven Manipulation of Neural Radiance Fields (arxiv.org)

 

CLIP-NeRF: Text-and-Image Driven Manipulation of Neural Radiance Fields

We present CLIP-NeRF, a multi-modal 3D object manipulation method for neural radiance fields (NeRF). By leveraging the joint language-image embedding space of the recent Contrastive Language-Image Pre-Training (CLIP) model, we propose a unified framework t

arxiv.org

CLIP-NeRF github: GitHub - cassiePython/CLIPNeRF: CLIP-NeRF: Text-and-Image Driven Manipulation of Neural Radiance Fields

 

GitHub - cassiePython/CLIPNeRF: CLIP-NeRF: Text-and-Image Driven Manipulation of Neural Radiance Fields

CLIP-NeRF: Text-and-Image Driven Manipulation of Neural Radiance Fields - GitHub - cassiePython/CLIPNeRF: CLIP-NeRF: Text-and-Image Driven Manipulation of Neural Radiance Fields

github.com


Contents

1. Simple Introduction

2. Background Knowledge: CLIP, NeRF

3. Method

    - Conditional NeRF

    - Disentagled Conditional NeRF

    - CLIP-Driven Manipulation

4. Training Strategy


Simple Introduction

NeRF는 우리에게 빠른 3D rendering을 해줄 수 있다는 기존의 방법과 비교했을 때 높은 해상도와 빠른 속도로  2D의 객체를 3D로 reconstruction해주는 모델이었기 때문에 큰 충격을 안겨주었다.

 

만약 여기에, text가 더해져서 마음대로 색상을 바꿀 수 있다면 더 흥미롭지 않을까?라고 생각한 공학자들은 역시나 text를 vision 분야에 적용하기 위해서 CLIP를 활용하여 이미지 generating을 3D volume rendering field까지 들고 왔다.

 

논문을 보면서 엄청 흥미로웠는데 한번 같이 알아보자!


Background Knowledge: CLIP, NeRF

CLIP 논문 리뷰: https://kyujinpy.tistory.com/47

 

[CLIP 논문 리뷰] - Learning Transferable Visual Models From Natural Language Supervision

*CLIP 논문 리뷰를 위한 글입니다. 질문이 있다면 댓글로 남겨주시길 바랍니다! CLIP paper: [2103.00020] Learning Transferable Visual Models From Natural Language Supervision (arxiv.org) Learning Transferable Visual Models From Natu

kyujinpy.tistory.com

NeRF 논문 리뷰: https://kyujinpy.tistory.com/16

 

[NeRF 논문 리뷰] - NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

* 이 글은 NeRF에 대한 논문 리뷰이고, 핵심만 담아서 나중에 NeRF Code를 이해할 때 쉽게 접근할 수 있도록 정리한 글입니다. * 코드와 함께 보시면 매우 매우 도움이 될 것이라고 생각이 들고, 코드

kyujinpy.tistory.com

 

해당 논문 리뷰는 CLIP과 NeRF를 알고 있다는 가정하에 이루어집니다!


Method

CLIP-NeRF pipeline

Overview로 보면, CLIP-NeRF는 크게 3가지 step으로 이루어져 있다.

0. Conditional NeRF

1. Disentangled Conditional NeRF

2. CLIP-Driven Manipulation

 

천천히 이 3가지를 알아보자.


1. Conditional NeRF

Disentagled Conditional NeRF를 설명하기 전에 Conditional NeRF에 대해서 먼저 살펴보자.

Conditional NeRF

Conditional NeRF의 구조는 NeRF와 매우 유사하지만 차이점이 있다.

바로, shape code Zs and appearance code Za의 추가이다.

이 두개의 code vector를 추가해서 NeRF에 함께 넣어준다.

 

정리해서 말하면,

1. X(좌표)와 V(view direction)에 대해서 positional encoding을 수행한 후, X에는 Zs를, V에는 Za concatenation해서 NeRF에 넣어준다.

2. 동일한 NeRF network로 학습해서 rgb, density를 output으로 출력한다.


2. Disentagled Conditional NeRF

기존의 Conditional NeRF를 이용하면 shape code가 객체의 color가 변화시키는 문제점이 발견되어서, 이를 개선하고자 Disnetangled Conditional NeRF를 이용하였다.

 

Disentagled Conditional NeRF를 구성하는 Network 중 Deformation network을 통해서 shape code에 대한 encoding이 잘 될 수 있도록 만들었다.

 

Deformation network
New Positional encoding

구조를 보면 X와 Zs가 들어가서 X에 대한 변화율, ΔX을 output으로 출력한다.

그리고, 여기서 나온 ΔX와 X를 함께 이용해서 positional encoding을 수행한다.

 

Pipeline

위의 deformation network에서 shape code에 대해서 encoding을 해주고, 구한 ΔX를 가지고 기존의 X와 positional encoding 한 것을 NeRF에 input으로 넣어준다.

그리고 appearance에 대한 것은 건들지 않고 그대로 기존의 conditional NeRF처럼 넣어준다.


3. CLIP-Driven Manipulation

Pipeline

이 network의 목적은 CLIP이 객체의 shape과 appearance를 해석하는데 도움을 주기 위해서 추가되었다.

또한 여기서 어떻게 shape code와 appearance code를 정의하는지도 알 수 있다.

 

CLIP-Driven Manipulation

Zs와 Za는 shape mapper와 appearance mapper에 의해서 만들어 진다.

만들어지는 과정은 다음과 같다.

 

1. t(text)에 대해서 pretrained된 CLIP encoder를 활용하여 embedding을 만든다.

2. 임의로 initialization된 vector Zs'와 Za'를 정의한다.

3. Text embedding을 각각 shape mapper와 appearance mapper에 넣은 후, 처음 initial과 더해서 Zs와 Za를 형성한다.

 

즉 mapper에서는 shape과 appearance에 대한 displacement(변위)에 대한 값을 내보내고, 이것이 disentangled conditional NeRF에 들어가서 기존의 Zs와 Za를 update해주는 방식으로 이루어진다.


+) DCLIP으로 이것은 밑에 이제 loss function을 가지고 backpropagation할 때 text와 image patch간의 유사도 비교를 통해서 업데이트를 해준다.


Training Strategy

Training strategy

Disentangled Conditional NeRF의 경우 GAN으로 학습을 진행합니다.

그리고 GAN loss function을 이용합니다.

(+)GAN의 loss function은 GAN 논문이나 여러 논문리뷰글을 참고하시길 바랍니다.

 

Mapper의 경우에는 학습할 때 pre-trained NeRF generator와 discriminator를 이용하였습니다.

즉, pre-trained의 weight를 전부 고정시키고, Mapper만 학습이 되도록 진행했습니다.

f(x)는 위에서 이용된 -log(1+exp(-x))이고 DCLIP은 위에서 소개된 equation입니다.

비슷하게, shape code, appearance code, camera pose도 각자의 분포에서 randomly sampling 한 후 이용했습니다.


+) Zs, Za, Camera pose에 대해서 minimizing 시키는 작업도 중요해서 추가하였다.

+) 각각을 minimizing시킬 때, 나머지 2개의 요소는 fixed하고 training하는 방식을 하였다.

+) CLIP-NeRF는 Camera pose v에 대해서도 minimizing한다는 점에서 매우 놀라웠다. (가장 놀라웠던 부분)


- 2023.01.14 Kyujinpy 작성.

 

 

반응형