본문 바로가기

카테고리 없음

BLIP 논문 리뷰

BLIP

 

Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation

 

부트스트랩이란?

신발에 있는 끈 같은 것

영어에서도 pull oneself up by the bootstraps 라는 표현은 도움 없이 스스로 상황을 개선하는 것(혼자 부트스트랩 올려 신발 신기!!!)

여기서는 모델 자체가 도움 없이 캡션을 만드는 것을 부트스트랩핑 한다고 한 것! 

 

 

요약

기존 비전 언어 모델은 완전 무결한 데이터가 필요했음 

잡음 많은 데이터에도 강건한 모델 만들고 싶다... 

 

BLIP = Bootstrapping + Vision-Language Pre-training

 

1. Image-Text Contrastive Learning (ITC)

2. Image-Text Matching (ITM) - 하드 네거티브도 추출해서 

3. Image-Conditioned Language Modeling (LM)

 

Bootstrapping 

captioning model 통해서 깔끔한 이미지 설명 생성 

self-improvement process이기에 Bootstrapping 이라고 하는 것 

 

Vision Transformer (ViT)와 Transformer 사용 

 

 

1 Introduction

 

기존 문제점 

encoder-decoder models 은 image-text retrieval tasks에서 그닥 성능이 좋지 못함 

웹 데이터 잡음이 많음

 

그래서 BLIP 등장 

Multimodal mixture of Encoder-Decoder (MED) 

멀티 태스크 사전 학습에 효과적, 전이 학습에도 유연하다 

 

Captioning and Filtering (CapFilt):

노이즈가 많은 웹 데이터도 사용 가능하게

captioner 와 filter 로 구성 

 

2 Related Work



3가지로 구성

 

2.1Vision-language Pre-training

웹 데이터 노이즈 여전히 큰 문제 

데이터 효과적 사용 가능한 CapFilt  제안한다 

 

모델이 두 태스크를 할 수 있는가가 가장 큰 문제 

이해 기반 태스크(예 image-text retrieval) 와 생성 기반 태스크(예 image captioning)

그래서 하나가 아닌 여러 멀티모달을 사용하는 것으로 구성 

 

2.2Knowledge Distillation

자기 증류 이미지 분류에서 탁월

captioner 가 의미가 담긴 캡션을 생성하고 filter는 노이지한 캡션을 제거하면서 증류한다 

 

2.3Data Augmentation

NLP에서는 그렇게 흔하지 않다

이 논문에서는 vision-language tasks를 위한 인위적인 캡션을 생성한 것 이용 

 

3 Method

 

3.1Model Architecture

 

visual transformer 사용해서 이미지 쪼개서 인풋으로 

[CLS] token과 함께 인코딩 

이해와 생성 태스크 위해 multimodal mixture of encoder-decoder (MED) 제안 

 

(1) Unimodal encoder

텍스트와 이미지 분리해서 인코딩 

 [CLS] token는 텍스트 데이터 앞에 삽입 

 

(2) Image-grounded text encoder

텍스트를 이미지 정보와 함께 읽는 것 

Cross-Attention (CA): 이것을 통해 텍스트에 이미지적 정보를 넣는 것 

[Encode] Token이란?

[cls] 토큰 같이 image-text pair의 의미 요약한 것 



(3) Image-grounded text decoder

[Decode] 토큰도 마찬가지 

인코더는 이해 Bi-directional self-attention

모든 방향으로 보게 

 

디코더는 생성 Causal (uni-directional) self-attention



3.2Pre-training Objectives

 

학습 목표 → 로스 함수 최소화

 

Image-Text Contrastive Loss (ITC)

Unimodal Encoders에서 진행 

이미지와 텍스트 같은 임베딩 차원에 있게 하려고 하는 것

 similarity로 계산

 

Image-Text Matching Loss (ITM)

Image-grounded Text Encoder에서 진행

binary classifier이다 

둘이 매치되면 1 아니면 0 

hard negative mining해서 헛갈리게 학습도 가능 

 

Language Modeling Loss (LM)

Image-grounded Text Decoder에서 진행

Image + a [Decode] token. 인풋으로 이렇게 넣으면

그러면 캡션을 gpt처럼 생성하는 것 

cross-entropy loss를 사용해 비교 



3.3CapFilt

 

captioner, filter 필터 통해 생성된 데이터가 다시 모델 훈련에 들어간다

 

텍스트 코퍼스 질 높이는 CapFilt 제안

 

CapFilt  in  MED = mixture of encoder-decoder

Captioner

텍스트 디코더에서 사용

Language Modeling (LM) loss 사용

웹 이미지마다 인위적인 캡션 생성

 

Filter

text encoder에서 사용

ITC + ITM loss 사용

Original web text T_w 와 Synthetic caption T_s 비교 

맞지 않는다면 그 캡션은 버린다 

 

4 Experiments and Discussions

 

Implementation Setup

Framework: PyTorch

Hardware: Two 16-GPU nodes

Optimizer: AdamW

Weight decay: 0.5

학습 데이터

구분  데이터셋 이름 특징
사람 작성 COCO, Visual Genome 고품질 이미지-텍스트 캡션
웹 기반 Conceptual Captions, Conceptual 12M, SBU Captions 웹에서 자동 수집된 noisy 데이터
추가 실험용 LAION (115M 이미지) 훨씬 더 큰 규모의 noisy 웹 데이터

 

초록색이 생성한 것

 

 

CapFilt 적용하면 검색과 캡셔닝 모두에서 확실한 성능 향상이 있음

 

 

4.2 Effect of CapFilt 

CapFilt 구성 Captioner + Filter
개별 성능 각자 써도 향상됨
조합 효과 함께 쓰면 성능 극대화
확장성 데이터와 모델이 커질수록 효과 증가

 

 

4.3 Diversity is Key for Synthetic Captions

CapFilt에서 Nucleus Sampling 사용 

Beam Search - 가장 확률 높은 문장을 탐색 (결정적)- "안전하고 일반적인" 문장 생성 캡션은 깔끔하지만 새로운 정보 부족
Nucleus Sampling - 무작위성 있음 (확률 상위 90% 내에서 선택)- 다양하고 예측 불가능한 문장 생성 성능 더 좋음 (비록 noise는 더 많음)

 

창의적인 문장 생성 가능 

 

 

4.4Parameter Sharing and Decoupling

 

사전학습 (Pre-training) 텍스트 인코더 & 디코더는 SA 제외 전체 공유 성능 ↑, 파라미터 ↓, 효율 ↑
CapFilt 파인튜닝 Captioner & Filter는 개별적으로 finetune 성능 ↑, 필터링 성능 유지
CapFilt에서 공유 시 Filter가 자기 출력을 잘 못 걸러서 bias 발생 성능 ↓, 노이즈 제거 능력 ↓

 

  • 공유된 파라미터로 인해, captioner가 생성한 noisy한 캡션조차도 filter가 잘못된 판단을 덜 하게 됨

 

5 Comparison with State-of-the-arts

 

 

BLIP가 여러 비전-언어(V+L) 작업에서 얼마나 강력하고 범용적인 성능을 보이는지를 보여주는 장

 

이미지-텍스트 검색 (Image-Text Retrieval)

BLIP는 CapFilt를 사용한 사전학습 덕분에 검색 정확도에서 SOTA를 초과함

 

이미지 캡셔닝 (Image Captioning)

CapFilt + Nucleus sampling을 통해 생성된 캡션을 학습에 사용하니, 표현 다양성이 높고 성능도 향상

 

VQA (Visual Question Answering)

BLIP는 미세조정 없이도 VQA 데이터셋에서 강력한 성능을 보임

 

Zero-shot 전이 능력 (Generalization)

BLIP는 CapFilt 덕분에 noisy한 데이터로 훈련되지 않아, 다른 도메인에도 잘 일반화됨

 

Ablation Study (구성요소 분석)

CapFilt + Nucleus sampling + ViT-L 조합이 최적

 

 

6 Additional Ablation Study

CapFilt과의 향상은 긴 훈련 시간 때문이 아니다! 

 

CapFilt 데이터셋으로 학습할 때, 기존에 사전학습된 모델을 이어서 학습하는 게 더 좋은가?

아니다 오히려 새 모델을 처음부터 CapFilt 데이터셋으로 학습하는 게 더 좋음

왜??

지식 증류(knowledge distillation)에서처럼 
학생 모델은 교사 모델의 가중치를 그대로 사용하면 오히려 편향(bias) 생김

 

7 Conclusion

  • CapFilt로 부트스트래핑된 새로운 데이터셋으로 사전학습
  • 다양한 synthetic 캡션을 추가하고, 노이즈 캡션은 제거함

앞으로... 

 

 

  • 여러 번에 걸친 부트스트래핑 반복
    → 점점 더 나은 데이터셋을 만들어가며 품질 개선
  • 이미지당 다수의 캡션 생성
    → 더 풍부하고 다양한 학습 데이터 확보
  • 여러 Captioner와 Filter를 앙상블하여 CapFilt 강화
    → 모델 다양성과 안정성 확보