주제: 7-4 CLIP (이미지-텍스트 대조학습과 Zero-Shot 전이)

분류: vision

타입: concept

난이도: 중급

선수지식: 있음 — Contrastive Learning, Embedding, Transformer

문제 설정

기존 이미지 분류 모델은 다음 방식으로 학습됩니다.


Image → CNN → Classifier → Label

문제점:

CLIP (Contrastive Language–Image Pretraining)은 다음 질문에서 시작합니다.

"이미지와 텍스트를 같은 의미 공간에 놓을 수 있을까?"

목표:

sim(image,text)ifmatched

그림으로 먼저 보기

CLIP의 이미지-텍스트 대조학습 구조
CLIP의 핵심 구조. 이미지 인코더와 텍스트 인코더가 각각 임베딩을 만들고, 같은 의미의 쌍은 가깝게 학습한다.
원본 / 라이선스 · OpenAI · MIT License
대조학습의 positive pair와 negative pair 예시
대조학습에서 positive pair는 가깝게, negative pair는 멀어지게 학습된다는 점을 직관적으로 보여주는 자료다.
원본 / 라이선스 · A potato hater · CC BY-SA 4.0

1. CLIP 핵심 아이디어

CLIP은 이미지와 텍스트를 각각 인코딩합니다.


Image → Image Encoder → image embedding
Text  → Text Encoder  → text embedding

그리고 두 embedding의 유사도를 학습합니다.

2. Dual Encoder 구조

CLIP은 두 개의 encoder를 사용합니다.

Encoder 입력
Image Encoder 이미지
Text Encoder 텍스트

embedding:

v=fimg(image)
t=ftxt(text)

기호 의미

왜 필요한가

이미지와 텍스트를 같은 벡터 공간으로 변환합니다.

3. Similarity 계산

CLIP은 cosine similarity를 사용합니다.

sim(v,t)=(v·t)/(||v||||t||)

기호 의미

왜 중요한가

이미지와 텍스트 의미 유사도를 측정합니다.

4. Contrastive Learning

CLIP은 이미지-텍스트 쌍을 사용해 학습합니다.


Positive pair:
(image_i, text_i)

Negative pair:
(image_i, text_j)

손실 함수:

L=logexp(sim(vi,ti)/τ)/Σexp(sim(vi,tj)/τ)

기호 의미

왜 필요한가

정답 쌍은 가까워지고 다른 쌍은 멀어집니다.

5. Batch Contrastive Learning

CLIP은 batch 내 모든 pair를 negative로 사용합니다.


batch size = N
N positive pairs
N² possible pairs

목표:

sim(vi,ti)>sim(vi,tj)

6. Zero-Shot Classification

CLIP의 가장 큰 장점은 zero-shot classification입니다.

예:


"a photo of a cat"
"a photo of a dog"

classification:

class=argmaxsim(v,tclass)

기호 의미

왜 중요한가

새 클래스도 학습 없이 분류 가능합니다.

7. Zero-Shot 직관


Image → embedding
Text prompts → embeddings
Similarity 비교 → class 선택

즉 classifier 대신 text prompt를 사용합니다.

8. CLIP 구조


Image → Vision Transformer / ResNet
Text → Transformer
↓
Embedding space
↓
Contrastive Loss

9. CLIP 장점

10. CLIP 한계

코드-수식 연결

개념 코드 설명
image encoding model.encode_image() 이미지 embedding
text encoding model.encode_text() 텍스트 embedding
similarity torch.cosine_similarity() 유사도 계산

자주 하는 오해 5개

체크리스트 (스스로 설명 가능해야 하는 질문)