본문 바로가기

AI/Paper - Theory

[CLIP 논문 리뷰] - Learning Transferable Visual Models From Natural Language Supervision

반응형

*CLIP 논문 리뷰를 위한 글입니다. 질문이 있다면 댓글로 남겨주시길 바랍니다!

 

CLIP paper: [2103.00020] Learning Transferable Visual Models From Natural Language Supervision (arxiv.org)

 

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

CLIP github: GitHub - openai/CLIP: Contrastive Language-Image Pretraining

 

GitHub - openai/CLIP: Contrastive Language-Image Pretraining

Contrastive Language-Image Pretraining. Contribute to openai/CLIP development by creating an account on GitHub.

github.com


Contents

1. Simple Introduction

2. Method

3. Experiments


Simple Introduction

Result

NLP분야에서 엄청난 활약을 보이는 모델들이 있다.

대표적으로, BERT, GPT, GPT-2 등등.. 이러한 모델들은 방대한 text 데이터셋을 학습하여서 NLP 분야에서 거의 정점을 찍고 있다.

그리고 BERT나 GPT를 활용해서 Fine-tuning이나 .Trasfner-learning을 해서 새로운 모델을 적용하는 것은 NLP분야에서 트렌드를 달리고 있다.

 

그렇다면, text를 vision분야에서 적용할려면 어떻게 해야할까?

이미지를 활용했을 때, ViT나 CNN은 이미지에 대해서는 학습을 잘하지만, text+image의 형태가 되면 학습이 쉽게 optimal point에 도달하지 않는 것을 볼 수 있다.

 

그리고 Image를 이용한 vision 분야에서 text를 활용한 zero-shot learning은 더욱 더 이루어지기 힘든데, CLIP 방대한 text 데이터셋을 학습하고, 이것을 이미지와 연결시켜주는 연결고리 역할을 하여서 vision task에서 여러 SOTA 모델들의 기반이 되고 있다.

 

한번 자세히 알아보자!!


Method

Contrastive learning

CLIP은 처음에 Contrastive learning을 수행한다.

이 Contrastive learning이라는 것은 SSL(Self-supervised learning)의 한 종류를 의미하는데, 만약 궁금하다면 SimCLR논문부터 천천히 살펴보는 것을 추천한다..!!

SimCLR 논문 리뷰: https://kyujinpy.tistory.com/39

 

[SimCLR 논문 리뷰] - A Simple Framework for Contrastive Learning of Visual Representations

*SimCLR 논문 리뷰를 위한 글입니다! SSL 입문하시는 분들께 도움이 되길 원하며 궁금한 점은 댓글로 남겨주세요. *SSL(Self-Supervised-Learning) 중 contrastive learning을 위주로 다룹니다! *해당 글에서는 Proxy

kyujinpy.tistory.com

 

다시 본론으로 들어와서, 

결국, Contrastive learning이라는 것은 두 개의 input에 대해서 각각 encoder를 적용해서 나온 2개의 embedding의 유사도를 계산하는 방식으로 이루어진다.

 

위에 사진을 보면, diagonal term이 유사도가 가장 커야되고, 나머지 off-diagonal 부분은 유사도가 거의 없어지도록 loss function을 설정해서 학습이 진행된다.

zero-shot

두 번째는, text에 대한 encoder 값을 만들어낸다.

여러 label에 대한 text embedding을 각각 만들어내는 과정이다.

 

마지막으로, 임의의 image를 넣어서, 그 image를 embedding으로 만들어준 후, text embeddings과의 유사도 비교를 통해서 가장 유사도가 높은 항목을 text label로 선정한다.

이 경우, 학습에 이용되지 않는 image가 들어와도, label prediction이 이루어질 수 있기 때문에 zero-shot learning이 가능하다!!


Training Info

+) 총 5개의 ResNet, 3개의 ViT를 downstream model로 선정하여 training을 하였다.

+) 모든 model은 32 epochs를 반복했으며, Adam을 이용하였다.


pseudocode

+) CLIP의 implementation code이다.


+) Contrastive learning에서 image_encoder는 ResNet-50, text_encoder는 Transformer를 이용하였다.


Experiments

1. Linear evaluation(transfer-learning)을 했을 때 성능이 SOTA보다 좋다.


2. CLIP을 이용한 Zero-shot의 성능이 기존의 supervised learning보다 높게 나오는 데이터셋이 많았다.


3. Zero-shot CLIP이 다른 few-shot learning 모델보다 성능이 좋다는 것을 알 수 있다.


4. class의 sub sampling %(데이터 수)에 따라 성능의 변화가 기존의 모델보다 많이 robust하다!


- 2023.01.03 Kyujinpy 작성.

 

 

반응형