Paper/Others

Learning Transferable Visual Models From Natural Language Supervision (a.k.a CLIP)

침닦는수건 2024. 2. 6. 20:00
반응형

내 맘대로 Introduction

너무 유명한 논문이라서 이제 와서 읽고 기록해두는 것이 민망하지만 간단히 적어두고자 한다. 이 논문은 OpenAI에서 CLIP이라는 이름으로 발표한 image encoder/text encoder 논문이다. image embedding 결과가 text embedding과 같도록 설계된 환경에서 학습된 두 encoder를 제공함으로써 주어진 image에서 text embedding을, text에서 image embedding을 얻어내는 효과를 노린다. 

 

아이디어에 핵심이 있다기 보다 엄청나게 방대한 데이터를 먹여 범용적인 embedding space를 구축했다는 것이 핵심이다. 추후 CLIP embedding을 이용한 활용 논문이 쏟아졌는데, 해당 논문들에서 CLIP의 우수성이 거듭 인증되었다. 현재 웬만한 논문들도 CLIP을 뛰어넘지 못하는 것 같다. 

 

논문 구성은 실험 내용이 더 많기 때문에 이론적 내용만 짚고 나머진 생략하려고 한다. (어차피 실험 내용은 까먹음...)

 

메모하며 읽기


알고리즘의 핵심은 text를 GT 삼아 이미지 feature를 뽑아내는 방법론이다. 

이미지 GT는 만들기가 굉장히 비싼 데이터 중 하나인데, Text GT는 그보다 만들기 쉬울 뿐더러 다양하게 존재한다. (길이, 의미, 관점 등등) 그래서 더 풍부한 형태로 존재함.

따라서 이를 학습에 사용할 수만 있으면 좋은 정보가 됨.

이미지 feature가 text로 학습되어 잘 뽑혀주기만 하면 활용처는 무궁무진하다. 

전체 파이프라인은 위 그림과 같이 1) image-text pair로 pre-training 2) 이를 활용한 zero shot classification인데 사실 2)는 활용의 예시를 제일 간단 형태로 보여준 것이고 핵심은 1)이다.

이미지를 묘사하는 text와는 image embedding과 text embedding이 같도록 강제하고, 다른 text와는 철저히 다르도록 하는 작업만 반복하는 간단한 방식인데 이를 무수히 많은 pair에 대해 반복하면서 image embedding과 text embedding의 힘을 키운다.

------------------------------
여기서 핵심이 되는 "데이터 규모"는 MSCOCO, Visual Genome에서 각각 10만장, YFCC100M을 편집해서 15만장 마련한 것에 더하여 인터넷에서 긁은 400만장을 사용했다. 거의 435만장 이상 사용한 것이다. 


네트워크 구조나 컨셉 같은 것은 간단하다. image encoder는 CNN, text encoder는 Transformer를 썼다. 더불어 text encoder는 기존 NLP 방식대로 순서까지 포함된 transformer based language model을 썼을 때보다 순서는 딱히 중요하게 보지 않는 bag of words 방식으로 구성했을 때 더 효과적이어서 후자를 골랐다고 한다.

학습 방식은 image-text pair N쌍을 batch로 나누며 각각 image embedding N개 text embedding N개를 얻은 뒤, N x N 개 조합을 생성한다.

이 때 제 짝이 맞는 경우에만 cosine similarity가 1, 나머진 전부 0이 되도록 하는 간단한 방식이다.

데이터가 워낙 많기 때문에 over fitting 문제는 딱히 고려할 필요없고 많은 종류의 augmentation도 필요없었다. 

초기화도 크게 신경 쓸 필요없고, embedding 만들기 직전 layer만 linear projection으로 했다는 점을 언급한다.

augmentation은 random crop정도만 들어갔다

(데이터가 이미 어마어마하게 많으니 뭐...)

image encoder는 Resnet50이 기준이고 중간 중간 average pooling을 attention pooling으로 바꾸거나 하는 minor change만 주어가며 실험했다. ViT도 선택지에 있긴 함.

text encoder는 무조건 Transformer. 디테일이 중요하진 않은 수준.

image encoder ResNet일 때는 width, depth, resolution을 조금 바꾸어 가면서 해봤음

text encoder는 이러나 저러나 큰 영향 없어서 괜찮다.
완전 세부 디테일. 알 필요는 없는 듯.
실험 결과의 경우, 다시 볼 것 같지도 않고 다방면으로 pre-training 네트워크의 우수성을 보인 자료라서 생략.
반응형