1. Q-Former

(BLIP-2: https://arxiv.org/pdf/2301.12597)


(1) 목적

  • (Frozen) Vision Encoder & (Frozen) LLM 사이의 “adapter”.

  • 소수의 “learnable 질의 토큰 (query tokens)” 이 Vision 특징을 선택적으로 추출

    \(\rightarrow\) LLM이 사용하기 좋게 “짧은 token sequence”로 정렬


(2) 구조

Notation

  • Patch embedding: \(V\in\mathbb{R}^{N\times d_v}\)
    • Vision encoder를 통과해서 나옴
  • Learnable query tokens: \(Q\in\mathbb{R}^{M\times d}\) (보통 수십 개)


Q-Former의 구조

  • (1) Self-Attn
  • (2) Cross-Attn(Q↔V)
  • (3) FFN

블록을 쌓은 소형 Transformer

\(\rightarrow\) 산출된 \(M\)개 token을 projector로 LLM 임베딩 차원에 맞춰 투사함


Cross-Attention

  • \(\text{Attn}(Q,K,V)=\text{softmax}\Big(\frac{QW_Q (KW_K)^\top}{\sqrt{d}}\Big)\, VW_V\).
    • K,V: Patch embedding
    • Q: Query tokens
    • 위 결과로 나온 token을 LLM 입력으로 사용


(3) Pretraining tasks

  • ITC (image-text contrastive)
  • ITM(image-text matching)
  • 이미지 조건 LM(캡셔닝)


2. 비디오용 Q-Former

비디오는 시간축이 생김!

\(\rightarrow\) Q-Former를 frame × 공간 × 시간으로 확장!


(계열 1) Frame-wise → Cascaded Q-Former

예시: Video-LLaMA


Procedures

  • 단계 1: Frame-wise

    • Frame 별 token 생성
    • How? 각 frame 특징에 공유 가중치 Q-Former를 적용
  • 단계 2: Temporal aggregation

    • 두 번째 Q-Former가 frame들 간 시간 통합 (Temporal aggregation)을 수행
  • 추가: Frame 임베딩 & 시간 Positional Encoding 주입, 오디오용 Audio Q-Former 병행 가능.

    → 장점: 이미지 Q-Former 설계를 직관적으로 비디오로 확장, 모듈성 높음.

    → 단점: 두 단계로 인해 토큰/계산 예산이 늘고, 시간 관계를 명시적으로 강하게 모델링하진 못할 수 있음.


(계열 2) Spatio-Temporal Q-Former (단일기)

예시: Video Q-Former

  • 하나의 Q-Former공간 & 시간을 동시에 질의하도록 설계

  • 입력 전에 Attentive pooling 모듈로 frame/구간 중요도를 가중.

  • 내부에 Expert (e.g., SP-FFN, T-FFN, SM-FFN) 를 두어 공간/시간/의미 정렬을 분담.

    → 장점: 시간 의존성을 Q-Former 내부에서 직접 모델링, 장기 문맥에 유리.

    → 단점: 구조가 다소 복잡, 구현 난이도↑.


수식/목표의 차이(요약)

  • 수식 관점:
    • 이미지형의 \(Q\)가 frame 단위 특징 \(V_t\)만 보던 것에서,
    • 비디오형은 \(\{V_{t}\}_{t=1..T}\) 전체에 대해 시간 인지형 Cross-Attn을 구성
      • 시간 PE/frame 임베딩 포함
  • Cascaded:
    • \[\text{QF}^{(1)}(V_t)\to Z_t\]
    • \[\text{QF}^{(2)}([Z_1,\dots,Z_T])\]
  • Spatio-temporal: 한 번의 \(\text{QF}_{\text{S\)\rightarrow\(T}}(\{V_t\})\)로 통합.


3. Pseudocode

(1) 이미지 Q-Former (BLIP-2)

V = img_encoder(img)          # [N, d_v], frozen
Q = learnable_queries(M, d)   # [M, d]
Z = QFormer_cross_attn(Q, V)  # [M, d]

tokens = proj_to_llm(Z)       # -> feed to LLM


(2) 비디오 Cascaded Q-Former (Video-LLaMA식)

V_t = [img_encoder(frame_t) for t in 1..T]
Z_t = [QFormer1(Q, V_t[t] + time_PE[t]) for t in 1..T]  # frame-wise
Z   = QFormer2(Q, concat(Zt))                           # temporal integrate

tokens = proj_to_llm(Z)


(3) 비디오 Spatio-Temporal Q-Former (단일기)

V = [img_encoder(frame_t) for t in 1..T]
V_hat = attentive_pool(V)            # 중요 구간 가중
Z = QFormer_ST(Q, V_hat, time_PE)    # 한 번에 공간+시간 질의

tokens = proj_to_llm(Z)


4. Summary

항목 이미지 Q-Former 비디오 Q-Former (Cascaded) 비디오 Q-Former (Spatio-Temporal)
질의 범위 공간 공간 -> 시간 공간 & 시간
토큰 예산 M (소수) 1단계 (공간/frame별) + 2단계 (통합)로 다소 증가 단일 모듈, 설계에 따라 효율적
시간 인코딩 필요 없음 frame 임베딩/시간 PE 시간 PE + 내부 시간 상호작용
대표 예 BLIP-2 Video-LLaMA Video Q-Former (ICLR’25 under review)
대표 목표 ITC/ITM/캡션 Video-to-Text, VTM/VTC/VTG VTM/VTC/VTG + 주의적 풀링

Categories: ,

Updated: