-
[2023 Lab Seminar] BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation (ICML, 2022)AI/Multimodal 2023. 10. 3. 19:19728x90
[2023 Lab Seminar] BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation (ICML, 2022)
Introduction : Vision-Language Pretraining (VLP)
먼저 Vision-Language에 대해서 생소하실 수 있는 분들을 위해서 한 번 짚고 넘어가자면,
Vision-Language Pretraining(VLP)은 컴퓨터 비전과 자연어 처리를 결합한 인공지능 모델을 사전 학습하는 방법입니다.
BERT, OpenAI GPT 등 기존 연구들은 대규모 텍스트 데이터를 모아 사전학습 후 미세조정(pre-training and fine-tuning)하는 방식으로 자연어처리 분야에서 매우 뛰어난 성과를 얻었는데요
이 점에서 착안 및 활용을 해서 Computer vision 분야에도 적용하려는 시도들이 생겨났고, 그런 첫 시도로 잘 알고 계시는 CLIP이 제시되었습니다. CLIP과 Align 등 VLP 연구들의 가장 핵심 아이디어는 모델이 텍스트와 이미지 모두를 이해하고 두 유형의 데이터 간의 관계를 학습할 수 있도록 하는 것입니다. 이 두 방법들은 이제 text encoder와 image encoder에서 나온 값들에 contrastive learning을 적용하는 방식입니다.하지만, 이러한 기존 Vision-language pretraining 방식은 두 가지 관점에서 한계점이 있습니다.
먼저, 모델 관점에서의 한계점을 먼저 말씀드리겠습니다.
대부분의 Vision language model 구조는 encoder-based 아키텍쳐를 가지고 있거나 encoder-decoder 아키텍쳐를 가집니다.
첫번째로, 기존의 encoder based 방식은 아무래도 encoder만 사용하기 때문에, image captioning과 같은 text generation task에서 성능이 낮다는 한계가 있습니다.
두번째로, 기존의 encoder-decoder 방식은 image-text retrieval같이 상호 modality간의 이해가 필요한 task의 성능이 좋지 못했습니다.
* ) Image Text Retrieval은 이미지와 텍스트 간의 관련성을 찾는 작업으로, 주로 이미지에 대응하는 설명 또는 텍스트에 대응하는 이미지를 검색하는 데 사용됩니다.두번째로, 데이터 관점에서의 기존 모델들의 한계점을 말씀드리자면,
우리가 잘 알고 있는 CLIP 등 대부분의 기존 모델들은 Web에서 수집 가능한 대량의 image-text pair로 학습됩니다. 물론 이렇게 웹 크롤링으로 dataset을 증가시킴으로써 performance가 증가한다는 장점도 있지만,
이미지와 상관 없는 텍스트 쌍과 같은 noisy web text를 활용하는 것은 성능에 악영향이 있을 수 있습니다.따라서, 앞의 두 한계점을 개선한 BLIP의 main contribution은 크게 두 가지가 있겠습니다.
먼저 Data 관점에서, CapFilt라는 방식을 사용하여Web Data의 품질을 높이는 방식을 사용했으며,
두번째로 Model 관점에서는 MED라는 방식을 제시하여 모든 VL task를 두루두루 잘하는 모델 구조를 제시하였습니다.
BLIP : Bootstrapping Language-Image Pre-training
이 BLIP 논문에서 제시한 CapFilter과 MED에 대해서 자세히 설명드리도록 하겠습니다.
Blip의 전체 framework는 다음과 같은데요,
먼저 MED라고 부르는 Model 구조를 살펴보겠습니다
BLIP 모델 구성은 다음의 세 파트로 이뤄져 있습니다
먼저 Unimodal encoder는 image와 text를 따로 encode합니다. image encoder로 visual transformer를 이용하고, text encoder는 BERT를 사용합니다. Text Encoder의 경우, sentence를 요약하기 위해 text의 시작에 [CLS] token를 붙입니다.
다음으로, Image-grounded text encoder는 text encoder의 각 transformer block에 대해 self-attention과 feed forward network 사이에 하나의 cross-attention layer을 삽입함으로써 visual information을 주입합니다. Input으로는 text에 task-specific한 [Encode] token이 붙여서, [Encode]의 output embedding를 image-text pair의 multimodal representation으로 사용합니다.
마지막으로 Image-grounded text decoder은 아무래도 decoder이기 때문에, image-grounded text encoder와 달리 bidirectional self-attention layers을 causal self-attention layers로 대체합니다. [Decode] token이 sequence의 시작을 나타내고, end-of-sequence token를 붙여 마지막을 나타냅니다.BLIP의 architecture는 아래 세 가지 Objectives를 수행하여 pretrain됩니다
따라서 모델의 전체 loss function의 경우 세 가지 Objectives의 loss를 모두 더한 것을 사용하게 됩니다.
첫번째로 Image-Text Contrastive Loss, 즉 ITC를 먼저 설명 드리자면,
image encoder의 임베딩 값과 text encoder의 임베딩 값을 서로 비교하게 됩니다.
이 때, Contrastive Learning를 해서, 같은 image, text pair에 있는 positive pair의 경우에는 cosine similarity가 높아지고, negative pair의 경우에는 cosine similarity가 낮아지도록 하여 unimodal encoder를 학습시켰습니다.
두번째 목적함수인 Image Text Matching은,
image-grounded text encoder에 text를 넣어서 얻은 임베딩을 image encoder의 임베딩과 cross attention을 시킨 후, 해당 text와 image가 잘 matching이 됐는지 예측하도록 학습시키는 loss를 의미합니다.
마지막으로 Image conditioned LM은 image-grounded text decoder에서 생성된 text를 학습에 활용하게 됩니다.두번째 목적함수와 마찬가지로 Image Encoder에서 얻은 representation을 cross attention을 통해 받아오게 되는데,Language Modeling Loss는 이미지에 맞는 caption이 생성될 수 있도록 decoder를 학습시키는데 활용됩니다.
다음으로는 Dataset를 정제하고, 이미지에 대한 캡션을 생성하는 CapFilt 인데요
CapFilt는 이름대로 Captioner와 Filter로 이뤄져 있습니다.
Captioner는 Image-grounded Text Decoder로 LM loss를 통해 학습되어, web에서 수집한 image에 대한 텍스트, 즉 캡션을 생성합니다.
Filter는 Image-grounded Text Encoder로 ITC와 ITM loss를 통해 학습되어 web에서 수집한 {image, text} pair들과 Captioner가 생성한 {image, text} pair들을 걸러주는 데에 사용됩니다. 이 때, {image, text} pair가 서로 맞지 않게 짝지어진 경우를 제거하는 방식으로 noise를 가질 수 있는 데이터들을 정제하는 역할을 합니다.
Experiments & Results
다음으로는 BLIP에 대한 실험과 그 결과를 말씀드리겠습니다.
본 논문에서는 CapFilt의 효과를 입증하기 위해 다양한 데이터셋으로 pre-train한 모델들을 비교했습니다. 표에서 보이는 것과 같이, captioner나 filter 둘 중 하나만 적용해도 성능이 향상되고, 둘 다 적용되면 서로를 보완하여 성능이 더욱 향상하는 것을 확인할 수 있습니다.
CapFilt를 거친 결과는 figure에서 확인할 수 있습니다.
위쪽의 글은 원래의 웹 텍스트, 아래 쪽의 글은 CapFilt가 새로 생성한 텍스트입니다.
빨간 글씨가 필터가 리젝한 글이고, 초록 글씨가 필터가 선택한 글인데요.
이를 통해 캡셔너가 새로운 텍스트를 생성하는 효과와 필터가 원래의 웹 텍스트와 합성 텍스트 모두에 대해서 캡션을 제거하는 효과가 있음을 확인할 수 있습니다.
* ) ViT-L/16이라면 ViT-Lage이며 입력 이미지의 패치 한 개의 크기가 16인 모델CapFilt에서 synthetic captions을 생성하기 위해 nucleus sampling을 사용했습니다.
언어 모델에서 text generation을 할 때 디코더에서 사용하는 디코딩 전략을 선택하게 됩니다. 같은 모델이더라도 이 디코딩 전략을 어떻게 가져가냐에 따라서 디코딩의 퀄리티가 달라지는데요.
nucleus sampling는 이런 디코딩 전략 중 하나입니다. 다른 디코딩 전략 중 하나인 beam search와 비교했을 때에는, beam search에 비해서는 정확도나 일관성이 떨어지긴 하지만, 다양한 텍스트를 생성할 수 있는 방식입니다.
본 논문에서는 CapFilt에서 nucleus sampling를 사용했을 때 더 좋은 성능을 보였음을 증명했습니다. 이는 Nucleus sampling가 더 다양성이 높은 captions을 생성해 모델이 득을 볼 수 있는 더 많은 새로운 정보를 보유하기 때문이라고 저자들은 해석했습니다.
반면 beam search는 dataset에 흔한 safe captions을 생성해 extra knowledge가 적게 제공될 것이라 합니다.
전체적인 성능을 SOTA 모델과 비교하기 위해서
본 논문에서는, COCO에 finetune된 모델을 사용해 Flickr30K와 COCO로 Image Text Retrieval 성능을 평가합니다.
그 결과 BLIP 모델들이 좋은 성능을 내는 것을 확인할 수 있습니다. 당연할 수 있지만, pretrain에 사용된 이미지가 많을 수록 성능이 더 좋아지고, ViT-Base 보다 ViT-Large 모델을 사용했을 때 성능이 더 높아졌습니다. !다음으로 image captioning의 경우, COCO에 finetune된 모델을 사용해 NoCaps와 COCO 데이터셋으로 image captioning 성능을 평가합니다.
위의 표를 보면 BLIP은 pretrain 시에 비슷한 양의 데이터를 사용한 다른 모델의 성능을 능가하는 것을 확인할 수 있습니다. 다만 Lemon Large의 경우에는 엄청나게 계산량이 많은 pretrained object dector를 탑재하고 고해상도 이미지만을 요구하기 때문에 BLIP의 성능을 조금 뛰어넘긴 합니다만, BLIP은 detector free 모델에 더 낮은 해상도의 이미지도 처리 가능하다는 장점이 있습니다.
*) "Karpathy test split"은 Andrej Karpathy가 그의 PhD 논문 및 블로그 포스트에서 제안한 특정한 이미지 캡션 관련 학습/검증/테스트 데이터 분할 방법을 지칭합니다. 이 데이터 분할은 원래 COCO 데이터셋의 분할과는 약간 다르게, 이미지 캡션 모델을 평가하기 위해 널리 사용되고 있습니다.
Karpathy는 원래 123,000개의 이미지를 학습 데이터로, 5,000개의 이미지를 검증 데이터로, 그리고 5,000개의 이미지를 테스트 데이터로 분할하였습니다.
이 분할 방법은 이미지 캡셔닝 연구에서 특히 일반적으로 사용되며, 여러 연구 논문과 프로젝트에서 참고 기준(benchmark)으로 사용되고 있습니다. Karpathy의 분할 방법이 선택되는 이유 중 하나는, 이 분할이 여러 연구 작업에서 검증되었고, 연구 커뮤니티에서 널리 받아들여졌기 때문입니다.Conclusion & Folliw-up Study
다시 한번 정리하자면, BLIP은 Data의 관점에서, CapFilt를 사용하여Web Data의 품질을 높이는 방식을 사용했으며, Model 관점에서는 MED라는 방식을 제시하여 모든 VL task를 두루두루 잘하는 모델 구조를 제시했다는 contribution이 있습니다.
하지만 여전히 한계점이 존재합니다,
제목에서도 알 수 있듯이, 논문에서 보여주고자 하는 주된 장점은 성능이 좋은 image encoder와 text encoder, 그리고 text decoder 전반을 융합하여 다양한 task에 높은 performance로 적용 가능한 구조를 만들고자 한 것인데요.
그렇기 때문에 여전히 modality gap을 줄이기 위해 수행해야하는 학습 과정이 복잡하다는 한계가 있습니다.이런 한계점을 극복하기 위해 Blip Ver.2가 제시되었습니다.
BLIP 논문이 총 4개의 transformer block 구조를 각각 optimize하는 형태라면, BLIP-2의 process는 단순히 2 step의 pre-training 과정을 통해 vision과 language의 alignment가 가능합니다.
이런 BLIP-2는 다양한 Vision-language task에서 SOTA를 달성했습니다 !올해 3월 GPT-4 공개 이후, LLaMA, Alpaca, Vicuna 등 정말 많은 LLM들이 등장했습니다. 그리고 GPT-4는 instruction tuning 방식을 사용하였는데요. 이런 LLM의 발전은 멀티모달 분야에도 큰 영향을 주고 있습니다.
GPT의 Instruction Tuning를 Vision-Language(VL)와 같은 멀티모달 분야로 확장 적용한 “visual instruction tuning” 방식이 제시되었고 이를 활용한 다양한 모델들이 등장하고 있습니다.
visual instruction tuning를 가장 먼저 제시하고 적용한 모델은 LLAVA로, CLIP의 visual encoder를 Language encoder LLaMA와 연결하여 instruction data로 학습시키는 방식을 사용했습니다.
뒤따라 MiniGPT-4, InstructBLIP, Otter 등 새로운 모델들도 등장했으며, 그 중 MiniGPT-4와 InstructBLIP은 오늘 발표한 BLIP 기반이라고 합니다.
*) Vicuna-13B는 Meta의 LLaMA와 Stanford의 Alpaca에 영감을 받아 UC Berkeley, UCSD, CMU, MBZUAI(Mohamed BinZayed Univ. of AI)가 공동으로 개발한 오픈소스 챗봇*) MiniGPT-4는 vicuna 기반의 multimodal 모델
Language Decoder: 다양한 범주의 복잡한 언어 태스크를 수행하기 위한 언어 디코더로 Vicuna를 사용함
Visual Encoder: BLIP-2에서 사용된 것과 동일한 pre-trained Q-Former와 결합한 ViT 백본을 사용함728x90'AI > Multimodal' 카테고리의 다른 글