세찬하늘
[Paper/OpenAI CLIP] Learning Transferable Visual Models From Natural Language Supervision(20250311) 본문
[Paper/OpenAI CLIP] Learning Transferable Visual Models From Natural Language Supervision(20250311)
HotSky92 2025. 3. 11. 18:55
원문 출처
https://arxiv.org/pdf/2103.00020
논문 리뷰를 하기 전에
왜 이 논문을 포스팅 1번으로 하느냐
> 내가 처음 읽은 영어 원문으로된 논문이라서, transformer 모델이라서, 지금 transformer 2.0이라 하는 최신 모델들이
등장하는 시점에서 한번은 짚고 넘어가야 한다고 생각함
> 그리고 이 페이퍼를 복습하면서 옛 기억도 살리면 좋지 않을까
> 여기 모델이 평가에 사용한 데이터셋도 많고 zero-shot, multi-modal, 같은 용어들도 많이 나온다
> 모델 코드부터 인코더, 데이터로더, 등 내부 파일 코드까지 훑어볼 수 있을 듯
이 논문 리뷰 하면서 파트를 몇개를 가져가야 할지 모르겠으나 일단 정리해보자.
챗지피티 버전도 좋아졌겠다 한번 활용하면 본전은 뽑겠지
CLIP 논문 리뷰
'Learning Transferable Visual Models From Natural Language Supervision'
이번 포스팅에서는 컴퓨터 비전 분야에서 큰 주목을 받은 OpenAI의 논문 "Learning Transferable Visual Models From Natural Language Supervision"(CLIP)에 대해 정리하겠습니다. CLIP은 이미지와 텍스트를 함께 학습해, 사전 학습 데이터 없이도 다양한 컴퓨터 비전 과제를 높은 정확도로 수행할 수 있는 모델입니다.
* CLIP : Contrastive Language-Image Pre-training
📌 Contrastive Language-Image Pre-training (CLIP) 용어 정리
- Contrastive (대조적인)
- 서로 다른 두 개의 데이터를 비교하여 차이를 학습하는 방식.
- Language (언어)
- 자연어 처리(NLP)를 활용한 텍스트 데이터.
- Image (이미지)
- 컴퓨터 비전에서 사용하는 시각적 데이터.
- Pre-training (사전 학습)
- 모델이 특정 작업에 최적화되기 전에 대량의 데이터로 일반적인 패턴을 학습하는 과정.
- Contrastive Learning (대조 학습)
- 주어진 이미지와 올바른 텍스트를 가깝게, 잘못된 텍스트는 멀리 배치하는 학습 기법.
- CLIP
- 이미지와 텍스트를 동시에 학습하여, 입력된 텍스트와 가장 유사한 이미지를 찾을 수 있도록 설계된 AI 모델.
📌 연구의 목적과 배경
기존의 컴퓨터 비전 모델들은 이미지 내 객체를 분류하거나 인식하기 위해 사전 정의된 카테고리(Label) 를 필요로 합니다.
예를 들어, ImageNet과 같은 대규모 데이터셋을 이용한 학습에서는 '고양이', '강아지', '자동차' 등 미리 정해진 특정 클래스(class)들에 대한 수만~수백만 개의 라벨링된 이미지 데이터를 사용합니다.
이러한 방식은 해당 모델이 학습한 카테고리에 대해서는 높은 성능을 발휘하지만, 새로운 개념이나 학습되지 않은 객체를 인식하는 능력에는 한계가 있습니다. 즉, 모델을 특정한 태스크(task)에서만 사용할 수 있고, 새로운 개념을 이해하려면 다시 대량의 데이터로 모델을 재학습해야 합니다.
CLIP(Contrastive Language-Image Pretraining) 은 이러한 한계를 극복하기 위해, 단순히 객체별 라벨을 학습하는 것이 아니라 이미지와 자연어 설명(텍스트)을 함께 학습하는 방식을 도입하였습니다.
인터넷에서 수집한 이미지와 해당 이미지에 대한 자연어 설명을 연결하여 학습함으로써, 특정 객체가 아닌 이미지의 의미나 개념을 더 넓고 일반적으로 이해할 수 있도록 합니다.
예를 들어, CLIP 모델은 "눈 덮인 산속을 걷는 사람"이라는 설명이 있는 이미지와 함께 학습되므로, '산', '눈', '사람'이라는 개별적인 개념뿐만 아니라 이들의 관계도 이해할 수 있습니다.
따라서 모델이 학습 데이터에 포함되지 않은 새로운 개념(예: "핑크색 하늘 아래 달리는 전기차")도 텍스트 입력을 통해 검색하고 인식할 수 있습니다.(관계를 이해하기 때문에!)
이러한 접근 방식 덕분에 CLIP은 사전 학습된 모델을 추가적인 라벨링 과정 없이(중요!) 다양한 이미지-텍스트 관련 태스크에 바로 적용할 수 있는 범용적인 비전 모델로 활용될 수 있습니다.
🛠️ 연구 방법 (Contrastive Learning)
CLIP은 이미지-텍스트 쌍의 상호 관계를 학습하는 Contrastive Learning(대조 학습) 방식을 사용합니다.
- 이미지 인코더(ResNet, Vision Transformer)와 텍스트 인코더(Transformer)를 함께 학습
- 동일한 배치 내 올바른 이미지-텍스트 쌍의 유사도를 최대화하고, 잘못된 쌍의 유사도를 최소화
- 이미지와 텍스트를 같은 다중 모달 임베딩 공간으로 매핑해 Cosine 유사도로 학습
(아래는 논문의 방법론을 간단히 나타낸 수도코드입니다.)
* Pseudocode : 실제 프로그래밍 언어의 문법을 따르지는 않지만, 알고리즘이나 프로그램의 논리를
쉽게 표현하기 위해 작성하는 유사 코드
# 이미지 및 텍스트 인코더
I_f = image_encoder(I) #[n, d_i]
T_f = text_encoder(T) #[n, d_t]
# L2 정규화 후 다중모달 임베딩
I_e = l2_normalize(np.dot(I_f, W_i), axis=1)
T_e = l2_normalize(np.dot(T_f, W_t), axis=1)
# 코사인 유사도 계산 및 손실함수 적용
logits = np.dot(I_e, T_e.T) * np.exp(t)
labels = np.arange(n)
loss_i = cross_entropy_loss(logits, labels, axis=0)
loss_t = cross_entropy_loss(logits, labels, axis=1)
loss = (loss_i + loss_t)/2
📌 CLIP 모델의 수도코드 해설 (with 용어정리)
이 수도코드는 CLIP(Contrastive Language-Image Pretraining) 모델이 이미지와 텍스트를 함께 학습하는 과정 중에서 이미지-텍스트 매칭을 수행하는 핵심 부분입니다. 하나씩 쉽게 설명할게요!
1️⃣ 이미지와 텍스트를 인코딩하기
I_f = image_encoder(I) #[n, d_i]
T_f = text_encoder(T) #[n, d_t]
🔹 image_encoder(I): 입력된 이미지 I를 벡터로 변환하는 모델 (CNN 또는 *ViT 사용)
* ViT (Vision Transformer) 는 이미지를 처리하는 Transformer 모델로, 기존 CNN 대신
자연어 처리(NLP)에서 사용되던 Transformer 구조(?)를 컴퓨터 비전에 적용한 모델입니다.
🔹 text_encoder(T): 입력된 텍스트 T를 벡터로 변환하는 모델 (Transformer 사용)
✔ 출력 형태:
- I_f: 이미지 벡터 → 크기 [n, d_i] (n개 이미지, d_i차원 벡터)
- T_f: 텍스트 벡터 → 크기 [n, d_t] (n개 텍스트, d_t차원 벡터)
2️⃣ 벡터를 다중모달 임베딩으로 변환 (L2 정규화)
I_e = l2_normalize(np.dot(I_f, W_i), axis=1)
T_e = l2_normalize(np.dot(T_f, W_t), axis=1)
✔ 설명:
- W_i, W_t는 각각 이미지와 텍스트 임베딩을 변환하는 학습 가능한 가중치(?) 행렬
- np.dot(I_f, W_i), np.dot(T_f, W_t):
- 이미지/텍스트 벡터를 새로운 공통 공간의 벡터(?)로 변환
- l2_normalize(..., axis=1):
- 변환된 벡터를 L2 정규화(?)(길이를 1로 맞추기)
- 이렇게 하면 코사인 유사도(?) 계산에 적합한 형태가 됨
3️⃣ 이미지와 텍스트 간 유사도 계산 (코사인 유사도 기반 매칭)
logits = np.dot(I_e, T_e.T) * np.exp(t)
✔ 설명:(??)
- np.dot(I_e, T_e.T):
- 이미지 벡터(I_e)와 텍스트 벡터(T_e) 간 코사인 유사도 계산
- 즉, 모든 이미지-텍스트 쌍의 유사도를 담은 행렬 생성
- np.exp(t):
- t는 학습 가능한 온도(temperature) 파라미터, exp(t)를 곱하여 유사도를 조정
- t가 클수록 예측 값의 차이가 뚜렷해지고, 작을수록 확률 분포가 평탄해짐
✔ 출력 값(logits)의 형태:
- [n, n] 크기의 행렬 (각 행은 이미지에 대한 텍스트 유사도 점수, 각 열은 텍스트에 대한 이미지 유사도 점수)
4️⃣ 손실함수(?) 적용 (대조 학습 Contrastive Learning)
labels = np.arange(n)
loss_i = cross_entropy_loss(logits, labels, axis=0)
loss_t = cross_entropy_loss(logits, labels, axis=1)
loss = (loss_i + loss_t)/2
✔ 설명:
- labels = np.arange(n):
- 정답 라벨 생성 (예: labels = [0, 1, 2, ..., n-1])
- 같은 인덱스에 있는 이미지-텍스트 쌍이 올바른 매칭임을 나타냄
- cross_entropy_loss(logits, labels, axis=0):
- 이미지 기준으로 정답 텍스트를 예측하도록 학습 (각 행에서 정답을 맞추는 손실)
- cross_entropy_loss(logits, labels, axis=1):
- 텍스트 기준으로 정답 이미지를 예측하도록 학습 (각 열에서 정답을 맞추는 손실)
- loss = (loss_i + loss_t)/2:
- 두 손실 값을 합산 후 평균을 내어 학습
✅ 정리: CLIP 모델이 학습하는 과정
- 이미지와 텍스트를 각각 벡터(임베딩)로 변환
- L2 정규화를 통해 다중모달 공간에 매핑
- 코사인 유사도를 계산하여 매칭 점수를 생성
- 손실 함수(cross-entropy)를 적용하여 정답 매칭을 강화하는 방향으로 학습
✔ 이 방식의 장점
- 새로운 개념도 텍스트로 설명할 수 있으면 인식 가능
- 이미지-텍스트 검색이 자유로움 (ex: "고양이를 찾으라" → 고양이 이미지 검색 가능)
- 추가적인 라벨링 데이터 없이도 활용 가능 (라벨이 아닌 문장을 직접 학습)
📈 주요 실험 결과
1. ImageNet 성능 비교
- CLIP의 제로샷(zero-shot) 학습 방식은 ImageNet 데이터셋에서 ResNet-50과 같은 성능을 보였으며,
- 별도의 라벨 데이터를 사용하지 않고도 약 76.2%의 정확도를 달성했습니다.
모델 ImageNet 정확도
Visual N-Grams(2017) | 11.5% |
CLIP | 76.2% |
ResNet-50 (Supervised) | 76.1% |
- 별도의 라벨링 없이 이 정도 성능을 낸 점은 혁신적이며, 다양한 데이터에 쉽게 전이 가능함(?)을 시사합니다.
2. 다른 데이터셋 성능 향상
- aYahoo 데이터셋: 오류율 95% 감소
- SUN 데이터셋에서는 기존 방법보다 성능 2배 이상 향상 (23% → 58.5%)
모델 Yahoo ImageNet SUN
Visual N-Grams | 72.4 | 11.5 | 23.0 |
CLIP | 98.4 | 76.2 | 58.5 |
3. Prompt Engineering
- 이미지 클래스 이름만 입력하는 것보다, “사진은 {label}이다.” 같은 형식으로 Prompt Engineering(프롬프트 엔지니어링)을 할 경우, 평균적으로 5%의 성능 향상이 있었습니다.
🚩 CLIP이 중요한 이유
- 기존 모델들은 특정 범주에만 국한된 반면, CLIP은 텍스트라는 무제한의 데이터를 활용하여 더욱 일반화된 시각 표현을 학습합니다.
- 자연어를 통한 학습은 라벨링 비용을 절감하고, 새로운 작업에서도 별도 학습 없이 제로샷으로 바로 사용 가능한 유연성을 제공합니다.
📊 CLIP의 강점
- 일반성: 특정 데이터셋에만 국한되지 않고 다양한 작업에 적용 가능
- 높은 전이성능: OCR, 행동 인식, 지리적 위치 파악 등 다양한 작업에서 우수한 성능
- 제로샷 전이: 별도의 추가 학습 데이터 없이도 다양한 태스크에 빠르게 적용 가능
📈 성능 그래프
- CLIP 모델은 기존 방법 대비 효율적으로 성능이 향상됩니다.
- Prompt Engineering 및 앙상블을 적용하면 성능을 최대 5%까지 추가로 개선할 수 있었습니다.
🚩 결론과 활용 가능성
CLIP은 텍스트 기반 supervision을 활용해 비전 모델을 효율적으로 사전 학습하는 새로운 접근법을 제시했습니다. 이를 통해 단일 작업을 넘어 다중 작업에 일반화된 모델을 만들 가능성을 입증했습니다.
실제로 CLIP은 다음 분야에서 효과적으로 활용될 수 있습니다.
- 영상 검색 및 추천 시스템
- 멀티모달 AI를 활용한 다양한 신규 서비스 구축
🔖 소감 및 한줄평
“자연어와 이미지를 연결하는 새로운 시도, 비전 AI의 가능성을 넓히다.”