✨ CoCa: Contrastive Captioners are Image-Text
Foundation Models
✨ arXiv 2022. [paper] [code]
✨ Jiahui Yu, Zirui Wang, Vijay Vasudevan, Legg Yeung, Mojtaba Seyedhosseini, Yonghui Wu
✨ Google Research
이 논문은 CLIP의 contrastive loss와 SimVLM의 generative captioning 방식을 사용하여 image-text encoder-decoder 모델을 사전훈련하는 새롭고 굉장히 간단한 모델 디자인 Contrastive Captioner (CoCa)를 소개합니다.
일반적인 encoder-decoder transformer와 달리 CoCa는 decoder 레이어의 첫 번째 절반에서 cross attention을 생략하여 단일 모달 텍스트 표현을 인코딩하고, 나머지 디코더 레이어를 이미지 encoder와 cross attention하여 multimodal image-text representations을 생성합니다.
단일 모달 이미지와 텍스트 임베딩 사이에 contrastive loss를 적용하고, multimodal decoder 출력에 captionoing loss를 적용함으로써 CoCa는 최소한의 오버헤드로 이러한 훈련 목표를 효율적으로 계산합니다.
CoCa는 웹 규모의 대체 텍스트 데이터와 주석이 달린 이미지에서 end-to-end로 사전훈련되며, crossmodal retrieval, multimodal understanding, image captioning 등 다양한 downstream tasks에서 최고 성능을 달성합니다.
Vision과 Vision & Language 분야에서 주요하게 제시하는 모델 후보들은 크게 세 부류로 나눠볼 수 있습니다.
CLIP, ALIGN, Florence가 해당 구조를 띄고 있습니다. 해당 모델들은 image encoder와 text encoder가 있고, web에서 수집한 거대 image-text 데이터셋을 사용해 image feature, text feature를 뽑아냅니다.
그리고 같은 pair의 image feature와 text feature를 최대한 유사하게 만드는 방식으로 모델을 학습합니다. 이러한 이중 인코더 모델은 시각적 및 텍스트 임베딩을 same latent space에 인코딩할 수 있어 new crossmodal alignment capabilities을 제공합니다.
그러나 joint components for fused image and text representations의 부재로 인해서 VQA(Visual Question Answering) 같은 joint vision-language understanding tasks에 직접 적용할 수 없습니다.
해당 구조는 generative pretrain 방식으로 generic vision & multimodal representation을 배우게 하는 구조입니다.
pretraining 중에 모델은 encoder 쪽에서 이미지를 받아들이고, decoder 출력에 Language Modeling(LM) loss(or PrefixLM)을 적용합니다.
이 과정에서 나오는 decoder 출력은 multimodal 이해 작업을 위한 공동 표현으로 사용될 수 있습니다.
pretrained encoder-decoder 구조로 우수한 vision-language 결과를 얻었지만, 이미지 임베딩과 일치하는 text-only representations을 생성하지 않는다는 점 때문에 multimodal alignment 작업에는 덜 실용적이고 효율적입니다.
각 구조들은 형태적인 특징 때문에 수행할 수 있는 task가 각각 한정되어있습니다.
CoCa는 이러한 형태적인 한계를 극복하고, 모델 안에 single-encoder, dual-encoder, encoder-decoder 패러다임을 모두 접목한 image-text based model을 제안합니다.
CoCa는 이미지 annotations data와 노이즈가 있는 이미지-텍스트 데이터 모두에 대해 학습되어 모든 레이블을 텍스트로 처리합니다.
CoCa는 두 가지의 loss를 활용하여 위 3가지의 구조를 활용한 작업에서 이점으로 작용합니다.
Vision Pretraining, Vision-Language Pretraining, Image-Text Foundation Models에 대해 다루고 있습니다.
고전적인 단일 인코더 접근 방식은 일반적으로 주석 텍스트의 vocabulary가 고정된 대규모 데이터셋의 이미지 분류를 통해 시각적 인코더를 사전 학습합니다.
이러한 이미지 주석은 일반적으로 cross-entropy loss로 학습하기 위해 discrete한 클래스 벡터에 매핑됩니다.
여기서 는 ground-truth label 에 대한 one-hot 분포, multi-hot 분포, 또는 smoothed label 분포이다.
그런 다음 학습된 이미지 인코더는 downstream task를 위한 일반적인 시각적 표현 추출기로 사용된다.
사람이 주석을 달고 데이터를 정리해야 하는 단일 인코더 분류를 사용한 사전 학습과 비교하여 이중 인코더 접근 방식은 noisy한 웹 규모 텍스트 설명을 활용하고 학습 가능한 텍스트 타워를 도입하여 자유 형식 텍스트를 인코딩합니다.
두 개의 인코더는 쌍을 이루는 텍스트를 샘플 배치의 다른 텍스트와 대조하여 공동으로 최적화됩니다.
여기서 와 는 번째 쌍에 있는 이미지와 번째 쌍에 있는 텍스트의 정규화된 임베딩입니다.
은 배치 크기이고 는 logit의 크기를 조정하는 temperature입니다.
이미지 인코더 외에도 Dual-Encoder 접근 방식은 이미지-텍스트 검색과 zero-shot 이미지 분류와 같은 crossmodal alignment 애플리케이션을 가능하게 하는 정렬된 텍스트 인코더를 학습합니다.
Dual-Encoder 접근 방식은 텍스트를 전체적으로 인코딩하는 반면, 생성적 접근 방식 (일명 captioner)은 세부적인 세분성(granularity)을 목표로 하며 모델이 의 정확한 토큰화된 텍스트를 autoregressive하게 예측해야 합니다.
표준 인코더-디코더 아키텍처에 따라 이미지 인코더는 latent 인코딩 능력 (ex. ViT나 ConvNets 사용)을 제공하고, 텍스트 디코더는 forward autoregressive factorization 하에서 쌍을 이루는 텍스트 의 조건부 likelihood를 최대화하는 방법을 학습합니다.
인코더-디코더는 계산을 병렬화하고 학습 효율성을 최대화하기 위해 teacher-forcing으로 학습된다. 이전 방법들과 달리 captioner 접근 방식은 비전-언어 이해에 사용할 수 있는 이미지-텍스트 공동 표현을 생성하며 자연어 생성과 함께 이미지 캡션 애플리케이션도 가능하다.
위 그림은 세 가지 학습 패러다임을 매끄럽게 결합하는 간단한 인코더-디코더 접근 방식인 contrastive captioner (CoCa)를 보여줍니다.
표준 이미지-텍스트 인코더-디코더 모델과 유사하게 CoCa는 이미지를 ViT와 같은 신경망 인코더에 의해 latent 표현으로 인코딩하고 causal masking transformer 디코더로 텍스트를 디코딩합니다.
표준 디코더 transformer와 달리 CoCa는 디코더 레이어의 전반부에서 cross-attention을 생략하여 unimodal 텍스트 표현을 인코딩하고 나머지 디코더 레이어를 cascade하여 multimodal image-text 표현을 위해 이미지 인코더에 cross-attending합니다.
결과적으로, CoCa decoder는 unimodal 및 multimodal 텍스트 표현을 동시에 생성하여 contrastive 목적 함수와 generative 목적 함수를 모두 다음과 같이 적용할 수 있도록 합니다.
여기서 과 은 loss 가중치 hyperparameter이다.
단일 인코더 방식의 cross-entropy classification 목적 함수는 vocabulary가 모든 레이블 이름의 집합일 때 이미지 주석 데이터에 적용되는 생성적 접근 방식의 특수한 경우로 해석될 수 있습니다.
Captioning 접근 방식은 텍스트의 조건부 likelihood를 최적화하는 반면 contrastive 접근 방식은 unconditional한 텍스트 표현을 사용합니다.
본 논문은 이 딜레마를 해결하고 이 두 가지 방법을 단일 모델로 결합하기 위해 unimodal 디코더 레이어에서 cross-attention 메커니즘을 건너뛰어 디코더를 unimodal 및 multimodal 구성 요소로 분할하는 간단한 분리 디코더 디자인을 제안했습니다.
즉, 하위 개의 unimodal 디코더 레이어는 causally-masked self-attention이 있는 latent 벡터로 입력 텍스트를 인코딩하고, 상위 개의 multimodal 레이어는 causally-masked self-attention과 cross-attention을 시각적 인코더의 출력에 추가로 적용합니다.
모든 디코더 레이어는 토큰이 미래의 토큰에 attend하는 것을 금지하며 $L_{Cap}에 대한 multimodal 텍스트 디코더 출력을 사용하는 것은 간단합니다.
의 경우 입력 문장 끝에 학습 가능한 토큰을 추가하고 해당하는 unimodal 디코더 출력을 텍스트 임베딩으로 사용합니다.
가 되도록 디코더를 반으로 나눕니다. ALIGN을 따라 288×288의 이미지 해상도와 18×18의 패치 크기로 사전 학습하여 총 256개의 이미지 토큰이 생성됩니다.
가장 큰 CoCa 모델 (“CoCa”)은 이미지 인코더에 10억개의 파라미터가 있고 텍스트 디코더에 21억개의 파라미터가 있는 ViT-giant 설정을 따릅니다. 또한 저자들은 아래 표 1에 자세히 설명된 “CoCa-Base”와 “CoCa-Large”의 두 가지 더 작은 변형을 살펴보았다.
Contrastive loss는 각 이미지에 대해 단일 임베딩을 사용하는 반면 디코더는 일반적으로 인코더-디코더 captioner의 이미지 출력 토큰 시퀀스에 attend합니다.
하나의 풀링된 이미지 임베딩은 글로벌 표현으로서 시각적 인식에 도움이 되는 반면 더 많은 visual token은 로컬 레벨 feature가 필요한 multimodal 이해에 도움이 됩니다.
따라서 CoCa는 task별 attention pooling을 채택하여 다양한 유형의 목적 함수와 다운스트림 task에 사용할 시각적 표현을 커스터마이징합니다.
여기서 pooler는 개의 학습 가능한 query가 있는 단일 multi-head attention layer이며 인코더 출력은 key와 value로 사용됩니다.
이를 통해 모델은 두 목적 함수에 대해 서로 다른 길이의 임베딩을 풀링하는 방법을 학습할 수 있습니다.
Task별 pooling을 사용하면 다양한 task에 대한 다양한 요구 사항을 해결할 뿐만 아니라 pooler를 자연스러운 task adapter로 도입할 수 있습니다.
본 논문에서는 generative loss =256와 contrastive loss =1에 대한 사전 학습에서 attentional pooler를 사용합니다.
분리된 autoregressive 디코더 디자인의 주요 이점은 효율적으로 고려되는 두 가지 학습 loss들을 계산할 수 있다는 것입니다.
단방향 언어 모델은 완전한 문장에 대한 인과적 마스킹 (causal masking)으로 학습되기 때문에 디코더는 한 번의 pass (양방향 접근법의 경우 두 번의 pass와 비교)로 contrastive loss와 generative loss 모두에 대한 출력을 효율적으로 생성할 수 있습니다.
따라서 계산의 대부분은 두 loss들 간에 공유되며 CoCa는 표준 인코더-디코더 모델에 비해 최소한의 오버헤드만 유발합니다.
반면에 많은 기존 방법이 다양한 데이터 소스 또는 modality에 대해 여러 단계로 모델 구성 요소를 교육하는 반면 CoCa는 다양한 데이터 소스 (즉, 주석이 달린 이미지와 noisy한 alt-text 이미지)를 사용하여 end-to-end로 사전 학습됩니다.
이 때, contrastive 및 generative 목적 함수 모두에 대해 모든 레이블을 텍스트로 취급합니다.
사전 학습된 CoCa 모델은 zero-shot 이미지 분류, zero-shot 이미지-텍스트 교차 검색, zero-shot 동영상-텍스트 교차 검색을 포함하여 이미지와 텍스트 입력을 모두 활용하여 zero-shot 방식으로 많은 task를 수행합니다.
이전 관행에 따라 여기에서 “zero-shot”은 사전 학습 중에 모델이 관련 supervision 정보를 볼 수 있지만 전송 프로토콜 중에 supervision 예제가 사용되지 않는다는 점에서 기존의 zero-shot 학습과 다릅니다.
사전 학습 데이터의 경우 다운스트림 task에 대한 모든 가까운 도메인 예제를 필터링하기 위해 도입된 엄격한 중복 제거 절차를 따릅니다.
CoCa는 backbone 인코더를 공유하면서 다양한 유형의 다운스트림 task에 대한 시각적 표현을 커스터마이징하기 위해 task별 attentional pooling (pooler)을 채택합니다.
이를 통해 모델은 feature들을 집계하기 위해 새로운 pooler만 학습하는 고정 인코더로서 강력한 성능을 얻을 수 있습니다.
또한 동일한 고정 이미지 인코더 계산을 공유하지만 task별 head가 다른 multi-task 문제에 도움이 될 수 있습니다.
Linear evaluation은 학습된 표현을 정확하게 측정하는 데 어려움이 있으며 attentional pooler가 현실 애플리케이션에 더 실용적입니다.
동영상 동작 인식 task를 위해 학습된 CoCa 모델을 활성화하는 간단한 접근 방식을 사용합니다.
먼저 동영상의 여러 프레임을 가져와 위 그림과 같이 각 프레임을 공유 이미지 인코더에 개별적으로 공급합니다.
Frozen-feature 평가 또는 fine-tuning을 위해 softmax cross-entropy loss를 사용하여 공간적 및 시간적 feature 토큰 위에 추가 pooler를 학습합니다.
Pooler에는 하나의 query 토큰이 있으므로 모든 공간적 및 시간적 토큰에 대한 pooling 계산 비용이 많이 들지 않습니다.
Zero-shot 동영상 텍스트 검색의 경우 동영상의 16개 프레임의 평균 임베딩을 계산하여 훨씬 더 간단한 접근 방식을 사용합니다. (프레임은 동영상에서 균일하게 샘플링됨).
또한 검색 메트릭을 계산할 때 각 동영상의 캡션을 타겟 임베딩으로 인코딩합니다.
다음은 다른 이중 인코더와 인코더-디코더 기초 모델들, SOTA task 전용 방법들을 CoCa와 주요 벤치마크에서의 성능을 비교한 것입니다.
다음은 이미지 분류 (왼쪽)와 동영상 동작 인식 (오른쪽) 성능을 비교한 표입니다.
다음은 fine-tuning된 ImageNet top-1 정확도를 비교한 그래프입니다.
다음은 zero-shot 이미지-텍스트 검색 결과를 비교한 표입니다.
다음은 zero-shot 이미지 분류 결과를 비교한 표와 그래프입니다.
다음은 zero-shot 동영상-텍스트 검색 결과를 비교한 표입니다.
다음은 vision-language 사전 학습 방법들과 multimodal 이해 결과를 비교한 표입니다.
다음은 image captioning 결과를 비교한 표입니다.
다음은 NoCaps 이미지를 입력으로 하여 CoCa로 생성한 text caption 샘플들입니다.
인코더-디코더 모델과 단일 인코더 모델을 비교한 표입니다. (JFT에서 학습)
목적 함수에 대한 ablation 결과
목적 함수 가중치에 대한 ablation 결과
unimodal 디코더 레이어 수 에 대한 ablation 결과
contrastive text embedding 디자인에 대한 ablation 결과
attentional pooler 디자인에 대한 ablation 결과
저자들은 새로운 image-text 기반 모델 패밀리인 Contrastive Captioners (CoCa)를 제안합니다.
CoCa는 기존의 비전 사전 학습 패러다임과 자연어 감독을 결합하여 image-text pair로 사전 학습됩니다.
이 모델은 인코더-디코더 모델에서 contrastive learning과 caption generation 목적을 효율적으로 결합하여 단일 체크포인트로 다양한 비전 및 vision-language 문제에서 최고 수준의 성능을 달성합니다.
이 연구는 다양한 사전 학습 접근법 간의 격차를 줄이고 이미지-텍스트 기반 모델에 대한 새로운 방향을 동기부여합니다.