CLIP papaer
https://arxiv.org/pdf/2103.00020
Abstract
현 컴퓨터 비전 시스템은 시각적 개념을 추가로 학습시키기 위해서 항상 새로운 데이터가 필요하다는 단점이 있다. 이미지에 대한 raw text 를 학습하는 것(아마도 캡션) 은 유망한 방법이다.
어떤 캡션이 어떤 이미지를 설명하는 것인지 를 학습하는 pre-training 방법이 이미지 representation 을 학습하는 데에 얼마나 효율적인지 보인다.
약 400 million (image, text) pairs 데이터셋을 사용한다. pre-training 이후 자연어를 이용하여 이미 학습되었거나 새로운(downstream task) 비전 개념에 대해 모델이 알 수 있다.
OCR, action recognition in videos, geo-localization 등의 30가지의 다양한 컴퓨터 비전 태스크를 사용하여 benchmarking 하였다.
https://github.com/OpenAI/CLIP : 학습 코드와 pre-trained 모델의 weight 확인 가능.
GitHub - openai/CLIP: CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image
CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image - openai/CLIP
github.com
2. Approach
2.1. Natural Language Supervision
자연어 안에 있는 supervision 으로 개념을 학습.
이는 라벨링된 이미지와 비교 했을 때 1-of-N majority vote 를 사용하는 annotation 이 필요없다. 또한 unsupervised 나 self-supervised learning 처럼 제로샷에 flexible 할 수 있다.
2.2. Creating a Sufficiently Large Dataset
기존의 3가지 데이터셋이 있다.
MS-COCO, Visual Genome : crowd-labeled 데이터셋, 100,000개 학습 데이터.
YFCC100M : 100 million 이미지, 라벨의 퀄리티가 다양하다. 그래서 자연어 제목과 description 만 가진 이미지를 추리면 6~15M 사이즈가 되는데 이는 ImageNet과 비슷한 크기이다.
원래 natural language supervision은 매우 많은 양의 데이터셋에서 학습하는 것이 주요 motivation 이었기 때문에, 새로운 400 million (image, text) pairs 데이터셋을 구축하기로 한다. 이때 데이터셋에 포함된 최대 word 개수는 GPT-2 를 학습한 WebText 와 비슷한다.
이 데이터셋 이름은 WebImageText (WIT) 이다.
2.3. Selecting an Efficient Pre-Training Method
기존 VirTex 와 비슷하게 이미지 cnn 과 텍스트 transformer 를 함께 학습하여 이미지 캡션을 학습하도록 한다.
bag-of-words encoding baseline 로 시작하여 predictive objective 를 그림 2처럼 contrastive objective로 바꾼다. ImageNet 데이터셋 기준으로 zero-shot transfer 속도에서 효율성이 4배 향상되는 것을 확인하였다.
N개의 (image, text) 쌍의 batch 가 주어졌을 때 CLIP 은 batch 안에서 N × N 의 가능한 (image, text) 조합을 예측하도록 학습된다.
이를 위해 멀티모달 임베딩 space 에서 batch 안의 N 개 pair 의 text 와 이미지 임베딩은 cos similarity 가 서로 크도록, 나머지 N^2-N 의 틀린 쌍에 대해서는 유사도를 최소화하도록 joint 학습한다.
이 유사도를 사용하여 symmetric cross entropy loss 를 최적화한다. (그림 3=수도코드) 이는 contrastive learning의 InfoNCE loss 등과 비슷하다.
CLIP 은 이미지 인코더를 ImageNet 데이터셋으로 초기화하거나 텍스트 인코더를 pre-trained weight로 초기화하지 않고 scatch 부터 학습하였다.
그리고, representation 과 contrastive embedding space 사이에 non-linear projection 을 사용하지 않았다. 그 대신 linear projection 만 사용하여 인코더의 representation 을 멀티모달 임베딩 space 에 매핑하였다.
이 두 버전 사이 training 효율성 차이는 확인하지 못했고, 근데 non linear 는 self-supercised representation 학습 방법에서만 이미지 디테일에 대해 적응된다고 짐작한다.
또한 이 연구에서는 CLIP 의 pre-training 데이터셋의 대부분 쌍 데이터가 1문장으로 이루아져잇기 때문에 텍스트 중에서 1개 문장을 균일하게 샘플링하는 텍스트 transformation 함수 t_u 를 zhang 논문(아마 medical 적용 visual 모델) 에서 제거하엿다.
또한 이미지 transformation 도 간략화하였다.
Resized 이미지에서 랜덤 square crop 하는 것은 학습에서만 사용되는 데이터 augmentation 에서만 사용한다.
마지막으로 softmax의 logit 을 조절하는 temeprature 타우를 학습중에 log-parameterized multiplicative 스칼라로 사용하여 하이퍼 파라미터로 튜닝할 필요없이한다.
2.4. Choosing and Scaling a Model
이미지 인코더는 2가지 모델을 고려중.
- ResNet-50 (ResNet-D improvements, antialiased rect-2 blur pooling) : global average pooling 을 attantion pooling 으로 대체. 이거는 멀티 헤드 QKV 어텐션을 1개 레이어로 구현한건데 이때 이미지 쿼리가 gap pooling 을 거침.
- ViT : 기존 모델에 layer norm 을 추가
그리고 텍스트 인코더는 63M transformer 를 사용., Max seq len=76(?)
마지막 레이어의 [EOS] 를 feature representation 을 사용하여 layer norm 하고 linear projection 한 후 멀티모달 임베딩으로 사용.
2.5. Training
Mixed-precision, gradient checkpointing 사용 등 학습 조건 기술,,