InstructBLIP: Towards General-purpose Vision-Language Models with Instruction Tuning
InstructBLIP: Towards General-purpose Vision-Language Models with Instruction Tuning
- NIPS, 2023
- salesforce research, hongkong U, NTU
한줄 요약: blip을 instruct-following하도록 개선 - 모델 구조 변경 + 데이터 format 변경
Abstract
- 대규모 사전학습 + instruction tuning으로 llm은 일반적인 능력을 갖게됨
- 하지만 vlm은 아직 일반화 부족
- 이미지 입력의 분포가 훨씬 복잡하고
- task 종류가 훨씬 다양함
- 하지만 vlm은 아직 일반화 부족
- VLM 사전학습 연구는 다수, 하지만 instruction tuning 연구는 부족한 실정
- 본 연구는 blip2를 기반으로 VLM의 instruction tuning을 체계적으로 연구함
- 데이터셋: 26개의 공개 데이터셋 수집해서 instruction format으로 바꿈
- 모델 구조: 기존 blip2에서 instruction을 고려해서 feature를 추출하도록 구조 변경
- “instruction-aware Query Transformer”
- 결과: 13개 데이터셋으로 학습, 13개 데이터셋의 unseen으로 평가했더니 모두 sota 달성
- blip2보다 좋고 더 큰 크기의 flamingo보다도 좋음
- → 모델 크기보다 구조 + 데이터가 더 중요
- downstream task에 대해서 finetuning하면 더 높은 성능 ex. ScienceQA
- 정량 성능뿐 아니라 실제 출력 품질도 더 좋고, 오픈소스로 모델 공개함
Introduction
- AI의 궁극적인 목표: 사용자가 자연어로 지시하면 어떤 task도 해결하는 단일 모델
- nlp에서는 어느정도 달성됨 - instruction tuning을 통해서
- instruction tuning: 다양한 task를 자연어 instruction으로 학습시키면 새로운 instruction에 대해서도 잘 따름
- nlp에서는 어느정도 달성됨 - instruction tuning을 통해서
- 최근 instruction tuning을 VLM에도 적용하려는 시도들
- 문제점
- 데이터 분포의 다양성 증가
- task의 다양성 증가
→ 하나의 모델이 일반화하기 훨씬 어려움
- 기존 접근 방식
- multitask learning
- 여러 task를 같은 형식으로 학습
- instruction x, unseen에 대한 일반화 능력 낮음
→ task를 섞는 것만으로는 부족함
- LLM + vision adapter 방식
- frozen llm + visual module
- caption 데이터로 학습
- 이 데이터는 제한적이라서 여러 task를 커버 못함
→ 데이터의 다양성이 부족함
- multitask learning
- 문제점
- 본 연구의 방법 InstructBLIP
- 목표: “하나의 모델이 다양한 vision-language task를 자연어 instruction으로 해결할 것”
- 구조
- blip2 기반: frozen image encoder, llm / learnable q-former
- “instruction-aware visual feature extraction”
- 기존에는 이미지 → feature가 고정된 경로
- instruction + 이미지 → feature
- 어떤 피처를 뽑을지 instruction에 따라 달라지도록 함
- instruction을 llm 뿐만 아니라 q-former에도 입력함
- 데이터
- 다양한 instruction 데이터 사용 - vlm의 instruction tuning용
- 26개의 데이터셋을 instruction 형태로 변환
- 11개의 task category를 구성함
- 학습: 13개 데이터셋의 seen
- balanced sampling
- 평가: 13개 데이터셋의 unseen → 일반화 능력 평가
- 모델 - llm
- Flan-T5
- Vicuna
- → 구조가 특정 llm에 의존 x을 보여주기 위함
- 결과
- 여러 vlm task에서 zero-shot sota, finetuning sota 달성함
→ instruction tuning + 구조 개선 → 강한 일반화 능력
- 기여점
- VLM instruction tuning에 대한 체계적인 연구
- 26개 데이터셋을 instruction format으로 변경
- 11개의 task category 구성
- 13개로 학습 / 평가
- 일부 task category를 제외하고 평가 → 강한 일반화 능력 검증
- instruction-aware visual feature extraction
- instruction을 llm뿐 아니라 q-former에도 입력해서 instruction에 따라 task-depndent한 피처를 뽑을 수 있게 됨
- llm 2개로 다양한 구조에서 일관된 성능을 확인
- 다양한 VL task에서 zero-shot SOTA 달성
- fine-tuning에서도 최고 성능을 보임
- VLM instruction tuning에 대한 체계적인 연구
Vision-Language Instruction Tuning
- instructblip의 목표: vlm을 instruction tuning해서 unseen data/task에서도 잘 동작하는 일반화 성능이 좋은 모델 만들기
2.1. Tasks and Datasets
- 데이터셋 수집
- 공개된 vision-language 데이터셋 26개, 11개의 task category
task 종류
- 단순 caption, qa가 아니라 다양한 난이도/형태의 task를 포괄함
- instruction 데이터 생성 방식
- **각 task마다 10~15개의 서로 다른 instruction 템플릿 제작**
- 같은 task라도 다양한 표현의 instruction으로 학습
- 원래 답이 짧은 task의 경우에는 instruction에 ‘briefly’, ‘short’ 같은 표현 추가
- 모델이 항상 짧게만 답하는 bias 방지
- LLAVA Instruct 150k 데이터셋의 경우 이미 instruction 형태여서 추가 템플릿 적용 x
2.2. Training and Evaluation Protocols
- 26개 데이터셋
- held-in 13개
- 학습: held-in의 학습 set
- 내부 평가: held-in의 val/test set
- held-out 13개 → zero-shot 평가 목적
- seen task
- task는 학습했지만, 데이터셋은 처음 보는 경우 → 데이터 분포 변화에 대한 대응 능력 평가
- unseen task
- task도 처음보고, 데이터셋도 처음 보는 경우 → 진짜 일반화 능력 평가
- ex. visual reasoning, visual conversation qa 등..
- seen task
- held-in 13개
- visual dialogue의 경우 - 일부 이미지가 held-in 학습 데이터랑 겹침
- 근데 대체 dataset이 없어서 포함
- 학습 방식
- held-in 데이터셋을 모두 섞어서 학습
- 각 데이터셋에 대해서 instruction template을 uniform하게 샘플링
- 학습 objective: 표준 language modeling loss
- instruction + image → response 생성
- ocr 정보 활용
- 텍스트가 포함된 이미지의 경우 ocr 결과를 instruction에 추가함
2.3. Instruction-aware Visual Feature Extraction
- 기존 방식의 한계
- blip2포함 기존 방식들은 instruction과 무관하게 visual feature를 추출함
- 같은 이미지라도 instruction이 다르면 다른 정보가 필요한데, 기존 방식은 항상 같은 feature를 사용함
- 핵심 아이디어: “instruction을 반영해서 visual feature를 다르게 뽑자”
- InstructBLIP은 BLIP-2 구조를 그대로 사용: image encoder, q-former, llm
1
feature = f(image, instruction)
- 기존 Q-former
- 입력: k개의 learnable query embeddings
- 과정: query들이 image encoder output과 cross attn으로 상호작용
- 출력: k개의 visual vector 생성 → linear projection → llm
- InstructBLIP의 Q-former
- 기존 q-former와 동일하게 2단계의 사전학습 과정을 거침
- visual-language representation learning
- text generation
- 사전학습이 끝난 후, q-former를 instruction tuning함
- q-former의 입력: 기존에 learnable query만 받앗다면, instructblip의 q-former는 query와 instruction을 함께 받음
- query는 image feature, instruction과 모두 함께 상호작용함
- query ↔ instruction은 self attention으로 상호작용함
- 기존 q-former와 동일하게 2단계의 사전학습 과정을 거침
- 결과적으로,
- 기존: image만 보고 피처 추출
- 현재: image, instruction을 모두 보고 피처 추출
- “무엇을 볼지”를 instruction이 결정 → 필요한 피처를 생성
2.4. Balancing Training Datasets
- 여러 데이터셋을 함께 학습할때 …
- 단순 uniform 샘플링
- 작은 데이터셋 → overfit
- 큰 데이터셋 → 학습 부족
- 데이터셋 크기를 고려해야함!
- 단순 uniform 샘플링
- **√(size) 기반 샘플링**
각 데이터셋의 샘플링 확률을 dataset 크기에 비례하도록
1
p_d ∝ √(S_d)
- 왜 √를 쓰는가: 그냥 비례하도록 하면 큰 데이터셋만 자꾸 뽑힘
- √는 uniform 샘플링과 완전 크기 비례 샘플링의 중간값 역할을 함
- 이 size 기반 샘플링을 토대로 하되, dataset/task를 고려해서 weight를 수동적으로 조정함
- 각 task에 따라 난이도와 학습 속도가 다르기 때문
- A-OKVQA (객관식) weight ↓, OKVQA (자유 생성) weight ↑
- 이 샘플링 기법 적용 시 held-in, out 성능 오름
2.5. Inference Methods
- 각 데이터셋 별로 다른 생성 방법을 사용함
- 기본 생성 방식 - 일반적인 경우
- image + instruction → 모델이 자유롭게 답 생성
- 캡셔닝, vqa 등
- 생성된 답을 gt와 비교해서 평가함
- 분류 / 객관식 문제
- vocabulary ranking
- 모델에게 답을 생성하도록 하되, 가능한 답 후보를 제한함
- 후보: {A, B, C, D}
1
log P(candidate | image + instruction)
- **가장 높은 확률을 가진 후보를 선택하게 함**
- ScienceQA, IconQA, A-OKVQA (객관식), HatefulMemes, Visual Dialog, MSVD, MSRVTT (video QA)
- Binary classification 처리
- yes/no 확률 뿐 아니라 pos/neg, true/false 확률 계산에 활용함
- 각 클래스를 좀 더 여러 표현으로 만들어서 안정적으로 확률을 계산함
- video qa: 영상전체를 쓰지 않고 영상에서 4개의 프레임을 샘플링 → feature concat해서 llm에 입력
2.6. Implementation Details
- 구조
- Image Encoder: ViT-g/14
- LLM : FlanT5-XL (3B), FlanT5-XXL (11B), Vicuna-7B, Vicuna-13B
- BLIP-2 pretrained checkpoint 사용
- finetuning 시에도 마찬가지로 q-former만 학습
- query embedding 개수 32개
- 학습 & 하이퍼파라미터
- 60k step
- batch size: 3b모델 - 192, 7b모델 - 128
- a100 40gb * 16개 = 1.5일 학습 시간
Experimental Results and Analysis
3.1. Zero-shot Evaluation
- 13개 held-out 데이터셋에 대해서 평가함 → 보지 않은 데이터에서의 일반화 성능 확인
- 베이스라인: flamingo, blip2
- 모든 데이터셋에서 sota 달성
- blip2 대비 큰 성능 향상 - 특히 동일한 backbone 기준 성능 향상
- 평균적으로 15% 성능 향상
- unseen task에서도 일반화 성능 높음 → videoqa task
- msrvtt-qa
- 비디오 데이터로 학습 안했는데도 성능 향상
- 모델 크기 대비 효율성
- instructblip 4b (flanT5 XL) » flamingo 80b
- 단순히 큰 모델이 중요한게 아님
- visual dialogue 데이터셋에 대해서는 mean reciprocal rank 점수를 사용함
- normalized discounted cumulative gain 점수는 애매하고 일반적인 답도 높은점수를 줌
3.2. Ablation Study on Instruction Tuning Techniques
- **instruction-aware visual feature**의 효과 검증
- 모든 데이터셋에서 성능이 크게 하락함
- 특히 ScienceQA같은 공간적 추론, iVQA와 같이 시간적 추론이 중요한 task에서 성능 하락
- instruction이 있어야 중요한 영역/정보에 attention 가능
- **balanced dataset sampling**의 효과 검증
- 학습이 불안정, 서로 다른 시점에 성능 peak 발생 → 전체 성능이 저하됨
- 요약하자면,
- instruction-aware feature는 성능 향상에 중요함
- balanced dataset sampling은 안정적인 학습을 위해 중요함
3.3. Qualitative Evalution
- 복잡한 시각적 추론 가능
- 상황을 추론, 사건을 유추
- 시각 정보 + 지식 결합
- 유명 작품을 설명
- 분위기 및 은유 이해
- 멀티턴 대화 가능
- 다른 모델들과 비교: gpt4, llava, minigpt-4
- 모두 긴 답변 생성 가능하지만
- instructblip은 더 정확한 visual detail을 포함하고 더 논리적으로 일관된 reasoning
- llava - 길지만 불필요한 내용을 포함
“단순히 길게 말하는 게 아니라, 더 정확하고 맥락에 맞는 답을 생성한다.”
3.4. Instruction Tuning vs. Multitask Learning
- instructblip의 성능 향상 원인이 무엇인가?
- instruction format 덕분인지, multi-task 학습 효과인지
- 2가지 multi-task 방식을 비교해봄
- vanilla multitask
- instruction X
- 원래 input-output 그대로 학습
- 평가할때는 instruction 입력
- task identifier
- 입력 앞에 task 정보 추가
- ex. [Visual question answering:VQAv2] + input
- 평가할때는 instruction or identifier 사용
- heldout dataset - dataset 이름은 안쓰고 task 이름만 사용
- 입력 앞에 task 정보 추가
- vanilla multitask
- held-in 결과
- instruction tuning과 multitask learning과 성능 거의 비슷함
- held-out 결과
- instruction tuning » multitask learning
- multitask는 zeroshot blip2와 비슷한 수준임
- → multitask는 일반화에 도움 거의 안됨
3.5. Finetuning InstructBLIP on Downstream Tasks
InstructBLIP을 특정 데이터셋에 맞게 추가 finetuning했을 때 성능 확인
- 기존 방법은 고해상도 이미지를 사용, visual encoder도 함께 finetuning해서 학습 파라미터 많고, 학습 비용이 큼
- instructblip은 해상도를 224로 유지, visual encoder는 학습 x
- 학습 효율이 크게 향상됨 (더 적은 파라미터로 더 높은 finetuning 성능)
- 모든 데이터셋에서 blip2보다 성능 우수
- 일부 데이터셋에서는 SOTA 달성
- OKVQA에서는 PaLM-E (562B) > InstructBLIP
- 모델 크기 차이가 매우 큼
- LLM 차이
- T5 : 객관식, 분류 문제에 강함
- Vicuna: open-ended 생성에 강함
Related Work
- instruction tuning in NLP
- 템플릿 기반, llm 기반 instruction dataset 생성
- instruction tuned LLM → VLM 확장
- llm에 visual 정보를 주입해서 VL task를 수행하게끔
- blip2, minigpt-4, llava, mPLUG-Owl, MultiInstruct
- instructblip은,
- 다양한 instruction 데이터를 사용
- instruction aware visual feature 추출 구조
Conclusion
- 본 연구는 간단하지만 새로운 vision-language instruction tuning 프레임워크를 제안함
- InstructBLIP은 다양한 unseen task에서 SOTA 달성, 다양한 일반화 능력을 확인, downstream task finetuning에서도 SOTA를 달성
- _“vision-language에서도 instruction tuning이 일반화의 핵심이다”_
This post is licensed under CC BY 4.0 by the author.







