*CLIP 논문 리뷰를 위한 글입니다. 질문이 있다면 댓글로 남겨주시길 바랍니다!
CLIP paper: [2103.00020] Learning Transferable Visual Models From Natural Language Supervision (arxiv.org)
CLIP github: GitHub - openai/CLIP: Contrastive Language-Image Pretraining
Contents
Simple Introduction
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
CLIP은 처음에 Contrastive learning을 수행한다.
이 Contrastive learning이라는 것은 SSL(Self-supervised learning)의 한 종류를 의미하는데, 만약 궁금하다면 SimCLR논문부터 천천히 살펴보는 것을 추천한다..!!
SimCLR 논문 리뷰: https://kyujinpy.tistory.com/39
다시 본론으로 들어와서,
결국, Contrastive learning이라는 것은 두 개의 input에 대해서 각각 encoder를 적용해서 나온 2개의 embedding의 유사도를 계산하는 방식으로 이루어진다.
위에 사진을 보면, diagonal term이 유사도가 가장 커야되고, 나머지 off-diagonal 부분은 유사도가 거의 없어지도록 loss function을 설정해서 학습이 진행된다.
두 번째는, text에 대한 encoder 값을 만들어낸다.
여러 label에 대한 text embedding을 각각 만들어내는 과정이다.
마지막으로, 임의의 image를 넣어서, 그 image를 embedding으로 만들어준 후, text embeddings과의 유사도 비교를 통해서 가장 유사도가 높은 항목을 text label로 선정한다.
이 경우, 학습에 이용되지 않는 image가 들어와도, label prediction이 이루어질 수 있기 때문에 zero-shot learning이 가능하다!!
+) 총 5개의 ResNet, 3개의 ViT를 downstream model로 선정하여 training을 하였다.
+) 모든 model은 32 epochs를 반복했으며, Adam을 이용하였다.
+) 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 작성.