DL

[Paper Review] Learning Transferable Visual Models From Natural Language Supervision(CLIP) 논문 정리

gomduribo 2023. 9. 3. 23:39

이번학기 TNT에서도 컴퓨터 비전팀으로 참여하게 되었다. 첫주차에는 CLIP논문을 리뷰해서 발표를 진행하기로 했다. 

**틀린내용 다수 존재합니다.

 

** representation learning

어떤 모델이 어떤 task인지에 따라서 input feature로부터 new feature(new representation)을 출력하게 됩니다. 이렇게 입력으로부터 new representation을 뽑도록 학습하는것을 representation learning이라고 합니다. 예를 들자면 CNN이 어떤 이미지를 분류한다고 했을때, 중간의 convolutional layer들은 최종단의 linear classifier가 이미지를 잘 분류할 수 있도록 feature vector를 잘 representation해주는것입니다. 

출처 / 자세한 정보: https://89douner.tistory.com/339

 

** zero-shot learning

학습과정에서 한번도 보지 못한 문제 및 데이터셋에 대해서 그 성능을 평가하는 것

 

** EfficientNet

** ViT

** Contrastive Representation Learning

** Transformer

 

Abstract

컴퓨터 비전 분야에서 SOTA 모델들은 카테고리를 정해두고 그것을 예측하여 학습하는 방향(지도학습)으로 진행되어 왔습니다. 하지만 이러한 지도학습 방법은 범용성이 떨어지는데, 이미 지정된 라벨이 아닌 객체를 인식할때는 추가적인 라벨이 필요하게 되기 때문입니다.

따라서 논문에서는 raw text로부터 image에 대해서 직접 학습하는 방법을 그 대안으로 제시합니다. 즉, 모델이 인터넷에서 수집된 4억개의 (이미지, 텍스트) 쌍을 어떤 이미지에 어떤 텍스트가 올지 예측하는 방식으로 학습하면서, image representation에 대해서 효율적으로 학습할 수 있습니다.

이러한 방식으로 사전학습된 모델은 30가지 이상의 데이터셋에서 성능이 평가 되었습니다. 그 결과 모델은 지도학습 없이도 경쟁력 있는 결과를 보였습니다. 한 예로, ImageNet을 지도학습 방식으로 학습한 ResNet-50모델의 정확도를, 128만장의 데이터를 학습하지 않고도, 따라 잡았습니다. 

 

Introduction and Motivating Work

raw text로부터 직접 학습하는 방식은 이미 NLP에서 혁신적인 방법으로 등장하였습니다. Task-agnostic objectives은 연산량, 모델의 능력, 데이터의 측면에서 계속해서 규모가 증가해왔습니다. text-to-text의 발전은 Task-agnostic 구조가 zero-shot으로 전이가능하도록 했습니다. 즉, 특정 데이터를 학습할 필요가 없도록 해주었습니다. 이러한 방식은 NLP에서 웹에서 얻어진 대량을 데이터셋을 사용하게 만들어 주었습니다.  NLP분야에서 사용되는 이러한 방식이 컴퓨터 비전에서 사용가능할 수 있을지 이 논문에서 보여주고 있습니다. 

 

Approach

- Creating a Sufficiently Large Dataset 

이러한 작업에서 사용되는 데이터셋은 MS-COCO, Visual Genome, YFCC100M으로 크게 세가지가 있습니다.

먼저 MS-COCO와 Visual Genome 데이터셋은 직접 사람이 라벨링한 높은 질을 가진 데이터지만 10만장이라는 비교적 적은 수의 이미지를 가지고 있습니다. 또한, YFCC100M 데이터셋은 1억장의 데이터셋이지만 그 품질이 일정치 않습니다. 

따라서 논문에서는 인터넷에서 (image, text) 형태의 데이터를 4억개를 수집했다고합니다. 그리고 이 데이터셋 이름은 WIT(WebImage Text)라고 이름 붙였습니다.

 

- Selecting an Efficient Pre-Training Method

초반에는 image CNN과 text transformer를 함께 학습을 시켜서 image의 캡션을 예측하도록하였습니다. 하지만 아래 그래프에서 볼수 있듯이, transformer language model은 같은 텍스트를의 bag-of-words encoding을 예측하는 baseline모델보다 3배가 느립니다. 

 

 

bag-of-words encoding을 예측하는 baseline모델과 transformer language model는 공통점이 있는데, exact words of the text를 예측하려한다는 것입니다. 하지만 image와 함께 발생하는 텍스트는 굉장히 다양하기 떄문에, exact words of the text를 예측하는 것은 굉장히 어려운 task입니다.

따라서 논문에서는 contrastive representation learning을 도입하여 문제를 해결하고자 합니다. exact words of the text가 아닌 text as a whole을 이미지와 짝짓고, contrastive objective을 도입합니다.

*Contrast Learning 관련 설명: https://daebaq27.tistory.com/97

 

N개 (image, text) 쌍이 존재하는 하나의 batch에서 CLIP모델은 NxN개의 가능한 (image, text)쌍을 예측합니다. 

 

위의 사진에서 볼수 있듯이 CLIP은 I1과 T1 ... IN과 TN 의 N개의 real pair의 image embedding과 text embedding의 cosine similiarity가 높아지도록, 또 N^2개에서 real pair N개를 제외한 N^2-N개 쌍의 incorrect pair의 image embedding과 text embedding의 cosine similiarity가 최소화 되도록 학습을 진행합니다. 이 과정에서 CE loss를 사용합니다. 

 

- Choosing and Scaling a Model

논문에서는 Image Encoder로 2가지의 다른 구조를 사용했다고 합니다.

첫번째로는 ResNet-50을 선정했습니다. 이후에 ResNet-D에 사용된 수정사항을 반영한 모델을 사용했다고 합니다. 여기서 기존에 사용되던 global average pooling을 attention pooling으로 교체해주었습니다. 

두번째로는 Vision Transformer(ViT)를 거의 수정하지않고 그대로 사용해 주었습니다. 

Text Encoder로는 Transformer모델을 사용하였습니다. base model로 8개의 attention head를 가지고 12층의 6300만개의 가중치 값을 가지는 모델을 사용하였습니다. 

 

 

Training

논문에서는 Image Encoder로 5개의 ResNet과 3개의 ViT를 학습시켰습니다.

ResNet은 ResNet-50, ResNet-101, 그리고 각각 EfficientNet-style로 4배, 16배, 64배 scaling한 ResNet-50 모델을 학습시켰다고 합니다. 또한 ViT는 ViT-B/32, ViT-B/16, ViT-L/14 3개의 모델을 학습시켰는데, ResNet, ViT모두 32 epoch씩 학습을 진행했습니다. decoupled weight decay regularization을 진행해주면서 Adam optimizer을 이용하여 최적화를 진행해주었고, cosine scheduler로 lr decay를 진행해주었습니다.

grid searches, random search, manual tuning을 합쳐서 사용함으로써 초기 하이퍼파라미터값을 설정해주었습니다. 32768 이라는 큰 크기의 minibatch 크기를 설정해주었고, mixed-precision을 사용해주어 메모리를 절약하고 학습을 가속화하였습니다.

 

가장 큰 ResNet model인 RN50x64의 경우 592개의 V100 GPU에서 18일동안 학습이 진행되었지만, 가장큰 ViT모델은 256개의 V100 GPU에서 12일동안 학습을 진행했습니다.

 

Zero-Shot Transfer

논문에서는 위와 같은 방식으로 학습된 CLIP모델을 zero-shot learning에 적용해보았습니다. 즉 이미지를 분류함에 있어서 학습시에 한번도 보지 못한 객체의 카테고리를 일반화하는데에 있어서 얼마나 CLIP모델이 효율적인지 판단해본 것입니다. 

 

 

위의 사진과 같이, CLIP모델은 이미지가 주어졌을 때, 먼저 이미지 인코더를 사용하여 이미지의 특징을 추출합니다. 그런 다음, 모든 클래스 레이블(ex. 비행기, 차, 강아지 ...)을 텍스트 인코더를 통해 특징(벡터)을 추출합니다. 이제 N개의 텍스트 특징 중에서 이미지 특징과 가장 높은 상관관계를 가지는 텍스트를 선택하여, 이를 입력 이미지의 객체 분류 결과로 출력합니다. 이 과정을 수행할 때, ImageNet에 대한 zero-shot learning 결과가 놀랍게도 76.2%로 매우 뛰어난 성능을 보였습니다.

 

 

또한 ImageNet, Food101, SUN397 등 총 27개의 데이터셋에서 실험을 진행하고, ResNet-50을 사용한 완전 지도 학습(fully supervised learning) 결과와 비교했습니다. 놀랍게도, 이 중 16개 데이터셋에서 CLIP 모델을 활용한 제로샷 학습(zero-shot learning)이 완전 지도 학습보다 더 우수한 성능을 보였습니다.