[NeurIPS 2023 Spotlight] 3D-LLM: Injecting the 3D World into Large Language Models

안녕하세요, 마흔번째 x-review 입니다. 이번 논문은 2023년도 NeurIPS에 Spotlight 게재된 3D-LLM: Injecting the 3D World into Large Language Models입니다. 그럼 바로 리뷰 시작하겠습니다 !

1. Introduction

최근 여러 task에서 LLM의 활용이 급격하게 늘어나고 있는 것을 확인할 수 있습니다. 하지만 당시 LLM은 공간적인 관계나 affordance와 같이 실제 3차원의 물리적인 세계를 고려하고 있진 않았습니다. 3차원 공간으로의 확장을 위해 포인트 클라우드와 같이 3차원 표현력을 가진 데이터를 입력으로 받아서 3D와 관련된 task를 수행할 수 있는 새로운 3D-LLM 모델을 구성하고자 하였습니다. 3차원 데이터를 입력으로 받게 되면 LLM은 두 가지 장점이 생기게 되는데요, 먼저 이미지로 보던 단편적인 뷰를 보는 대신 전체 scene에 대한 long-term 메모리를 가질 수 있습니다. 또한 affordane와 공간성과 같은 3차원 속성을 language와 이미지 기반의 LLM을 넘어서 3차원적인 표현으로 추론할 수 있게 되죠.

이러한 장점을 가지는 3D-LLM을 구성하기 위해서는 데이터 수집이 관건이 되겠습니다. 웹 상에 존재하는 많은 양의 이미지-텍스트 데이터와는 달리 3차원 데이터는 턱없이 부족하여 3차원의 FM을 구축하는데 계속해서 bottleneck이 되어왔습니다. 제가 이전 세미나에서 설명하였 듯이 여기서 포인트 클라우드와 쌍을 이루는 language description까지 포함된 데이터를 구축하기에는 거의 불가능한 수준 입니다. 그래서 이러한 한계를 해결하기 위해 본 논문에서는 ChatGPT를 활용해서 language가 포함된 large scale의 3차원 데이터를 구축할 수 있는 새로운 데이터 생성 파이프라인을 제안하게 됩니다.

이러한 파이프라인을 통해 Fig.1와 같이 3D Captioning, Grounding, QA와 같이 다양한 task를 아우르는 약 100만 개의 3D language 데이터를 확보할 수 있었다고 합니다.

그 다음으로는 3D-LLM의 langugage feature와 aligne이 맞는 유의미한 3D feature을 어떻게 얻을 수 있는지가 관건이 됩니다. 이를 위한 한가지 방법으로는 raw하게 이미지와 language 사이의 align을 맞추기 위한 contrastive learning을 사용해서 3D 인코더를 처음부터 학습할 수 있는데요, 흔히 아시다시피 이는 많은 데이터와 GPU 리소스 등을 소모해야 합니다. 그래서 많이 연구되던 방향은 멀티뷰 이미지에서 3D feature을 구성하는 방식이었습니다. 본 논문에서도 기존의 연구 방향을 끌고와서 렌더링된 멀티뷰 이미지를 입력으로 하는 2D 사전학습 feature로부터 3D feature을 얻을 수 있는 extractor을 활용하고 있습니다. 최근에는 VLM, 가령 BLIP이나 Flamingo에서도 사전학습된 CLIP의 feature을 활용해서 VLM을 학습하는 경우도 꽤 존재한다고 합니다. 이렇게 추출된 3D feature는 2D 사전학습 feature와 동일한 공간에 존재하여 2D VLM을 백본으로 사용하면서 3D feature을 입력으로 하여 3D-LLM을 raw한 첫번재 방식보다 효율적으로 학습할 수 있게 됩니다.

또 한가지 고려해야 하는 점은 3D-LLM이 기본적인 3차원 공간 정보에 대한 감각(?)을 가져야 한다고 하는데요, 그래서 language와 3차원 공간에서의 위치 사이에 차이를 좁힐 수 있는 3차원 localization 알고리즘을 구축하였다고 합니다. 이는 추출된 3D feature에 위치 임베딩을 추가하여 공간 정보를 보다 잘 인코딩하도록 설계하였습니다.

이러한 3가지 관점을 고려한 3D-LLM의 contribution을 정리하면 다음과 같습니다.

  1. langauge가 포함된 3차원 포인트를 입력으로 다양한 3D task를 수행할 수 있는 3D-LLM 제안
  2. large scale 3D-langauge 데이터를 구축할 수 있는 새로운 데이터 생성 파이프라인 설계
  3. 렌더링된 멀티뷰 이미지를 통해 유의미한 3D feature을 추출하는 3D feature extractor 활용
    • 3차원 위치 정보를 파악하기 위해 3D localization 알고리즘 개발
  4. 여러 데이터셋(ScanQA, SQA3D, 그리고 3DMV-VQA)에서 실험 결과 SOTA 달성

2. 3D-Language Data Genreation

그럼 앞서 인트로에서 말했듯 첫번째 문제점인 3D-language 데이터 수집의 한계를 해결한 데이터 생성 파이프라인 먼저 살펴보도록 하겠습니다. 물론 3D-language 데이터가 아예 존재하지 않았던 것은 아닌데요, 그러나 기존 데이터셋들은 하나의 3D task만 수행할 수 있으며 데이터 양에 있어서도 굉장히 제한적이었습니다. 그래서 본 논문에서는 결과적으로 많은 3D downstream task에 활용할 수 있는 large-scale의 3D-language 데이터를 생성하려 한 것 이죠.

이를 위해 GPT를 사용하였는데요, Fig.2에서 보이는 것처럼 텍스트를 입력으로 하는 GPT에 데이터를 생성하도록 프롬프트를 넣어주는 3가지 방식을 사용하였습니다.

  1. boxes-domonstration-instruction based prompting
  • 3D scene에서 room과 물체의 AABB 형태의 박스를 입력으로 해서 scene 전체의 의미론적이고 공간적인 정보를 제공합니다. 그 다음 데이터를 생성하기 위해 GPT에 구체적으로 instruction을 주는데 이에 대한 예시는 Fig.2에서 확인할 수 있습니다.
  1. ChatCaptioner based prompting
  • ChatGPT에 이미지에 대한 여러 질문을 던져서 BLIP-2가 그 질문에 답변하는 방식 입니다. 3차원 데이터를 수집하기 위해서 먼저 3차원 장면에 대한 여러 뷰의 이미지를 샘플링하고, 이 이미지를 ChatGPt와 BLIP-2에 제공하여 각 이미지에 대한 캡션을 얻는 것이죠. 그 다음 ChatGPT를 사용해서 멀티뷰 이미지, 즉 장면의 다양한 영역에 해당하는 정보를 나타내는 모든 캡션을 요약해서 장면에 대한 전체적인 description을 구성할 수 있습니다.
  1. Revision based prompting
  • 논문에서는 한 형태의 3차원 데이터를 다른 형태로 옮기는데 사용할 수 있다고 하는데요, 예시를 보면 공간 정보에 대한 설명 → QA 형태로 변형하고 있는 것을 볼 수 있습니다. 결국 똑같은 공간에 대한 정보를 다른 데이터 형태로 변환함을 의미하는 것 같네요.

이렇게 3개의 프롬프트 방식으로 GPT는 다양한 유형의 3D-language 데이터를 생성할 수 있습니다.

3. 3D-LLM

3.1. Overview

이제 데이터를 생성할 수 있으니 3D-LLM을 학습하는 방식에 대해 살펴보도록 하겠습니다. fig.3을 통해 Overview를 먼저 보면, 앞서 최대한 large-scale의 데이터셋을 수집하고자 했지만 이는 여전히 2D VLM을 학습하는데 사용했던 수십 억개에 달하는 이미지-language 데이터 규모에는 미치지 못하는 상태 입니다. 그래서 3D-LLM을 scratch 레벨부터 학습하기에는 한계가 있죠. 게다가 이미지와 달리 3차원 장면 데이터는 이미지에서 쓰이는 ViT나 CLIP과 같은 사전학습된 모델의 인코더를 사용할 수 없는 형태 입니다. 그래서 최근에는 멀티뷰 이미지를 이용해서 3D feature을 추출하는 방식을 제안하고 있었죠. 멀티뷰 이미지를 통해 이미지로 사전학습된 인코더를 사용할 수 있으며 멀티뷰 이미지에서 feature을 추출한 다음에 이를 3차원으로 올려줄 수 있습니다. 그 다음엔 3차원 공간 정보를 모델이 찾을 수 있도록 3D localization 알고리즘을 제안하게 됩니다.

3.2. 3D Feature Extractor

3D-LLM의 학습은 먼저 langauge feature와 aligne이 맞는 3D feature을 형성할 수 있어야 합니다. 이미지로 예시를 들어보면 language suprevision을 통해서 모델을 학습하는 CLIP과 같은 feature extractor가 있겠죠. 그러나 계속해서 이야기하였 듯 CLIP이 학습한 만큼의 데이터 규모를 3D에서는 취득할 수 없기 때문에 처음부터 학습하지 않고 멀티뷰 이미지에서 3D feature을 추출하는 방식들이 구상되고 있습니다. 이러한 연구 흐름을 따라 본 논문에서도 전체 3차원 장면을 여러 멀티뷰로 렌더링하여서 그 이미지들로부터 3D feature을 구성합니다. 이전 연구에 따라 먼저 렌더링한 이미지에 대해 픽셀에 aligne된 dense한 feature을 추출합니다. 그 다음 이 feature로부터 3D feature을 구성하기 위해 3가지 방식을 활용하게 되며 각각 다른 3D 데이터에 사용할 수 있도록 설계되었습니다.

(1) Direct Reconstruction

  • 카메라 파라미터를 사용해서 RGBD 이미지에서 포인트 클라우드를 reconstruction 합니다. 그러고 나서 feature을 reconstruction한 3차원 포인트에 직접 매핑하게 되죠. 이런 방식은 아무래도 reconstruction 과정을 거쳐야 하기 때문에 멀티뷰 이미지의 카메라 pose 정보와 intrinsic 파라미터를 정확하게 알 수 있는 RGBD 데이터에 적합합니다.

(2) Feature Fusion

  • 이미지 feature을 gradslam이라는 걸 통해 3차원 맵에 합치는 방식인데요, dense 매핑 방식과는 다르게 depth와 색상 정보 외에 feature까지 합칠 수 있기 때문에 사용하였다고 합니다. 전체 3D 맵에 slam을 사용하기 때문에 노이즈가 보다 많은 depth map이나 카메라 pose 정보를 가지고 있는 3차원 데이터에 적합할 것 같네요.

(3) Neural Field

  • 최근 연구에서 자주 보이는 키워드라고 생각하는데요, 본 논문에서는 voxel field를 사용해서 컴팩트한 3D 표현을 구축했다고 합니다. 이게 무슨 말이냐면 필드 안의 각 복셀에는 depth와 색상 정보 외에도 feautre가 존재합니다. ray 위에 있는 3D feature와 픽셀의 3D feature을 MSE loss를 사용해서 align을 맞추고 있습니다. 이러한 방식은 렌더링 이미지가 있지만 depth map 데이터가 없고 pose와 intrinsic에 노이즈가 존재하는 데이터에 적합하다고 합니다.

이런 3가지 방식으로 3차원 장면의 < N, D_v >차원의 포인트에 대한 feature을 얻을 수 가 있게 됩니다

++ N : 포인트 수 , D_v : feautre 차원

3.3. Training 3D-LLMs

3.3.1. 2D VLMs as backbones

보통 이미지의 featue을 추출하기 위해서 CLIP과 같은 모델을 freeze한 인코더를 사용합니다. 3D feature extractor을 사용하면 앞선 섹션에서 다룬 3D feature를 이미지와 동일한 공간에 매핑시킬 수 있다는 점을 생각해보면 2D VLM을 백본으로 사용하는 것이 적합하다고 판단하였다고 합니다.

이전의 플라밍고나 BLIP은 asymmetric한 어텐션 알고리즘을 사용해서 크기가 큰 입력을 처리할 수 있는 구조를 활용하고 있습니다. freeze한 이미지 인코더에서 출력된 이미지 feature를 perceiver에게 보내서 고정된 크기의 입력을 생성합니다. 앞선 3D feature extractor를 거쳐서 3D feature가 2D feature와 동일한 공간에 존재하고, perceiver가 동일한 feature 차원을 가진 입력을 처리할 수 있다는 점을 생각해보면 자연스레 포인트 클라우드의 feature도 입력으로 사용할 수 있는 것을 알 수 있습니다. 결국 정리하면 3D feature extractor을 사용해서 이미지 인코더의 feature와 동일한 feature 공간에서 3D feature을 추출한 다음, 사전학습된 VLM 백본에 align 맞춰진 3D feature을 입력으로 넣어서 3D-LLM을 학습하는 것 입니다.

3.3.2. 3D Localization Mechanism

이제 3차원 데이터를 다루는데 중요한 localization 알고리즘 부분 입니다. 3D feature는 language와 align된 이미지 사전학습 feature extractor을 통해 구성되기 때문에 language feature와의 유사도를 계산하여 localization을 수행할 수 있게 됩니다. 하지만 이렇게 단순히 language와 의미론적으로 일치하는 3D feature을 구성하는 것 뿐만 아니라 모델 자체적으로 3차원의 공간적인 정보를 배울 수 있어야 하기 때문에 이번 섹션에서 다룰 3D localization 알고리즘을 제안하게 되는 것이죠. 해당 알고리즘은 크게 두 파트로 구성되는데, 먼저 (1) Augmenting 3D features with position embeddings 입니다. 멀티뷰 이미지 feature에서 합쳐진 3D feature 외에 feature에 위치 임베딩을 추가합니다. 가령 feautre의 사이즈를 D_v라고 주어지면, 임베딩 크기가 D_v/3인 3차원의 위치 임베딩을 생성합니다. 이 모든 세 차원의 임베딩을 가중합해서 3D featuer에 추가하면 됩니다. 다음 파트는 Augmenting LLM vocabularies with location tokens 입니다. 3차원 공간에서의 위치를 LLM과 align을 맞추기 위해서 이전 연구에 따라 vocabulary에 3차원 위치를 임베딩하는 방식을 제안하고 있습니다. 이게 무슨 말이냐면, grounding할 영역은 AABB 형식의 바운딩 박스를 나타내는 연속적인 이산 토큰 형식으로 나타낼 수 있습니다. 바운딩 박스의 연속적인 코너 좌표는 위치 토큰인 (x_{min}, y_{min}, z_{min}, x_{max}, y_{max}, z_{max})로 균일하게 이산화될 수 있다는 뜻 입니다. 이러한 위치 토큰을 추가하고 나면 language 모델의 입력과 출력 임베딩에서 해당 토큰에 대한 가중치를 unfreeze 합니다.

4. Experiments

먼저 LLM 쪽의 실험은 저도 생소한 편이라 기본적인 실험 세팅 먼저 살펴보도록 하겠습니다.

3D-LLM을 위해 세 개의 VLM을 백본으로 실험하였다고 합니다

  • Flamingo 9B
  • BLIP-2 Vit-g Opt2.7B
  • BLIP-2 Vit-g FlanT5-XL

입력과 출력 임베딩에서 새로 추가한 위치 토큰의 가중치를 제외하고는 LLM의 대부분은 freeze된 상태를 유지합니다.

데이터셋은 우선 held-in/held-out 데이터셋으로 나누어 실험을 진행하였습니다. 3D-language 데이터 생성 파이프라인은 여러 task의 held-in 데이터셋을 생성합니다. 학습 데이터는 사전학습용인 Foundation 3D-LLM에 사용하고 나머지 검증/테스트 데이터는 held-in 평가에 활용할 수 있습니다. 반면 held-out 데이터는 Foundation 3D-LLM을 학습하는덴 사용하지 않고, 평가를 위해서 두 개의 held-out 3D QA 데이터셋을 사용한다고 합니다. (ScanQA, 3DMV-VQA)

4.1. Held-out Evaluation

사전학습된 3D-LLM을 ScanQA 데이터에서 finetuning하여 베이스라인 모델들과 비교하고 있습니다.

실험 결과를 살펴보면 먼저 Tab.1은 ScanAQ의 검증 데이터셋에서의 결과이며 Tab.2는 테스트 셋에서의 성능을 평가하였는데, 대부분의 평가 지표에서 성능이 향상한 것을 확인할 수 있습니다. 이러한 결과는 LLM에 3D를 도입함으로써 모델이 GT와 훨씬 유사한 답변을 생성함을 보여주고 있습니다. 또한 3D 기반의 베이스라인은 VoteNet과 같은 detector을 사용해서 물체를 찾은 다음 물체별 feature을 모델에 보내는 반면, 본 논문은 입력에서 명시적인 물체의 representation 없이 전체적인 3D feature을 보낸다는 차이가 있습니다. 이는 모델이 이전 방법론들처럼 명시적으로 물체의 표현력을 제공하지 않아도 시각적인 추론이 가능함을 보여주고 있습니다.

그 다음 기존 2D VLM과의 비교를 살펴보면 싱글뷰나 멀티뷰의 이미지를 입력으로 했을 때 3D-LLM에 비해 성능이 하락하는 것을 확인할 수 있습니다. 특히 멀티뷰 이비지는 전체 scene에 대한 정보를 담고 있음에도 불구하고 멀티뷰 이미지의 feature가 unorder 해져서 3차원 공간에 대한 정보가 손실되기 때문에 3D-LLM에 비해 부족한 성능을 보인다고 분석하고 있습니다.

4.2. More Extensive Evaluation

Held-In Evaluation

마지막으로 3D captioning, 3D-assiste dialog, 그리고 task decomposition 이렇게 3개의 downstream task에서의 held-in 데이터셋에 대한 실험 결과 입니다. 여기서는 추가적인 language 베이스라인을 추가하였다고 하네요. 시각적인 데이터 입력 없이 task를 수행하는 LLM과의 비교를 위한 FlanT5를 비교 모델로 사용하였습니다.

답변에 대한 성능을 평가하기 위해서 Tab.3와 같은 평가 지표를 사용하였습니다. 해당 Tab에 대한 분석은 크게 하고 있진 않은데요, 단순히 3D-LLM이 2D VLM과 FlanT5와 비교했을 때 답변의 성능이 정량적으로 좋은 것을 보면서 고품질의 답변을 생성하고 있다고 리포팅하고 있습니다. 마지막 Fig.4fh 3D-LLM의 예측 결과를 정성적으로 확인하면서 리뷰 마치도록 하겠습니다.

Author: 손 건화

3 thoughts on “[NeurIPS 2023 Spotlight] 3D-LLM: Injecting the 3D World into Large Language Models

  1. 좋은 리뷰 감사합니다.

    LLM에 3차원 표현력을 주기 위한 연구라니 흥미롭습니다.

    boxes-domonstration-instruction based prompting 과정은 3D Scene에 대한 discription을 만들어서 데이터를 생성하는 과정인가요?? 아니라면 3D scene 데이터로부터 다양한 변형을 주어 데이터를 생성하는 과정인가요??

    또한, 해당 분야가 생소하여 실험에 사용한 평가지표에 대해 간단하게 어떤것을 측정하는 것인지 설명 부탁드립니다.

    감사합니다.

  2. 흥미로운 논문 리뷰 감사합니다.

    음… 몇 가지 궁금한 점이 있습니다.
    1. 추가로 학습하기 위해서 사용된 데이터 셋에 대한 세부 정보가 궁금합니다. 3차원 데이터와 언어 정보는 구성하기 정말 어려울 것 같은데 어떻게 생겨먹은 애인지 궁금하네요.
    2. 학습 방식이 어떻게 되는지도 궁금합니다.
    2-1. 3D feature의 차원은 어떻게 될까요? ViT 형식으로 패치로 쪼개는 방식을 쓰는 거라면, 3차원 공간을 어떻게 쪼개는 방식을 사용했는지 궁금합니다.
    2-2. 텍스트와 어떻게 align을 맞춘건지 잘 이해가 안됩니다. ㅜㅜ

  3. 안녕하세요, 좋은 리뷰 감사합니다.

    엄청난 논문이 작년에 나왔다니.. 발전 속도가 참 빠르네요..

    궁금한 점은 (1) Direct Reconstruction에서 depth를 guidance로 주면서 reconstruction을 한다는 뜻으로 보면 될까요? reconstruction 과정에서 스테레오 depth를 생성할텐데 guidance를 제공하면 오히려 노이즈로 작용할 것 같아서요. 여기에 대한 저자의 의견이 있는지 궁금합니다.

    langauge feature와 align이 맞는 3D feature을 형성을 하기 위해 location token을 제공해주었다고 이해하였는데 맞는지 궁금합니다.

    감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다