상세 컨텐츠

본문 제목

[Dacon] BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models #3

Dacon

by grizzly 2025. 7. 7. 15:04

본문

Bootstrap Vision-Language Representation Learning from a Frozen Image Encoder

 

-> 이전 포스팅 된 3가지 학습 목표에 대하여 추가 설명

1. Image-Text contrastive Learning : 이미지 - 텍스트 대비 학습

  • 목적 : 이미지, 텍스트 표현 정렬 (정보 최대화 - 표현 살짝 이해 안감)
    • 양성 쌍의 이미지 - 텍스트 유사도를 음성 쌍들과 대비
    • 이미지 트랜스포머의 쿼리 출력 z와 텍스트 트랜스포머의 [CLS] 토큰 출력 t를 정렬
    • 여러 쿼리 출력 중 텍스트와 가장 높은 유사도를 가진 것을 선택
      • 쿼리 출력 중 텍스트와 유사도가 높다?
      • 쿼리 = 이미지 정보 / 텍스트
      • 이미지 정보와 유사도가 높은 텍스트를 고른다
  • 실제 구현
    • 배치 내에 이미지 - 텍스트 쌍을 넣어서 In-batch negative로 contrastive leaerning(유사도 최대화/최소화)
    • ????

2. Image-grounded Text Generation

  • 목적 : 이미지 기반 텍스트 생성
    • 쿼리 임베딩이 이미지 정보를 요약
    • 텍스트 토큰들이 쿼리와 이전 토큰 정보만 보게 함
      • 이전 토큰만 본다 (텍스트 생성 과정)
      • 쿼리 (이미지 정보)
    • 이미지 인코더 -> 쿼리 임베딩 -> self-attention 흐름으로 텍스트로 정보가 감
  • 실제 구현 시,
    • [CLS] 대시 [DEC] 토큰을 첫 텍스트로 넣어, 이제 생성 시작이라는 표현 전달

3. Image-Text Matching

  • 목적 : 이미지 - 텍스트 쌍이 진짜 서로 짝인지 분류 (positive / negative)
    • 쿼리 임베딩, 텍스트 임베딩이 서로 자유롭게 정보 교환
    • 쿼리의 출력값을 2-class linear classifier에 넣고, 전체 쿼리별 logit을 평균내서 매칭 점수 산출
  • 마스킹
    • 쿼리, 텍스트 서로 접근 가능 (bi-directional mask)
  • 하드 네거티브 마이닝도 사용

이미지 -> 자연어 파이프라인 2가지 방법

공통 절차

  1. Input Image
  2. Image Encoder : 사전 학습된 vit
  3. Q-Former 
    1. 학습 가능 쿼리 임베딩을 이용하여 이미지 특징 요약
    2. 출력을 통해 이미지에서 언어 정보로 전달
  4. Fully connected Layer
    1. Q-Former의 출력을 LLM에서 요구하는 임베딩 차원으로 변환
  5. 이후 사용 모델에 따라 분기

상단

  • Decoder based LLM 방식
  • Fully Connected Layer에서 변환된 쿼리 임베딩을 LLM의 입력 프롬프트처럼 앞에 붙임
  • 일반적인 언어 생성 학습

하단 (약간 힌트주는 느낌?)

  • Encoder Decoder Based LLM 방식
  • LLM이 인코더 디코더 구조
  • Fully connected layer에서 변환된 쿼리 임베딩과 텍스트의 일부 (프리픽스)를 LLM 인코더에 함께 넣음
  • LLM Decoder는 인코더에서 전달된 정보를 바탕으로 나머지 텍스트를 생성
  • Prefix language modeling loss 로 학습

Bootstrap Vision to Language Generative learning from frozen llm

  • Q-Former의 출력 쿼리 임베딩(z)을 완전연결레이어를 통해 LLM의 임베딩 차원 맞게 변환
  • 변환 쿼리 임베딩을 soft visual prompt로 LLM앞에 붙여줌 (텍스트 임베딩 앞) -> prefix느낌
  • 이 쿼리 임베딩이 이미지 -> 텍스트 생성 필요한 정보만 요약해주는 지점
  • LLM이 이미지를 직접 이해 노력 x, Q-Former가 뽑아준 중요한 정보만 사용
    • 데이터 정렬 난이도 낮아짐
    • 망각 문제 완화

Model pre-training 

(데이터셋 선정을 어떤 기준으로 할 지 궁금하다)

  • BLIP(1)와 동일: COCO, Visual Genome, CC3M, CC12M, SBU, LAION400M 등 1억 2900만 장 이상데이터 셋\
  • 캡션 품질 향상:
    • 웹 이미지에는 BLIPlarge 모델로 10개 캡션 생성
    • CLIP ViT-L/14로 이미지-텍스트 유사도 기반 top-2만 사용 (품질 좋은 캡션만)

사전 학습 모델 선정

  • Frozen Image Encoder:
    • CLIP ViT-L/14, EVA-CLIP ViT-g/14
    • 마지막 레이어 대신, 두 번째 레이어 결과 사용(성능 더 좋음)
  • Frozen LLM:
    • OPT(디코더), FlanT5(인코더-디코더)

학습 설정

  • 1단계(비전-언어 표현 학습): 25만 스텝
  • 2단계(생성적 프리트레인): 8만 스텝
  • 대형 배치 사이즈, FP16/ BF16 사용(자원 효율성)
  • 데이터 증강: 224x224, 랜덤 crop, 좌우 플립
  • Optimizer: AdamW, 코사인 러닝레이트 디케이, warmup 등
  • 하드웨어 효율성 덕분에 16xA100(40G)에서 9일 이내로 프리트레인 가능 - ? (wow)

관련글 더보기