[Paper review] CLIP-NeRF: Text-and-Image Driven Manipulation of Neural Radiance Fields
오늘 리뷰할 논문은 CLIP-NeRF에 관한 논문이다. CLIP-NeRF은 shape 과 appearance code를 condition으로 받아서, 3D 물체를 generate하는 모델로써, 흔히 알려져있는 Conditional NeRF, Edit-NeRF 등과 같은 모델들과 흐름을 같이 한다. 하지만, 모델 이름에 CLIP이 들어가 있듯이 CLIP을 Condition으로 줄때 활용한다는 점에서 차이점이 있다. CLIP은 저번 Glide 페이퍼 리뷰에서도 언급했듯이, 텍스트와 이미지 encoder를 이용해, 텍스트와 이미지에 쌍에 대해 같은 임베딩 공간상에서 distance를 측정할 수 있는 도구이다. 이제 CLIP-NeRF의 구조를 뜯어보면서, 어떤식으로 모델이 이루어져있고 CLIP을 활용하는지 보자.
위 그림이 사실상 CLIP-NeRF의 핵심적인 요소들을 다 다루고 있다고 할 수 있다. 논문에서 CLIP-NeRF를 크게 세가지 파트로 나누어서 설명한다. Disentangled Conditional NeRF, CLIP-Driven Manipulation, Training Strategy 이다.
CLIP NeRF의 첫번째 특징은 Shape Code와 Appearance Code를 disentangle하게 만들었다는 점이다.
먼저 Disentangled Conditional NeRF이다. 말 그대로 얽혀있지 않은 Conditional NeRF이다. 여기서 얽혀있지 않는다는 뜻을 좀 더 설명하면, Shape Code와 Apperance Code가 각각 담당하는 이미지의 특징이 얽혀있지 않다는 것이다. 만약 Shape code를 바꾸었는데 만들어지는 이미지의 Shape 뿐만 아니라, Apperance까지 변형된다면 이는 disentangle하다고 할 수 없다. CLIP-NeRF는 어떤 식으로 Disentangle한 특징을 가질 수 있었을까?
위 구조를 보면, 3D 좌표(x, y, z)가 positonal encoding을 거치고 바로 다음 네트워크로 가는 것이 아니라, Shape Code와 Deformation network를 지난 결과와 더해져서 다음 네트워크로 가는 것을 알 수 있다. CLIP-NeRF는 이러한 새로운 Deformation 과정을 통해, Shape Code를 isolate할 수 있었다. Appearance Code는 GRAF, Edit NeRF와 비슷하게 특별한 네트워크를 거치지 않고 Density를 계산 한 직후, view direction과 함께 네트워크의 input으로 들어간 Color를 계산하는데 활용된다.
CLIP NeRF의 두번째 특징은 CLIP을 활용해, 사용자 친화적인 image Manipulation이 가능하게 되었다는 점이다.
CLIP NeRF의 다음 특징은 CLIP-Driven Manipulation이다. 위 그림을 보면, CLIP Image/Text Encoder를 활용한다는 것을 알 수 있다. (당연히 pretrain되어 있음) 만약 "A green SUV"라는 특징을 가지고 있는 자동차로 업데이트하고 싶다면, CLIP-NeRF는 CLIP Text Encoder를 활용해 이를 입력 받아서, Shape Mapper, Apperance mapper로 보낸 후, 각각 Shape Code와 Appearance Code를 업데이트할 displacement vector를 만들어 낸다. 이러한 vector들은 원래 존재하는 code들에 더해져서 최종적으로 Shape와 Apperance의 변화를 만들어 낸다.
CLIP NeRF의 세번째 특징은 크게 두 단계로 이루어지는 Training Strategy이다.
지금까지 CLIP-NeRF의 전체적인 구조에 대해서 알아보았다. 여기서 끝나는게 아니라 two stage 방식의 Training Strategy에 대해서도 알아볼 필요가 있다. 먼저 CLIP-NeRF의 Disentangled Conditional NeRF를 훈련하는 단계를 거친다. 이 단계에서는 이제 code(Shape, Appearance, Camera pose)를 input으로 받으면, 그럴싸한 3D의 이미지를 만들어 낼 수 있도록 학습한다. GAN Loss를 활용하고, 각각의 코드들은 확률분포에서 랜덤하게 추출된다. (참고로, Camera pose는 upper hemisphere of camera coordinate system에서, 나머지 code들은 정규분포에서 추출된다.)
다음 훈련단계는 CLIP Manipulation Mapper를 훈련시키는 단계이다. 이 단계에서는 다른 부분은 모두 freeze해놓고, Shape Mapper와 Apperance Mapper 만을 훈련시킨다. 흥미로운 점은 loss도 GAN Loss와 더불어 CLIP-loss를 활용하여, CLIP을 통해 Condition을 준것이 모델이 잘 반영되도록 유도한다.
여기서 추가적으로 논문에서는 Inverse Manipulation 과정을 거쳐야 하는 것을 강조한다. 이 Inverse Manipulation은 한 이미지에 대응하는 Shape code와 Apperance code를 고정시키는 과정으로, 위에서 말한 훈련단계 중 첫번째 단계가 완료된 후 적용하는 과정이다. 이 과정을 거쳐야 하는 이유는 어떤 이미지에 대해 Manipulation을 할 때는 Shape, Apperance code는 고정하고, 이들 각각에 더해주는 displacement만 고려해야 하기 때문이다. 논문에서는 Inverse Manipuation에 대해 자세히 언급했으므로, 관심있는 사람은 직접 찾아보길 바란다.
마지막으로 CLIP-NeRF의 결과를 간단하게 살펴보자.
CLIP-NeRF는 선행연구라 할 수 있는 Edit-NeRF에 비해 더 좋은 성능을 낸다는 것을 확인할 수 있다. 훈련시간이나 inference 시간도 훨씬 짧다.
이외에도 Shape, Apperance가 isolate하게 잘 변하는 것을 논문에서 쉽게 확인할 수 있었다.
물론 Limitation 역시 존재했다. 가령 text prompt를 CLIP에 주어질때, 너무 많고 상세한 부분들은 차마 모델이 반영하지 못한다는 한계를 가지고 있었고, CLIP 도메인을 넘어가는 Text에 대해서도 잘 작동하지 않는다는 것을 확인할 수 있었다.
이번논문은 2022년에 나온 따끈따끈한 논문으로, 읽는 내내 흥미로웠다. 사실 논문을 보기 전, CLIP과 Edit-NeRF를 알고 있어서 이 둘을 합치면 재미있는 연구가 되지 않을까라는 생각을 했는데, 역시 이런 생각은 누구나 다 했구나라는 생각이 들었다..ㅎㅎ
아래는 CLIPNeRF의 논문주소이다.
https://arxiv.org/abs/2112.05139
댓글 영역