[Physical AI 강의] Part 4-2. VLM(Vision-Language Models)

본 정리는 포항공과대학교 Physical AI 수업을 듣고 정리한 리뷰입니다. 틀린 내용이 있으면 댓글로 편안하게 말씀 부탁드립니다.
Part4에서는 VLM(Vision-Language Models)에 대해서 정리해보고자 합니다.

 

Visual Grounding

visual grounding은 언어를 이미지 안의 특정 region에 연결하는 작업이다. 이미지 전체에 라벨 하나를 붙이는 분류와 다르게, 문장이 가리키는 대상이 이미지의 어느 위치인지 찾아낸다.

  • 자연 이미지: "lady right" 같은 표현으로 여러 사람 중 특정 인물을 박스로 지정
  • 위성 이미지: "야구장 남동쪽 약 295m의 육상 트랙" 같은 관계 표현으로 영역 지정

표현이 길고 관계적이어도 텍스트를 이미지의 한 지점에 묶는다는 점은 같다. 언어를 이미지에 grounding한다는 점에서 이런 모델도 VLM의 한 갈래다. 대표가 Grounding DINO다.

Grounding DINO

전통적 detector는 미리 정한 클래스(COCO의 80개 등)만 찾는다. 학습 때 보지 못한 대상은 검출이 안 된다. Grounding DINO는 사람이 언어로 지정한 대상을 검출하는 것을 목표로 한다.

검출 범위는 세 단계로 구분된다.

  • Closed-Set: 미리 정한 클래스("bench", "person")만 검출
  • Open-Set, 새 카테고리: "ear, lion, bench"처럼 사람이 입력한 단어로 검출 (zero-shot 전이)
  • Open-Set, reference sentence: "The left lion"처럼 문장으로 특정 대상 하나를 지목 (referring expression comprehension)

검출 결과를 stable diffusion에 넘기면 대상 교체나 배경 교체 같은 image editing까지 이어진다.

Grounding DINO는 DINO를 확장한 것이다. DINO는 multi-scale feature를 positional embedding과 함께 펼쳐 encoder에 넣고, Query Selection으로 decoder에 넣을 query를 고른다. query가 decoder로 가고 encoder feature가 Key·Value로 쓰인다. 이 Query Selection 단계가 언어로 확장되는 지점이다.

Deep cross-modal fusion

Grounding DINO는 DINO에 언어를 한 곳이 아니라 여러 단계에서 섞는다. closed-set detector의 Backbone → Neck → Head 사이에 text feature가 반복해서 주입된다.

  • Feature Fusion A: neck 앞
  • Feature Fusion B: query 초기화
  • Feature Fusion C: head 단계

fusion은 attention으로 구현된다. Feature Enhancer는 image-to-text와 text-to-image cross-attention을 양방향으로 돌려 이미지와 텍스트를 서로의 정보로 갱신한다. decoder layer에서는 하나의 cross-modality query가 image cross-attention과 text cross-attention을 모두 거쳐 양쪽을 동시에 참조한다. 출력에는 박스가 어떤 단어에 해당하는지 맞추는 contrastive loss와 박스 위치를 맞추는 localization loss가 함께 걸린다.

Language-guided Query Selection

encoder가 만든 수많은 image feature 중 텍스트와 관련 깊은 것을 골라 decoder query로 쓰는 단계다. 연산 순서는 pseudocode를 따라가면 명확하다.

  1. image feature와 text feature를 내적해 점수판을 만든다 (einsum). 각 이미지 토큰이 각 텍스트 토큰과 얼마나 맞는지.
  2. 텍스트 방향으로 max를 취해, 각 이미지 토큰마다 가장 잘 맞는 텍스트와의 점수만 남긴다.
  3. 그 점수가 높은 이미지 토큰을 num_query개 top-k로 고른다.

결과적으로 텍스트와 관련 깊은 이미지 영역이 query로 선택된다. 언어가 "이미지의 어디를 볼지"를 직접 고른다.

Grounded SAM 

SAM은 무거운 image encoder로 image embedding을 한 번 만들어두고, mask·points·box·text 같은 prompt로 빠르게 질의해 객체 마스크를 뽑는다. 여기서 box를 prompt로 받을 수 있다는 점이 Grounded SAM의 입구다.

Grounded SAM은 두 모델을 잇는다.

  1. Grounding DINO가 텍스트 prompt로 bounding box를 만든다.
  2. SAM이 그 박스를 prompt로 받아 segmentation mask를 만든다.

open-vocabulary 검출(텍스트→박스)과 promptable segmentation(박스→마스크)을 이으면 텍스트로 지정한 대상의 픽셀 단위 마스크가 나온다. RAM·BLIP을 붙여 자동 dense annotation을, stable diffusion과 묶어 정교한 편집을 하는 식으로 확장된다.

Video-LLaVA

이미지에 시간 축을 더한 단계다. Video-LLaVA는 LanguageBind encoder로 image와 video를 모두 인코딩하고, share projection으로 두 종류의 시각 feature를 공유 공간에 옮긴 뒤 Vicuna v1.5 같은 LLM에 텍스트와 함께 넣는다.

핵심은 이름 그대로 alignment before projection이다. Macaw-LLM이나 X-LLM은 image와 video에 각각 다른 projection을 두지만, Video-LLaVA는 projection에 넣기 전에 image와 video를 먼저 pre-align한 다음 하나의 share projection으로 보낸다. "이미지와 영상이 같은 장소인가" 같은 질문은 두 신호가 같은 공간에서 비교 가능해야 답할 수 있는데, 이 pre-align이 그 비교를 가능하게 한다.

LanguageBind 

Video-LLaVA의 encoder다. video, infrared, depth, audio, 그 이상의 modality를 서로서로 다 맞추는 대신, 모두 language 하나를 기준으로 contrastive 정렬한다.

  • text encoder는 frozen으로 기준 역할
  • 각 modality encoder는 patch embedding과 token masking을 거쳐 LoRA fine-tuning으로 기준에 정렬

이 구조에서는 새 modality를 추가할 때 다른 모든 modality와 맞출 필요 없이 language에만 정렬하면 된다. 1부의 contrastive를 image-text 두 개에서 language를 축으로 N개로 늘린 형태다.

PointLLM 

PointLLM은 point cloud를 입력으로 받아 3D 객체에 대해 대화한다. 객체 분류에 그치지 않고 색·용도·자세·다른 객체와의 차이까지 자연어로 답한다(예: 공룡 모형에 대해 "티라노사우루스보다 꼬리가 짧다"). 1부의 LLaVA에서 이미지 자리에 point cloud를 넣은 형태다.

Point-BERT

point cloud를 인코딩하는 모델이다. BERT의 masking을 3D로 옮긴 구조다.

  1. 입력 point cloud를 local center 기준으로 여러 point patch로 나눈다.
  2. mini-PointNet으로 각 patch를 embedding 시퀀스로 만든다.
  3. 일부 embedding을 mask token으로 바꿔 Transformer에 넣고, 가린 자리의 원래 point token을 복원하게 학습한다.

복원의 정답은 dVAE 기반 Tokenizer가 만든다. pre-training 전에 point cloud 재구성으로 이 Tokenizer를 먼저 학습해두면 point cloud를 discrete point token 시퀀스로 바꾼다. pre-training 중에는 Tokenizer를 freeze하고 그 token을 정답으로 쓴다. 여기에 고수준 의미를 잡는 contrastive learning을 보조로 더한다. 1부의 masking과 contrastive가 차원만 3D로 바뀌어 다시 쓰인다.

 

지금까지 VLM에 대중적으로 사용되는 연구들을 간략하게 설명했다. 본 수업은 Physical AI 수업인만큼 VLM에 대한 내용은 해당 수준으로만 정리하였다. 자세한 내용은 논문을 따로 읽어보길 추천한다.

 

출처: 포항공과대학교 Physical AI 강의