CLIP 모델은 contrastive representation learning을 4억여개의 이미지와 텍스트 쌍으로 사전학습을 진행한 모델이다. 배치는 32,768을 사용하였으며 배치가 클수록 의미가 가까운 이미지-텍스트와 의미가 먼 이미지-텍스트를 더 잘 학습할 수 있다고 한다.
이미지와 텍스트를 인코딩하여 contrastive learning을 통해 embedding space에서 벡터간의 거리를 계산하는 방식으로 같은 의미의 이미지-텍스트의 표현을 유사하게 하고, 다른 의미의 이미지-텍스트는 표현을 다르게 만들도록 유도한다. 사전 훈련 모델로 다양한 downstream task에 적용할 수 있다.
기존의 문제와 CLIP이 해결한 방법
기존에는 multi-modal 학습을 위해 이미지-텍스트 쌍을 수동으로 라벨링 했다. 그래서 비용과 시간이 많이 소요되었다.
CLIP은 contrastive representation learning을 통해 이미지-텍스트간 라벨링 없이 학습하는 방법을 제안한다.
일반적인 supervised learning은 특정작업에 특화되어 있어 다른 작업에 일반화되기 어렵다. 그래서 여러 작업을 하기 위해 모델 여러개를 사용해야 했다.
CLIP은 다양한 비전 및 텍스트에 대해 범용적인 representation을 학습하고자 하며, 데이터의 다양성과 일반성을 향상시킬 수 있고 multi-modal에 대한 새로운 approach를 제시한다.
CLIP을 이미지 분류기(classifier)로 사용하려면 두 가지 방법이 있다.
CLIP의 feature extractor 부분을 떼내어 뒤에 classifier를 붙인 후 classifier를 학습하는 방법 (linear probe)
클래스를 표현하는 n가지 text 사전을 만든 후 이미지와 각 text 문장의 similarity를 계산하는 방법 (zero-shot)
위의 그림은 Zero-shot CLIP의 성능을 ResNet50 supervised learning 모델과 여러 데이터셋에 대해서 비교한 것이며, 충분히 경쟁력이 있음을 보여준다. 27개 데이터셋 중 16개 데이터셋에 대해서 resnet50 classifier보다 성능이 뛰어나다.
왼쪽은 12개 데이터셋에 대한 성능 평균치, 오른쪽은 27개 데이터셋에 대한 성능 평균치이다. 여러 최신 computer vision 모델들과 CLIP모델의 linear probe 성능을 비교했을 때 CLIP의 성능이 괜찮다는 것을 보여준다.
왼쪽의 점선은 데이터의 분포 이동에도 성능이 같은 이상적인 라인이다. Zero-shot CLIP은 데이터의 분포가 바뀌어도 더 강건함을 보여준다. 오른쪽의 ImageNet으로 학습한 ResNet-101은 분포가 다른 데이터셋에서는 성능이 매우 떨어지지만 Zero-shot CLIP은 강건함을 보여준다.
아래는 CLIP을 fine-tuning 할 때 유용하게 참고했던 github이다. 이 github를 참고해서 CLIP에서 feature extractor를 떼고 classifier를 붙인 후에 학습을 진행해보고, CLIP 모델 자체를 fine-tuning 해보기도 했다.
CLIP이 한 번도 보지 않은 데이터셋의 이미지-텍스트 유사도를 비교해봤을 때, fine-tuning을 할 수록 점점 이미지-텍스트 간 유사도가 가까워진다는 것을 확인했다. 아래 그림에서 빨간색 대각 점선이 같은 의미의 이미지-텍스트인데, fine-tuning을 시킬수록 대각선쪽의 유사도가 높아지고, 그 외의 부분은 유사도가 낮아지는 경향을 확인할 수 있다.