My Vision, Computer Vision

[논문 리뷰/요약] CLIP : Learning Transferable Visual Models From Natural Language Supervision 본문

Paper

[논문 리뷰/요약] CLIP : Learning Transferable Visual Models From Natural Language Supervision

gyuilLim 2025. 1. 20. 12:55

 

 

 

Learning Transferable Visual Models From Natural Language Supervision

State-of-the-art computer vision systems are trained to predict a fixed set of predetermined object categories. This restricted form of supervision limits their generality and usability since additional labeled data is needed to specify any other visual co

arxiv.org


Abstract

  • 기존 State-of-the-art 컴퓨터 비전 모델은 사전에 정의된, 고정된 객체 범주, Train data set 안에서만 훈련된다. 즉 새로운 카테고리의 객체는 학습하지 못한다.
  • 따라서 이러한 Supervision의 고정된 형식은 모델의 Generality와 Usability를 감소시키고, 다른 분야에 적용할 때 Fine-tuning같은 추가적인 작업이 필요하다.
  • 본 논문은 4억개의 대량 (Image, Text) pair에서 어떤 캡션이 어떤 이미지와 일치하는지와 같은 간단한 학습 방법으로, 모델을 From scratch 방식으로 Pre-training한다.

 

Infroduction and Motivating Work

  • Task-agnostic objective(특정 태스크에 구애받지 않는 모델)에 대한 연구가 진행되면서 Zero-shot transfer에 대한 가능성이 대두되고있다.
  • 예를 들어, “Text-to-text” Task에서 훈련된 모델이 질문에 대한 답변, 번역, 혹은 요약 등으로 특정 태스크에 구애받지 않고 사용될 수 있는 것이다.
  • “Zero-shot” 이란, 모델이 특정 태스크에 대해 훈련되지 않았음에도 불구하고 Pre-training된 데이터를 기반으로 새로운 태스크를 처리할 수 있는 능력을 말한다.
  • Pre-training된 모델이 여러가지 Downstream task에 적용되는 것이기 때문에, 모델의 일반화 능력이 높아야 한다는 것이고, 따라서 Pre-training data set의 규모가 클 수 밖에 없다.
  • 대규모 Data set을 구축하기 위해서는, 기존처럼 수동으로 어노테이션하는 방식이 아니라, 웹과 같은 방대한 소스에서 데이터를 수집하는게 효율적이다.
  • 이미 NLP에서는 웹에서 수집한 데이터셋이 크라우드 소싱(대중 참여) 레이블 데이터셋의 성능을 능가했다.
  • 본 논문에서는 대규모 데이터셋에 효율적으로 학습할 수 있는 Natural Language Supervision 모델인 CLIP(Contrastive Language-Image Pre-training)을 제시한다.

Natural Language Supervision

  • 이미지와 텍스트를 활용한 기존 연구들은 Task를 정의하는데 있어 모호함이 있다.
  • 똑같이 이미지와 텍스트를 학습에 사용하는데도 불구하고 제시하는 Method를 Unsupervised, Supervised, Weakly supervsied, Self-supervised 등으로 다양하게 정의하는 것이다.
  • 본 논문에서는 이를 Supervision으로 정의한다.
  • 하지만 어찌됐건 중요한 것은, 모두 Natural Language 를 (Training target이 아니라) Training Signal로 다룬다는 것이다.
  • Natural languge는 데이터 형식에 구애받지 않고 수집할 수 있다는 이점이 있다.
  • 또한 단순히 이미지의 표현(Representation)만을 학습하는 것이 아니라 표현을 언어와 연결짓는 것을 학습하기 때문에 Zero-shot에 유리한 것이다.

Creating a Sufficiently Large Dataset

  • 최근 연구에 주로 사용되는 데이터셋은 MS-COCO, Visual Genome, YFCC100M 3가지가 있다.
  • MS-COCOVisual Genome은 각각 약 100,000장으로, 다른 Computer vision 데이터셋인 Instagram photos dataset(3.5B)와 비교했을 때 적은 양이다.
  • YFCC100M은 약 1억개의 데이터가 있는데, 퀄리티의 편차가 크다. 온전한 데이터만 추출하면 (ImageNet과 비슷하게) 약 150만장이다.
  • Natural Language를 사용하는 핵심 동기는 데이터를 인터넷으로부터 쉽게 수집할 수 있기 때문이다.
  • 본 논문에서는 4억개의 (Image, Text) pair로 이루어진 데이터셋을 구축했는데, 모두 인터넷에서 수집했다.
  • 데이터셋을 구축할 때, 500,000개의 쿼리에 속하는 (Image, Text)를 검색하고, 클래스의 밸런스를 위해 각 쿼리마다 최대 20,000개로 구성했다.

Selecting an Efficient Pre-Training Method

  • State-of-the-art 컴퓨터 비전 모델은 많은 양의 GPU 메모리와 학습 시간을 요구한다.
  • 논문의 저자들은 이를 이유로, Natural Language Supervision을 효율적으로 학습하는 것을 핵심으로 보았다.
  • 우선 저자들은, Image와 Text를 학습하기 위해 CNN과 Transformer 모델을 한번에 학습(Jointly Learning)했다.

 

학습 데이터 크기에 따른 모델 성능 비교

 

  • 위 그래프는 학습 데이터 양에 따른 CLIP, Bag of Words, Transformer의 Accuracy를 나타낸 것이다.
  • Transformer Language Model(파란색)이 Bog of Words(주황색)에 비해 약 3배 느리게 학습되는 것을 확인할 수 있다.
  • 저자들은 Transformer가 이미지에 대한 “정확한 단어”를 예측하는데, 이 작업이 더 어렵고 그렇기 때문에 비효율적일 것이라고한다.

 

  • 최근 연구에서 Generative model이 동일한 성능을 가진 Contrastive model보다 계산량이 약 10배 더 크다는 것이 제시되었다.
  • 따라서 저자들은 정확한 단어를 예측하는 것이 아니라 어떤 텍스트가 전체적으로 어떤 이미지와 매칭되는지를 예측하는 더 쉬운 Proxy task로 접근한다.

 

CLIP 학습 파이프라인

  • 위 이미지는 CLIP의 학습 파이프라인을 나타낸 것이다.
  • 하나의 배치에 N개의 (Image, Text) pair가 있다면, 조합되는 총 (image, text) pair의 개수는 N * N 개이다.
  • 이 때, Real(Positive) pair는 N개(대각선), Incorrect(Negative) pair는 N*2 - N개인데,
  • Real pair의 코사인 유사도는 커지게, Incorrect pair의 코사인 유사도는 작아지게 학습이 된다.
  • CLIP에서 Image encoder는 가중치 초기화없이 사용하고, Text encoder는 Pre-trained 가중치로 초기화한다.
  • 학습 시 Text 증강은 사용하지 않고, Image 증강은 Random Square Crop만 사용한다.
  • Temperature 파라미터는 직접 튜닝하지 않고 학습한다.

 

# image_encoder - ResNet of Vision Transformer
# text_encoder  - CBOW or Text Transformer
# I[n, h, w, c] - minibatch of aligned images
# T[n, l]       - minibatch of aligned texts
# W_i[d_i, d_e] - learned proj of image to embed
# W_t[d_t, d_e] - learned proj of text to embed
# t             - learned temperature parameter

# extract feature representations of each mdality
I_f = image_encoder(I)
T_f = text_encoder(T)

# joint multimodal embedding [n, d_e]
I_e = l2_normalize(np.dot(I_f, W_i), axis=1)
T_e = l2_normalize(np.dot(T_f, W_t), axis=1)

# scaled pairwise cosine similarities [n, n]
logits = np.dot(I_e, T_e.T) * np.exp(t)

# symmetric loss function
labels = np.arange(n)
loss_i = cross_entropy_loss(logits, labels, axis=0)
loss_t = cross_entropy_loss(logits, labels, axis=1)
loss   = (loss_i + loss_t)/2
  • 위 코드는 CLIP의 학습 매커니즘을 스도코드로 나타낸 것이다.
  • I(Image)와 T(Text)를 입력으로 받고, 각각 image encoder, text encoder를 거쳐 피쳐(I_f, T_f)로 만든다.
  • 이어서 임베딩 단계를 거쳐 이미지, 텍스트에 대한 임베딩 벡터(I_e, T_e)를 계산한다.
  • 그리고 두 개의 임베딩 벡터를 내적하여 스케일링 인자를 곱한다. 이 때, 스케일링 인자는 Temperature parameter라고 한다.
  • 마지막으로 Cross entropy loss로 Image loss, Text loss를 각각 구해준 뒤 평균을 계산한다.

Choosing and Scaling a Model

Image Encoder

  • Image Encoder로 ResNet50과 ViT 2개의 아키텍처를 사용했다.

ResNet50

  • ResNet-50의 변형인 ResNet-D와 rect-2 blur pooling을 사용했다.
  • GAP(Global Average Pooling)을 Transformer 스타일의 QKV attention 형태를 가진 Attention pooling으로 교체했다.

ViT(Vision Transformer)

  • 원본의 구현을 거의 그대로 따르고, Layer normalization을 추가하여 약간의 수정만 거쳤다.

Text Encoder

  • Text Encoder로는 63M개의 파라미터를 가진 Transformer를 사용했다.
  • Vocab size는 49,152이며, 최대 시퀀스 길이는 76이다.
  • 텍스트 시퀀스는 [SOS], [EOS] 토큰으로 감싸져있고, [EOS] 토큰의 활성화 값을 텍스트의 특징 표현(Feature representation)으로 사용한다.
  • 최근 연구에서, 컴퓨터 비전 모델을 확장할 때 Width, Depth중 하나를 확장시키는 방법보다 Width, Depth, Resolution 전체에 걸쳐 분배하여 확장하는 방법이 우수하다는 것이 입증되었다.
  • 저자들은 ResNet50의 Width, Depth, Resolution을 동일하게 증가시키는 방법을 사용했다.
  • Text Encoder의 경우, ResNet의 증가 비율에 따라, Width만 확장시켰다.

Training

  • Image encoer의 경우, 5개의 ResNet과 3개의 ViT를 학습시켰다.
  • ResNet의 경우, ResNet50의 계산량을 증가시킨 RN50x4, RN50x16, RN50x64를 사용했다.
  • ViT의 경우, ViT-B/32, ViT-B/16, ViT-L/14를 사용했다. 32, 16, 14는 패치 크기이다.
  • Adam 사용, 하이퍼 파라미터는 그리드 서치, 랜덤 서치로 초기화한 후 직접 튜닝, 배치 크기는 32,768.
  • RN50x64는 592개의 V100 GPU에서 18일, ViT-L/14는 256개의 V100 GPU에서 12일동안 학습.

Zero-Shot Transfer

  • Zero-shot Leaning란, Image classification에서 모델이 보지 못한(학습하지 않은) 객체에 대한 일반화를 연구하는 것이다.
  • 하지만 저자들은 더 넓은 의미로 보지 못한(학습하지 않은) 데이터셋에 대한 일반화(Task Learning)를 연구한다.
  • Visual N-Grams는 위와 같은 의미로 Zero-shot transfer를 연구한 최초의 사례인데, 이 모델을 사용하여 CLIP의 성능과 비교한다.
  • 즉 저자들은 Zero-Shot Transfer를 Task Learning의 Evaluation으로 취급한다.
  • CLIP의 Zero-shot transfer를 위해 각 데이터셋의 클래스를 (image, text) pair에 들어가는 text 집합으로 구성한 후 image와 유사도가 제일 높은 Text로 분류한다.

 

3개의 데이터셋에 대한 Visual N-Grams와 제로샷 성능 비교

  • 위 표는 CLIP과 Visual N-Grams의 Zero-shot 성능을 3개 데이터셋에서 비교한 것이다.
  • CLIPVisual N-Grams에 비해 10배 큰 데이터셋, 100배 많은 계산량을 사용했기 때문에, 직접적인 비교로 해석하기보다는 CLIP의 성능을 이해하기 위한 것이다.

Prompt Engineering and Ensembling

  • Zero-shot transfer에서 문제는, 클래스의 이름이 다의어로 중복되는 경우 발생할 수 있다. (ImageNet의 Crain은 건설용 크레인, 새 크레인 두 가지가 있다.)
  • (Image, Text) pair에서 Text에 클래스의 이름만 들어가기 때문에, 맥락 정보가 전혀 없어서 구별할 수 없게 되는것이다.
  • 또한 CLIP의 Pre-training 데이터셋의 경우, 텍스트가 단일 단어인 경우가 거의 없고, 일반적으로 텍스트는 이미지에 대해 설명하는 문장이다.
  • 따라서 이 간극을 해소하기 위해 “A Photo of a {label}”과 같은 텍스트 템플릿을 사용했고, 클래스 이름만 사용한 경우보다 ImageNet 정확도가 1.3% 향상되었다.
  • 이어서 프롬프트 엔지니어링과 유사하게, 데이터셋에 따라, 문맥에 대한 정보를 다양하게 제공하면 예측 성능이 향상된다.
  • 예를들어 Oxford-IIIT Pets dataset에서, “A Photo of a {label}, a type of pet”과 프롬프트 형식을 수정하는 것이다.
  • 또한 “A photo of a big {label}”, “A photo of a small {label}”과 같이 다양한 프롬프트를 사용하여 앙상블하는 것도 도움이 된다.
  • 이 앙상블은 확률 공간이 아닌 임베딩 공간에서 적용되기 때문에, 단일 모델을 사용할 때와 비용이 동일하다.
  • 단일 모델과 계산 비용이 동일하다는 것이 무슨 말이냐면, 예를 들어 “A Photo of a big cat”과 “A Photo of a small cat” 두 가지 텍스트를 Text Encoder로부터 임베딩 벡터를 한 번 계산해놓으면, 그 이후에는 이 임베딩 값을 재사용할 수 있게 되는 것이다.

 

728x90