Vision & Language

[논문 리뷰] CoCa: Contrastive Captioners are Image-TextFoundation Models

dhk1349 2022. 11. 17. 03:28

  안녕하세요. 오늘 리뷰해볼 논문은 CoCa: Contrastive Captioners are Image-TextFoundation Models라는 논문입니다. CoCa는 Google Research에서 발표한 Vision&Language 논문입니다. CoCa는 Vision&Language 계열의 논문에서 여러 task를 해결하기 위해 제안되었던 여러가지 모델 구조를 하나의 구조로 통합한 모델이라고 합니다. 

 

(https://arxiv.org/abs/2205.01917)

(해당 글은 개인적인 기록을 목적으로 잘못된 내용이 있을 수 있음을 알립니다.)

 

 

0. Abstract

  해당 논문은 CLIP의 contrastive loss와 SimVLM의 generative caption loss 방식을 image-text encoder-decoder구조에 학습시킬 수 있는 굉장히 간단한 모델 디자인을 제안했습니다. 저자는 해당 모델을 Contrastive Captioner(CoCa)라고 부릅니다. Encoder-decoder라고 나와있는 것에서 유추할 수 있듯이 기본적으로 transformer encoder와 transformer decoder를 encoder / decoder로 사용하고 있습니다. 

 

  하지만 여기서 특이한 점은 transformer decoder의 앞 쪽 절반은 encoder output과 cross-attetion을 하지 않고, 나머지 뒤 쪽 절반에서는 encoder에서 나온 output으로 cross-attention을 수행한다는 점 입니다. 그림과 함께 풀어 말하면 Encoder는 image를 입력으로 받고 Deocder는 Unimodal Text Decoder, Multimodal Text Deocer로 나뉘어져있습니다. Decoder에서는 image와 쌍을 이루는 text caption이 입력으로 autoregressive하게(tranformer decoder니까) 들어갑니다. 그 중 Unimodal Text Decoder는 text만 입력으로 받아서 feature를 뽑아내기 때문에 명칭은 decoder지만 사실상 text encoder라고 봐도 무방합니다. 읽은지가 오래되어서 가물가물 하지만 이 부분만 보면 GPT와 거의 같은 구조라고 보여집니다. 그리고 그 뒤에 image encoder와 unimodal text decoder의 output token들로 Multimodal text deocder가 fused attention을 계산하며 image에 대한 caption을 autoregressive하게 생성합니다.

 

CoCa 구조
CoCa 구조

 

  Pretrain loss로는 contrastive loss, captioning loss가 사용되었습니다. 성능은 뒤에서 간단하게 언급하겠지만 zero-shot transfer의 경우, SOTA급의 성능을 보였고, 다양한 VL task를 수행할 때 마치 레고를 붙였다 떼는 것처럼 모델의 모듈들을 조립해서 visual recognition, crossmodal retrieval, multimodal understanding, image captioning 등의 폭넓은 downstream task 수행이 손쉽게 가능하다고 합니다. 마찬가지고 downstream task들에서도 좋은 성능을 보여주고 있습니다. 

 

 

1. Introduction

  Vision과 vision&language 분야에서 주요하게 제시하는 모델 모형들은 크게 세 부류로 나워볼 수 있습니다. 

 

  첫 번째는 single-encoder models 구조입니다. 해당 유형에 해당하는 Image encoder 같은 경우에는 이미지의 라벨을 사용한 image classification을 통해 cross-entropy loss를 모델에 흘려주면서 여러 시각 데이터를 잘 이해할 수 있는 모델을 pretrain 할 수 있었다고 합니다. 하지만 이런 식의 모델들을 class label로 부터 자유롭기가 힘들고 완전 형식이 정해져있지 않은 "자연어"를 이해하는데에는 무리가 있다고 합니다. 

 

  두 번째는 dual-encoder models 구조입니다. CLIP, ALIGN, Florence가 해당 구조를 띄고 있습니다. 해당 모델들은 image encoder와 text encoder가 있고, web에서 수집한 거대 image-text 데이터셋을 사용해 image feature, text feature를 뽑아냅니다. 그리고 같은 pair의 image feature와 text feature를 최대한 유사하게 만드는 방식으로 모델을 학습합니다. 이렇게 되면 image feature와 text feature는 embedding space를 공유하게 됩니다. 이러한 특징을 통해 image-text retrieval, image classification이 가능해집니다. 하지만 VQA 같이 joint vision-language understanding tasksms 수행할 수 없다고 합니다. 

 

  세 번째는 encoder-decoder models 구조입니다. 해당 구조는 generative pretrain 방식으로 multimodal representation을 배우게 하는 구조입니다. Encoder에서는 이미지를 받고 decoder에는 해당 이미지에 대한 text를 생성하는 방식으로 학습을 진행합니다. 해당 구조는 multimodal understanding을 필요로하는 task들을 수행할 수 있습니다. 하지만 해당 구조는 text에서 image와 고유하는 embedding space의 feature를 뽑아낼 수는 없는 구조입니다. 그래서 dual-encoder models 구조가 수행하는 task를 수행하기에는 문제가 있습니다. 

 

  각 각의 구조들은 형태적인 특징 때문에 수행할 수 있는 task가 각각 한정되어있습니다. CoCa는 이러한 형태적인 한계를 극복하고, 모델 안에 single-encoder, dual-encoder, encoder-decoder 구조를 모두 녹인 형태를 제안합니다. 위에 나온 CoCa 구조와 abstract 부분에서 드렸던 구조를 기반으로 설명을 해보겠습니다. CoCa를 위 세 형태로 사용할 수 있는 방법이 위 그림에 나와있기도 합니다. CoCa에서 image encoder 부분만 떼서 사용하면 single encoder처럼 사용이 가능합니다. 그리고 Image encoder와 Unimodal Text Decoder만 사용하면 dual-encoder model처럼 사용이 가능합니다. 또한 완전한 형태로 사용하게 되면 encoder-decoder 구조처럼 사용이 가능합니다. 이러한 것이 가능한 것은 dual-encoder 구조에서 사용하는 contrastive loss와 encoder-docder 구조에서 사용하는 LM loss를 동시에 사용하여 학습하기 때문입니다. Single-encoder로 사용할 경우에는 3 장에 나와있는 내용으로 유추하건데 그냥 따로 떼서 pretrain을 진행하고 사용하는 것 같습니다. 그리고 visual encoder 부분은 transformer encoder(ViT)라고 다른 모델을 사용할 수도 있다고 합니다. 

 

 

2. Related Work

  Vision Pretraining, Vision-Language Pretraining, Image-Text Foundation Models에 대해 다루고 있습니다. 궁금하신 분들은 논문을 참고해주시면 좋을 것 같습니다. 

 

3. Approach

Training CoCa
Training CoCa

3.1. Natural Language Supervision

Single-Encoder Classification

해당 방법으로 모델을 학습할 때는 visual encoder를 image classification을 통해서 pretrain하면 된다고 합니다. 개인적으로 이건 그냥 전체 모델이 학습할 때 같이 object로 들어가는 것도 아니고 따로 떼서 pretrain하는데 이걸 형태를 합쳤다라고 표현하긴 좀 애매하다는 생각이 듭니다.

 

Dual-Encoder Contrastive Learning

Contrastive Loss
Contrastive Loss

Dual-Encoder 형태를 학습하기 위해서 Image Encoder와 Unimodal Text Decoder에서 뽑아낸 image representation과 text representation의 cls token을 가지고 NxN contrastive loss를 모델에 흘려줍니다.

 

Encoder-Deocder Captioning

Caption Loss
Caption Loss

Decoder의 최종 연산 값으로 이미지에 대한 caption을 autoregressive하게 하고 이를 GT caption과 비교해서 loss 계산을 합니다. 

3.2. Contrastive Captioners Pretraining

Total Loss
Total Loss

전체 모델을 pretrain하기 위한 전체 loss term입니다. 

 

3.3. Contrastive Captioners for Downstream Tasks

작성 중

 

4. Experiments

4.1. Training Setup

 

 

4.2. Main Results

 

 

4.3. Ablation Analysis