⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜
⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜
📃 BLIP-2에 코드 구현에 대해서는 아래의 글을 참고하시길 바랍니다.
https://velog.io/@tina1975/AI-모델-코드-BLIP-2-모델-코드-이해
📃 BLIP-2 모델을 실제로 실행하는 방법에 대해서는 아래의 글을 참고하시길 바랍니다.
https://velog.io/@tina1975/AI-모델-코드-BLIP-2-모델-실행하기
Abstract에서는 BLIP-2 논문을 작성하게 된 계기과 BLIP-2 모델의 강점에 대해 간단하게 설명합니다.
Vision-Language Pretraining (VLP)의 end-to-end 학습 방식은 모델의 크기가 점점 커지면서 더 많은 비용을 필요로 합니다. 따라서 해당 논문에서는 기존에 학습된 이미지 인코더와 대규모 언어모델 (LLM)을 활용하여 더 효율적인 학습 방법을 제시합니다.
논문에서는 BLIP-2를 통해 더 적은 파라미터를 학습함에도 불구하고 다양한 시각-언어 task에서 뛰어난 성능을 보여줍니다. 또한 이미지-텍스트 생성에서 기존에 없던 Zero-shot 능력이 생겨남을 보여줍니다.
1장에서는 기존 Vision-Language Pre-training(VLP) 연구의 문제점과 이를 해결하기 위한 BLIP-2의 접근 방식에 대해 설명합니다.
Vision-language pre-training (VLP) 연구는 계속해서 발전하고 있습니다. 이에 따라 Vision-language model은 점점 더 다양한 task에서 뛰어난 성능을 보여주고 있습니다.
하지만 지금까지 등장한 Vision-Language Model (VLM)은 모델의 크기가 크고 end-to-end 방식으로 학습됐기에 많은 계산 비용과 학습 데이터를 필요로 합니다.
논문에서는 사전 학습된 이미지 모델과 언어 모델을 부트스트래핑하여 더 효율적인 VLP 방식을 제안합니다. 여기서 부트스트래핑은 기존의 모델들을 활용하여 더 효율적인 모델을 개발한다는 의미 정도로 이해하시면 됩니다.
사전 훈련된 이미지 모델을 사용하여 이미지의 특징을 잘 추출할 수 있고, 대규모 언어모델 (LLM)을 통해 텍스트 데이터에 대한 높은 이해도와 zero-shot과 같은 능력을 활용할 수 있습니다. 또한 사전 학습된 모델을 사용하여 가중치를 고정하는 방식을 통해 Catestrophic forgetting 문제 역시 해결할 수 있습니다.
📃 Catestrophic forgetting에 대해서는 아래의 [논문리뷰]를 참고하시길 바랍니다.
https://velog.io/@tina1975/논문리뷰-CONTINUAL-LEARNING-AND-CATASTROPHIC-FORGETTING
이미지 모델과 LLM을 활용하여 VLM 모델을 개발하기 위해서는 두 모델이 각자 처리하는 데이터가 서로 호환될 수 있도록 하는 것이 중요합니다.
이를 위해서 논문에서는 2단계로 구성된 Vision-Language Pretraining (VLP) 방법을 제시합니다.
첫 번째는 Querying Transformer (Q-Former)를 활용하여 이미지 인코더가 출력한 데이터에서 중요한 시각적 특징을 가져오는 방법입니다. Figure 1의 왼쪽 자료를 보시면 이미지 인코더가 추출한 데이터에서 Query 벡터를 통해 중요한 데이터를 가져오는 것을 확인할 수 있습니다.
두 번째는 Q-Former가 가져온 시각적 특징을 LLM이 이해할 수 있는 형태로 출력할 수 있도록 학습하는 것입니다.

논문의 저자는 해당 논문에서 제안하는 VLP 방법을 BLIP-2라고 이름 붙였습니다.
지금까지의 내용을 정리하면 BLIP-2는 기존의 VLP 방법의 한계를 극복하기 위해 사전 학습된 이미지 모델과 LLM을 사용할 것을 제안합니다. 그리고 서로의 데이터가 호환될 수 있도록 Query-Transformer(Q-Former)를 통해 데이터를 연결합니다.
Q-Former는 서로 다른 종류의 데이터를 연결하기 위해 2단계의 학습을 진행합니다. 첫 번째는 입력 텍스트의 내용을 참고하여 이미지의 특징을 잘 가져올 수 있도록 하는 Representation Learning 단계입니다. 두 번째는 Q-Former의 출력을 LLM이 이해할 수 있도록 Q-Former의 출력을 조정하는 Generative Learning 단계입니다.
이러한 방식을 통해 BLIP-2는 시각적 질문에 대한 대답, 이미지-텍스트 검색, 이미지 캡셔닝과 같은 다양한 task에서 뛰어난 성능을 보여줍니다. 또한 LLM 모델로 OPT나 Flan-T5 모델을 사용할 경우 이미지에 대한 zero-shot이나 높은 추론 능력을 발휘함을 확인하였습니다.

또한 사전 학습된 모델과 경량화된 Query-Transformer(Q-Former)를 활용하기 때문에 Flamingo과 같은 모델에 비해 54배 적은 학습 파라미터를 사용함에도 불구하고 제로샷 VQAv2에서 8.7% 더 뛰어난 성능을 보였습니다. BLIP-2는 성능을 높이기 위해 더 좋은 이미지 모델이나 LLM 모델로 교체할 수 있다는 이점 역시 존재합니다.
- BLIP-2 논문의 등장배경인 VLP의 한계를 살펴보았습니다.
- 기존의 VLP 한계를 극복하기 위해 사전 학습된 모델과 Q-Former 모델을 사용하는 것을 배웠습니다.
- Q-Former를 학습하기 위해서는 Representation Learning과 Generative Learning 2단계 과정을 거쳐야 함을 살펴보았습니다.
- BLIP-2 모델은 기존의 VLP에 비해 더 적은 파라미터를 학습함에도 불구하고 더 좋은 성능을 발휘할 수 있음을 확인하였습니다.
2장에서는 기존의 Vision-Language Pre-training(VLP) 연구들을 두 가지 주요 범주로 나누어 설명합니다.
End-to-end Vision-Language Pre-training(End-to-end VLP)은 이미지와 텍스트 같은 다양한 modality의 데이터를 함께 학습하여, 다양한 시각-언어 관련 작업에서 성능을 향상시키는 Multimodal foundation model을 만드는 것을 목표로 합니다.








3장에서는 사전 학습된 이미지 encoder와 LLM 모델을 연결하는 Query Transformer(Q-Former)의 구조와 2단계 학습 방법에 대해 설명합니다.
이미지 encoder로부터 시각적 특징을 추출하는 역할을 수행합니다.
이미지 encoder와 연결되어 있는 transformer 입니다.
텍스트 encoder와 decoder 역할을 수행합니다.
Figure 2에 있는 것처럼 N개의 text transformer block이 encoder와 decoder의 역할을 수행한다.
Encoder처럼 동작할 때는 N개의 Block을 한번에 통과한 후 문장 전체의 의미가 담긴 [CLS] 토큰을 활용합니다.
Decoder처럼 동작할 때는 [Dec]이라는 토큰을 시작으로 Auto-regressive하게 동작하여 문장을 생성합니다.
Query Embedding은 transformer 레이어를 흐르는 데이터이지만 학습 가능하기 때문에 학습 파라미터로 간주합니다.
논문에서는 총 32개의 Query를 사용합니다.
학습 과정을 통해 각 Query가 이미지에 대해 어떤 질문을 할지 학습합니다.
학습이 완료되면 각 Query는 이미지 encoder의 출력에 최적화된 질문을 던지는 것입니다.
Q-Former에서 학습 가능한 Query Embedding을 생성합니다. 향후 레이어틀 거치면서 해당 Query Enbedding에 이미지의 특징이 담깁니다.
Self-attention 모듈은 입력된 데이터의 관계를 파악하여 맥락적 이해를 높입니다. Figure 2의 self-attention 모듈을 보시면 Image transformer와 Text transformer의 self-attention이 양방향, 단방향, 개별적으로 작동하여 서로 정보를 공유하는 과정을 살펴볼 수 있습니다.
Image transformer의 cross-attention 모듈을 통해 이미지 encoder의 출력 데이터 중 관심 있는 특징을 Query embedding이 가져오는 것을 확인할 수 있습니다.
Feed Forward는 position-wise 구조를 통해 개별적으로 데이터를 정제합니다.

Q-Former는 Image Encoder로부터 시작적 특징을 잘 추출할 수 있도록 학습합니다. 이때 사용되는 학습 전략은 3가지입니다.
Image-Text Contrastive Learning (ITC): 대조학습이라는 이름처럼 이미지와 텍스트의 전반적이 의미적 유사성에 대해 학습합니다.
Image-Text Matching (ITM): 이미지와 텍스트 데이터의 일치 여부를 확인합니다. 이를 통해 이미지와 텍스트이 디테일한 의미적 관계를 학습합니다.
Image-grounded Text Generation (ITG): 이미지를 바탕으로 텍스트를 생성하는 방법을 학습합니다. 이를 통해 Q-Former가 텍스트 생성을 위해 필요한 정보를 잘 가져올 수 있도록 학습합니다.
Q-Former는 위 3가지 학습 전략을 동시에 사용하여 학습을 진행합니다.



Image-Text Contrastive Learning은 Image transformer와 text transformer가 출력한 벡터의 유사도를 계산하는 학습 방법입니다. 이때 Image transformer의 출력은 입력 때 사용했던 Query Embedding의 개수와 같습니다. 그리고 text transformer가 출력한 text vector는 문장 전체의 의미가 담긴 [CLS] 토큰 벡터를 사용합니다. 이후 각 Query 벡터와 [CLS] 벡터의 유사도를 계산 후 가장 큰 유사도 값을 최종 유사도로 사용합니다.

Image-Text Matching 방식은 Image transformer와 text transformer가 출력한 정보가 의미적으로 일치하는지 판단하는 과정입니다. 일치 여부를 판단하는 것이기에 단순히 유사한 정도가 아니라 세부적인 특징까지 고려하여 판단이 이루어집니다.
ITC에서는 각 데이터를 따로 처리하여 유사도를 측정하였는데 ITM에서는 왜 Bidirectional 방식을 사용하였을까요?
ITM은 텍스트 데이터와 이미지 데이터의 세부적인 특징을 비교한다고 했는데 어떻게 그게 가능한건가요??
우리가 transformer 모델을 통해 처리하는 Query 벡터, text 벡터 모두 각자의 의미를 담고 있을 것이다. 하지만 그 값이 discrete한 것이 아니라 다양한 의미가 담긴 continuous한 값이다. 따라서 세부적인 요소를 우리가 정확하게 잘라 가져오는 것은 쉽지 않다.
그런데 우리가 알고 싶은 것은 이미지와 텍스트의 세부적인 정보가 일치하는지 일치하지 않는지 여부이다. 그래서 Q-Former에서는 이미지 데이터와 텍스트 데이터를 함께 self-attention을 수행하는 과정을 거친다. 이것이 Bidirectional 방식이다.
이미지 데이터와 텍스트 데이터가 함께 self-attention 과정을 거치면 서로 유사한 데이터끼리는 유사도가 높아 서로 더 많이 정보를 교환할 것이다. 만약 이미지와 텍스트가 디테일하게 똑같은 데이터라면 각 벡터의 유사도가 높아서 서로 정보를 많이 교환할 것이다. 이 과정을 N개의 Block을 거치며 반복하면 두 데이터는 서로 유사해질 것이다.
반면 이미지와 텍스트의 데이터가 서로 유사하지만 디테일하게 다른 부분이 있다면, 그 부분은 유사도가 낮아 정보의 교환이 잘 이루어지지 않을 것이다. 그 결과 해당 디테일에 있어서는 이미지와 텍스트가 자신이 가지고 있는 특징을 계속 고유하게 유지할 것이다.
Bidirectional 방식을 통해 디테일하게 일치하는 데이터는 더욱 유사한 데이터가 될 것이고, 디테일하게 다른 데이터는 각자의 특징을 유지한 채 최종 벡터로 출력될 것이다.
이렇게 가공된 정보를 통해 두 데이터가 서로 디테일하게 일치하는지 아닌지를 분류할 수 있습니다.
그래서 이 학습 과정을 통해서 최종적으로 학습하는 것은 무엇일까요?? ITM 방식으로 분류를 잘 하기 위해서는 각 Image transformer와 text transformer가 디테일한 특징의 벡터 간 유사도 계산이 잘 되도록 해당 특징을 부각(스칼라 값이 커지는 느낌?🤔)시켜야 할 것입니다. 그래서 Query Embedding과 Feed Forward에서 디테일한 특징이 잘 부각되도록 파라미터 업데이트가 진행됩니다.

Image-grounded Text Generation에서는 text transformer가 지금까지 입력으로 사용되었던 학습 데이터의 텍스트 데이터를 생성할 수 있도록 학습합니다. 이때는 self-attention을 multimodal causal이라는 방식으로 masking을 하는데 텍스트 데이터만 이미지 데이터의 정보를 참조할 수 있도록 하는 방법입니다. 즉 이미지 Query 벡터는 텍스트 데이터의 정보를 가져올 수 없습니다. 이러한 방식으로 통해 text transformer는 계속해서 Image transformer의 이미지 정보를 참고하여 text generation을 수행합니다.
Generative Learning에서는 Q-Former가 최종 출력한 Query 벡터를 LLM에게 전달하여 LLM이 해당 정보를 이해하여 텍스트를 생성할 수 있도록 학습합니다. 이때 Q-Former의 출력을 LLM이 이해할 수 있는 텍스트 임베딩으로 변환해주는 선형 레이어를 추가하고, 해당 선형 레이어를 학습하여 두 modality가 서로 호환 가능하도록 합니다.


Decoder 기반 LLM에는 선형 변환을 거친 Q-Former의 출력을 Decoder의 입력을 넣습니다. Decoder 기반 LLM은 이 정보를 바탕으로 Auto-regressive하게 이미지에 대한 문장을 생성합니다.

Encoder-Decoder 기반 LLM은 선형 변환을 거친 Q-Former의 출력과 이미지에 대한 텍스트 데이터 앞부분을 함께 Encoder에 넣습니다. 이후 Decoder에서 이미지와 텍스트에 대한 정보를 참고하여 텍스트의 뒷 부분을 생성하도록 학습합니다.
아래의 데이터에서 총 1억 2천 9백만 (129M)개의 데이터를 가져와 BLIP-2 학습을 진행하였습니다.



웹에서 수집된 4억(400M) 개의 이미지-텍스트 쌍으로 이루어진 매우 큰 데이터셋입니다
이후 데이터 품질을 높이기 위해 BLIP-large caption 모델을 활용하여 caption을 수정합니다.

4장에서는 다양한 실험을 통해 BLIP-2 모델의 성능을 평가합니다.

BLIP-2 모델은 Table1에서 확인할 수 있듯이 더 적은 파라미터를 학습시키더라도 다양한 task에서 타 모델보다 뛰어난 성능을 발휘하는 것을 확인할 수 있습니다. 지금부터 각 task 별 BLIP의 성능에 대해 알아보겠습니다.
BLIP-2 모델은 기존의 사전 학습된 LLM 모델을 활용합니다. BLIP-2를 구성하는 LLM 모델 중에는 In-context Learning 능력이 뛰어난 모델들이 있습니다. 따라서 BLIP-2 모델은 학습에 사용된 LLM 모델의 프롬프트 이해 능력을 활용하여 다양한 시각적 task를 처리할 수 있습니다.
아래의 Figure 4는 BLIP-2 모델이 다양한 시각적 task에서 뛰어난 zero-shot 능력을 보여줌을 확인할 수 있습니다.

논문에서는 시각적 질의응답에 대한 정량적 평가를 수행하였습니다. 이때 BLIP-2 모델에 사용된 LLM 모델에 따라 다른 프롬프트를 사용하였습니다.
OPT 모델: “Question: {} Answer:” 형태의 프롬프트를 사용합니다.
FlanT5 모델: “Question: {} Short answer:” 형태의 프롬프트를 사용합니다.

Table 2를 보면 BLIP-2 모델이 VQAv2와 GQA 데이터 세트에서 SOTA의 성능을 발휘함을 확인할 수 있습니다.
또한 OK-VQA 데이터셋에서도 Flamingo80B 다음으로 좋은 성능을 발휘합니다.
VQAv2는 VQA보다 더 많은 이미지와 질문-답변 쌍을 포함한 데이터셋입니다.
VQAv2는 VQA의 데이터 분포가 특정 답변에 편향되었다는 한계를 극복하기 위해 더 다양한 데이터를 수집한 데이터셋입니다.

GQA는 시각 질문 응답에 대한 데이터셋입니다.
GQA는 이미지 내의 객체, 속성, 그리고 객체 간의 관계를 구조적으로 표현한 장면 그래프를 통해 모델이 더 복잡한 시각적 추론을 할 수 있도록 만들어진 데이터셋입니다.

OK-VQA는 이미지 내용만으로는 답할 수 없는 질문에 초점을 맞춘 시각 질문 응답(VQA) 데이터셋입니다.
즉 모델이 외부 세계 지식을 결합하여야 해결할 수 있는 데이터셋입니다.
Flamingo80B모델이 BLIP-2 모델보다 성능이 좋은 이유 역시 Flamingo80B모델에 사용된 Chinchilla70B 모델이 BLIP-2모델에 사용된 FlanT5XXL 11B 모델보다 배경지식이 많이 때문이라고 가정합니다.


Table 2를 보면 BLIP-2 모델을 구성하는 이미지 encoder와 LLM의 성능이 높아질수록 더 좋은 성능을 발휘합니다. 이는 자연어처리(NLP), 컴퓨터비전(CV) 분야에서 각 모델의 성능이 발전할수록 BLIP-2의 성능 역시 개선될 수 있다는 사실을 시사합니다.

앞서 설명드렸듯이 이미지 encoder와 LLM모델을 연결하는 Q-Former는 2단계를 거쳐 학습합니다. 첫 번째가 이미지에서 중요한 특징을 추출하는 Representation Learning이고 두 번째는 LLM 모델이 시각적 특징을 바탕으로 텍스트를 잘 생성할 수 있도록 시각적 특징을 적절하게 변형해주는 Generative Learning입니다.
Figure 5를 보시면 Representation Learning을 거친 모델 (빨간색)이 Representation Learning을 생략한 모델 (파란색)보다 더 좋은 성능을 발휘하는 것을 확인할 수 있습니다.
논문의 저자는 BLIP-2 모델이 이미지에 대한 텍스트 설명을 생성하는 이미지 캡셔닝 task를 위해 파인튜닝을 진행합니다. LLM 모델에게는 “a photo of”라는 프롬프트를 사용하고 학습은 이미지 encoder와 Q-Former의 파라미터를 업데이트합니다. COCO 데이터를 사용하여 파인튜닝 후 COCO 데이터의 테스트 세트와 NoCaps 데이터의 검증 세트를 활용하여 평가를 진행하였습니다.

Table 3에서 확인할 수 있듯이 NoCaps 데이터에서 BLIP-2가 SOTA의 성능을 발휘하였습니다.

논문의 저자는 BLIP-2 모델이 이미지와 질문을 기반으로 질문에 대한 답변을 생성하는 VQA task를 처리할 수 있도록 파인튜닝을 진행합니다. 학습은 VQA 데이터를 통해 이루어지며 BLIP-2 모델이 질문에 대한 이미지 특징을 잘 추출할 수 있도록 Q-Former의 text transformer에 질문 데이터를 입력하여 학습을 진행합니다.
Q-Former는 질문 데이터와 사전에 학습한 Query Embedding을 self-attention을 통해 연결하여 Q-Former가 질문에 대한 이미지 특징을 추출할 수 있도록 학습합니다.

Table 4에서 BLIP-2는 Open-ended generation 모델에서 SOTA의 성능을 발휘함을 확인할 수 있습니다. 여기서 Open-ended generation 모델은 질문에 대한 답변을 생성하는 모델입니다. 반면 Closed-ended classification 모델은 객관식 문제처럼 질문에 대한 답변을 선택하는 모델입니다.

논문의 저자는 BLIP-2 모델이 이미지를 통한 텍스트 검색, 텍스트를 통한 이미지 검색 task를 수행할 수 있도록 파인튜닝합니다. 검색을 위해서는 텍스트 생성이 불필요하기 때문에 이때는 LLM 모델을 제외한 이미지 encoder와 Q-Former만을 사용하여 학습을 진행합니다. 학습 데이터로는 COCO를 사용하였으며 COCO와 Flickr30K의 테스트 데이터를 통해 평가를 진행하였습니다.

Table 5에서 확인할 수 있듯이 BLIP-2 모델이 이미지를 통한 텍스트 검색과 텍스트를 통한 이미지 검색 task에서 SOTA의 성능을 발휘함을 확인할 수 있습니다.
또한 논문의 저자는 검색과 관련이 없어보이는 ITG(Image-grounded Text Generation) Loss의 중요성을 평가하기 위해 파인튜닝 과정에서 ITG Loss를 사용하지 않는 실험을 진행하였습니다.

Table 6에서 확인할 수 있듯이 ITG Loss를 사용할 때 Retrieval task에서도 더 좋은 성능을 발휘함을 확인할 수있습니다.

5장에서는 BLIP-2 모델의 한계에 대해 설명합니다.
In-context learning이란 모델에게 몇 가지 예시를 보여준 후 그 예시를 바탕으로 새로운 작업을 수행할 수 있도록 학습하는 방법입니다. 그런데 BLIP-2 모델에서는 In-context learning 기법에서 좋은 성능을 발휘하지 못했습니다.
논문의 저자는 그 원인을 학습 데이터에서 찾습니다. BLIP-2는 학습을 진행할 때 하나의 이미지와 텍스트 쌍에 대해서 일대일 관계만 학습하기 때문에 데이터 상호 간의 관계를 파악하는 능력이 떨어질 수 있습니다.
따라서 논문의 저자는 이미지-텍스트 쌍이 번갈아 사용되는 데이터를 구축하는 것을 향후 과제로 남겨주었습니다.
👍 향후 MLLM에서는 이러한 한계를 극복하기 위해 Instruction tuning 기법을 활용합니다.
논문의 저자는 새로운 이미지 데이터에 대한 정보 부족, LLM 모델의 부정확한 지식, 텍스트 지시에 대한 LLM 모델의 이해 부족 등을 이유로 BLIP-2 모델의 생성 결과의 한계를 지적합니다.

👍 향후 MLLM에서는 이러한 한계를 극복하기 위해 Instruction tuning 기법을 활용합니다.
사전 학습된 Image encoder와 LLM을 사용하기 때문에 기존의 모델이 가지고 있는 위험을 그대로 가져옵니다. 예를 들어, 공격적인 말투, 사회적 편견, 사전 학습한 개인정보 등이 있습니다.
이러한 한계를 극복하기 위해 사전 학습을 진행할 때 유해한 데이터를 필터링하여 학습할 수 있습니다.
6장에서는 BLIP-2 모델의 특징과 논문의 의의에 대해 설명합니다.
BLIP-2 모델을 통해 기존의 End-to-end Vision-Language Pre-training이 많은 계산 비용이 든다는 한계를 극복하였습니다. 또한 BLIP-2는 더 적은 파라미터를 학습하면서 타 모델에 비해 더 뛰어난 성능을 보여주었습니다. Zero-shot에서도 새로운 능력을 획득하였습니다.
결론적으로 BLIP-2 모델은 대화형 멀티모달 AI 에이전트를 개발하는데 밑거름이 될 것입니다.
기존의 MLLM Survey 논문을 읽었어서 논문의 내용이 크게 부담스럽지는 않았다. 논문을 읽을 때마다 새로운 아이디어를 하나씩 배워가는 기분이다. 이번에는 Cross-attention과 self-attention의 활용 방법에 대해 조금 더 깊이 이해할 수 있었다.
BLIP은 상당히 초기 논문인 줄 알았는데 Flamingo🦩 모델이 더 빨리 나왔는 줄 몰랐다. 다음 기회에 한번 읽어보고 싶다.
논문을 읽으면 각 아이디어의 논리가 합리적이라는 생각이 든다. 하지만 실제로 내가 모델을 만들기 위해서는 상당히 많은 컴퓨팅 비용과 데이터가 필요하기 때문에 이러한 생각이 피부로 와닿지 않는 것 역시 사실이다.
이 부분이 극복되면 AI를 공부하는 것이 더 재밌을 것 같다.