transformers에서 CLIP 사용법
transformers에서 CLIP 사용법
Hugging Face transformers는 OpenAI CLIP 모델을 네이티브로 지원해요. 핵심 클래스는 CLIPModel, **CLIPProcessor**예요.
핵심 클래스
CLIPModel— 이미지·텍스트 인코더를 합친 모델CLIPProcessor—CLIPImageProcessor와CLIPTokenizer를 묶은 전처리기CLIPVisionModel— 이미지 인코더 단독CLIPTextModel— 텍스트 인코더 단독CLIPVisionConfig,CLIPTextConfig— 설정 클래스
사용 흐름
from transformers import CLIPProcessor, CLIPModel
from PIL import Image
import requests
model = CLIPModel.from_pretrained("openai/clip-vit-large-patch14")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-large-patch14")
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(text=["a photo of a cat"], images=image, return_tensors="pt", padding=True)
outputs = model(**inputs)
logits_per_image = outputs.logits_per_image
probs = logits_per_image.softmax(dim=1)
출력 필드
logits_per_image— 이미지 별로 텍스트와의 유사도 로짓logits_per_text— 텍스트 별 유사도 로짓text_embeds,image_embeds— 각각의 임베딩
참고
- 인코더는
CLIPVisionModel/CLIPTextModel로 분리해 임베딩만 뽑을 수도 있어요. - ViT 계열 체크포인트는
openai/clip-vit-base-patch32,openai/clip-vit-large-patch14이 대표적이에요.