이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.
핵심 요약
CLIP은 이미지와 텍스트를 공통 벡터 공간에 정렬함으로써 별도의 추가 학습 없이도 새로운 데이터셋에 대해 뛰어난 일반화 성능과 풍부한 의미론적 이해를 제공한다.
배경
전통적인 이미지 분류 모델은 고정된 레이블 세트에 의존하여 유연성이 떨어지지만, CLIP은 인터넷의 방대한 이미지-텍스트 쌍을 활용해 이를 극복한다.
대상 독자
컴퓨터 비전과 멀티모달 AI의 작동 원리를 이해하고 실습하려는 개발자 및 연구자
의미 / 영향
CLIP은 멀티모달 AI의 초석이 되었으며 DALL-E와 같은 생성 모델의 성능 향상에 핵심적인 역할을 했다. 실무에서는 특정 도메인 데이터가 부족할 때 CLIP의 제로샷 능력을 활용해 즉각적인 분류 시스템을 구축하거나 이미지 검색 시스템의 정확도를 높이는 데 즉시 적용 가능하다.
챕터별 상세
00:00
CLIP의 정의와 핵심 개념
CLIP은 Contrastive Language-Image Pre-training의 약자로, 이미지 인코더와 텍스트 인코더를 동시에 학습시키는 신경망이다. 이미지와 텍스트라는 서로 다른 모달리티를 동일한 임베딩 공간으로 매핑하는 것이 핵심 목표이다. 이를 통해 텍스트 설명과 이미지가 의미적으로 얼마나 일치하는지 수학적으로 계산할 수 있는 구조를 가진다.
- •이미지 인코더와 텍스트 인코더를 공동 학습하여 공통 임베딩 공간 구축
- •텍스트와 이미지의 의미적 연결을 통해 멀티모달 이해 가능
00:51
CLIP의 학습 과정과 대조 학습
학습에는 인터넷에서 수집한 약 4억 4천만 개의 이미지와 텍스트 쌍이 사용된다. N개의 이미지와 N개의 텍스트로 구성된 배치에서 실제 짝이 맞는 N개의 쌍(대각선 요소)은 코사인 유사도를 최대화하고, 나머지 N^2-N개의 잘못된 쌍은 유사도를 최소화하도록 학습한다. 이미지 인코더로는 Vision Transformer(ViT)나 ResNet을, 텍스트 인코더로는 GPT 아키텍처를 주로 사용한다.
- •N x N 행렬의 대각선 요소 유사도를 높이는 대조 학습 방식 적용
- •방대한 인터넷 데이터를 활용해 레이블링 비용 문제 해결
04:23
제로샷 추론 메커니즘
제로샷 추론 시에는 분류하고자 하는 클래스 이름들을 'A photo of a [class]'와 같은 프롬프트 형태로 변환한다. 입력 이미지를 인코딩한 벡터와 각 프롬프트 텍스트를 인코딩한 벡터들 사이의 코사인 유사도를 계산한다. 가장 높은 유사도를 기록한 텍스트 프롬프트의 클래스를 최종 예측 결과로 선택하며, 이 과정에서 모델은 해당 데이터셋으로 추가 학습을 거치지 않는다.
- •클래스 이름을 자연어 프롬프트로 변환하여 텍스트 인코더에 입력
- •추가 학습 없이 유사도 계산만으로 새로운 데이터셋 분류 수행
06:30
CLIP이 필요한 이유와 장점
기존 ImageNet과 같은 데이터셋은 레이블링 비용이 매우 크고 고정된 범주만 인식할 수 있다는 한계가 있었다. CLIP은 자연어 감독(Natural Language Supervision)을 통해 훨씬 더 풍부하고 세밀한 시각적 특징을 학습한다. 이는 단순한 객체 분류를 넘어 이미지 내의 복합적인 상황과 맥락을 이해하는 데 유리하다.
- •고정된 레이블 시스템의 한계를 극복하고 유연한 인식 가능
- •자연어 설명을 통해 이미지의 풍부한 의미론적 특징 추출
07:25
코드 실습: CLIP의 풍부한 인코딩 확인
Colab 노트북 실습을 통해 CLIP이 이미지의 미세한 차이를 어떻게 포착하는지 확인했다. 모자를 쓰지 않은 사진과 모자를 쓴 사진의 임베딩 벡터 차이(delta)를 계산한 결과, 이 차이 벡터가 'hat'이라는 단어 벡터와 가장 높은 유사도를 보였다. 이는 CLIP의 이미지 인코더가 이미지 내의 특정 객체 추가와 같은 의미적 변화를 벡터 공간에 정확히 반영하고 있음을 입증했다.
- •두 이미지 벡터의 차이가 특정 단어의 의미와 일치함을 코드로 증명
- •이미지 인코더가 단순 분류를 넘어 세부 속성까지 학습했음을 확인
python
model, preprocess = clip.load("ViT-B/32", device=device)
model.eval()
with torch.no_grad():
image_input_1 = preprocess(img1).unsqueeze(0).to(device)
image_input_2 = preprocess(img2).unsqueeze(0).to(device)
img_feat_1 = model.encode_image(image_input_1).float()
img_feat_2 = model.encode_image(image_input_2).float()
# Normalize embeddings
img_feat_1 = l2_normalize(img_feat_1.squeeze(0))
img_feat_2 = l2_normalize(img_feat_2.squeeze(0))CLIP 모델을 로드하고 두 이미지를 인코딩하여 정규화된 임베딩 벡터를 추출하는 과정
python
delta = img_feat_2 - img_feat_1
delta = l2_normalize(delta)
words = ["hat", "cup", "cat", "boat"]
with torch.no_grad():
text_tokens = clip.tokenize(words).to(device)
text_feats = model.encode_text(text_tokens).float()
text_feats = l2_normalize(text_feats)
sims = cosine_sim(delta, text_feats).detach().cpu().numpy()두 이미지 벡터의 차이(delta)를 계산하고 특정 단어 벡터들과의 코사인 유사도를 비교하는 코드
09:20
성능 분석 및 선형 프로빙
CLIP은 제로샷 환경에서도 기존의 지도 학습 모델(ResNet 등)보다 뛰어난 일반화 성능을 보여준다. 또한 선형 프로빙(Linear Probing) 실험을 통해 CLIP의 고정된 특징 추출기 성능을 평가했다. 훈련 데이터가 늘어날수록 CLIP 위에 선형 레이어를 추가해 학습시킨 모델이 가장 높은 정확도를 기록하며 강력한 시각 표현 능력을 증명했다.
- •제로샷 성능이 특정 데이터셋에 특화된 기존 모델을 능가
- •선형 프로빙 결과 CLIP의 시각적 표현력이 매우 우수함이 확인됨
실무 Takeaway
- 인터넷의 방대한 비정형 이미지-텍스트 쌍을 활용하면 수작업 레이블링 없이도 강력한 시각 모델을 학습할 수 있다.
- 이미지와 텍스트를 동일한 임베딩 공간에 매핑함으로써 텍스트 프롬프트만으로 이미지를 분류하는 제로샷 능력을 확보한다.
- CLIP의 이미지 인코더는 단순한 객체 인식을 넘어 이미지의 세부적인 의미 차이(예: 모자 착용 여부)를 벡터 공간의 연산으로 처리할 수 있을 만큼 정교하다.
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 02. 10.수집 2026. 02. 21.출처 타입 YOUTUBE
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.