BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation
CLIP이 생각나는 이름인 BLIP...!! 논문의 내용과 결과도 훌륭하지만, 이름을 정말 잘 지었다는 생각이 드네요. 리뷰 시작하겠습니다!
2줄 요약
1. 기존 VL-Pretraining 모델에서 사용한 web data의 noisy caption 문제 -> CapFilt 구조 제시를 통해 해결
2. Text generation, Image-text retrieval task를 모두 잘하는 새로운 모델 구조 제시(MED)
Abstract & Introduction
CLIP, ALIGN의 등장으로 Large web scale 데이터로 VLP(Vision-Language Pretraining) 모델을 학습시키기 시작했습니다. 다만, Large web scale 데이터의 특성상 image와 text 데이터에 noise가 많다는 한계점이 존재했는데요. 2022년 1월에 등장한 BLIP은 잘못된 캡션을 걸러내고, 새로운 캡션을 사용하여 데이터 셋을 bootstrapping하는 CapFilt 구조를 제시하여 위의 한계점을 극복하고자 했습니다.
또한, 기존의 VL- pretraining 모델들은 구조적 한계 때문에 특정 task(Image understanding, Text generation 등)에만 강력한 모습을 보이는 경향이 있었습니다. BLIP은 새로운 모델 구조인 MED를 통해 강한 일반화 성능을 보이는 VLP 모델을 선보이며 다양한 VL task에서 SOTA에 등극하였습니다.
Main Method
BLIP은 ALBEF라는 논문에서 제시한 모델과 유사한 구조를 가지고 있습니다. Image, text 데이터를 encoder(ViT, BERT 등)로 인코딩하고, task에 맞는 Loss 함수를 활용하는데요. 하나씩 살펴보겠습니다.
1. ITC(Image-Text Contrastive Loss):
- Contrastive Learning의 개념을 그대로 도입하여, 같은 {image, text} pair에 있으면 코사인 유사도가 높게, 반대면 유사도가 낮게 나오도록 학습합니다.
- 예를 들어, 한 batch에 16개의 데이터가 있다고 가정해봅시다. 하나의 이미지는 자신과 매칭된 한 개의 text와만 positive pair 관계에 있고, 나머지 15개의 text에 대해 negative pair가 되도록 학습합니다.
- Noisy web 데이터의 특성상, 잘못된 정보가 많으므로 이를 제어해주기 위해 momentum encoder를 사용해서 pseudo-label을 생성하여 활용합니다. 이를 통해 이미지를 더 풍성하고 정확한 의미를 가진 캡션과 연결할 수 있게 됩니다.
2. LM(Language Modeling Loss):
- image를 보고 text를 생성할 수 있도록 학습합니다.
- Image encoder를 거쳐서 나온 이미지 정보를 Cross-Attention 연산을 통해 받아서 해당 이미지에 대한 캡션을 생성하게 됩니다.
3. ITM(Image-Text Matching Loss):
- {image, text} 쌍이 match 됐는지 예측하도록 학습합니다. LM과 마찬가지로 이미지 정보를 Cross-Attention을 통해 받습니다.
- 학습 과정에서 negative sample을 선택할 때, 최대한 image나 text와 semantic 정보가 비슷한 hard negative sample을 선택해 학습합니다.
CapFlit
- 인간이 직접 제작한 {image, text} pair로 Captioner(Image-grounded Text-Decoder)를 학습하고, web에서 수집한 image에 대한 캡션을 생성합니다.
- 인간이 직접 제작한 {image, text} pair로 Filter(image-grounded Text Encoder) 학습하고, web에서 수집한 {image, text} pair, 그리고 Captioner로 생성한 {image, generated_text} pair를 각각 Filter에 통과시킵니다. 이 때, image, text가 서로 안 맞는 경우를 제거하는 방식으로 Noisy web data 문제를 해결했습니다.
Results
CapFilt의 성능을 평가한 실험 결과는 다음과 같습니다.
실제 캡션이 CapFilt로 어떻게 바뀌었는지 보면, 확실히 BLIP의 성능이 더 확 와닿는 것 같습니다.
모델의 파라미터 수를 줄이기 위해 layer들의 파라미터를 공유하는 방법을 사용했는데요. Self-Attention layer를 제외한 layer들의 파라미터를 공유하니 성능도 올라간 것이 인상적입니다. Self-Attention layer의 경우 encoder와 decoder의 작업 자체가 다르기 때문에 충돌이 일어날까봐 공유하지 않았다고 논문에서 언급합니다.
Image-text retrieval 부분에서 SOTA를 달성했습니다. 성능이 무시무시하네요.
모름지기 Pretraining 모델이라면, Zero-shot 성능을 확인 안 해볼 수 없는데요. 기존 방법론들과 상당한 차이를 보입니다.
Image captioing의 경우에도, 대부분 BLIP의 성능이 기존 모델들보다 우수합니다. LEMON 모델이 더 성능이 좋은 부분도 있지만, LEMON 모델 자체의 크기가 너무 커서..사실상 BLIP이 더 효율적이라고 봐도 될 것 같네요.
이외에도, 아래와 같은 다양한 실험을 통해 BLIP의 성능을 입증하였습니다.
Conclusion
Large dataset으로 학습하는 VLP 모델이 늘어나면서, 모델 구조 뿐만 아니라 데이터 셋, 또는 NLP supervision의 관점에서 성능을 높이려는 연구들이 등장하고 있습니다. 특히, 최근 등장한 BLIPv2 논문은 그 성능으로 인해 많은 주목을 받았는데요. 다음 아티클에서는 BLIPv2에 대해 리뷰해보겠습니다.
'논문 리뷰' 카테고리의 다른 글
📹빠르게 보는 BLIPv2 논문 리뷰📹 (0) | 2023.03.05 |
---|---|
📎빠르게 보는 CLIP 논문 리뷰📎 (0) | 2023.03.01 |