측정 안 함. 지연 시간·처리량·메모리를 재는 코드가 노트북에 없습니다. infer_ms는 넣지 않았습니다.
장비
장비 이름
배치 크기
지연 시간 (샘플당, p50 / p95)
처리량 (샘플/초)
메모리 사용
CPU
[미확인]
-
측정 안 함
측정 안 함
측정 안 함
GPU
NVIDIA GeForce RTX 4070 Laptop 8GB
1
측정 안 함
측정 안 함
측정 안 함
한계 · 배운 점한계 알려진 실패 유형: 분류에서 standing(25.26)과 sitting(25.40)의 logit 차이가 작아 확률이 0…
한계
알려진 실패 유형: 분류에서 standing(25.26)과 sitting(25.40)의 logit 차이가 작아 확률이 0.45 / 0.52로 붙어 있음. 프롬프트를 바꿔 비교하지 않음 ([미확인]). [🚩AI 설명] 라벨 문구에 민감할 수 있음
코드 주의: 검색 셀의 model.text_model(..., attension_mask=...)는 인자 이름 오타임. [🚩AI 설명] 마스크가 적용되지 않았을 수 있고, 질의가 1개라 패딩이 없어 결과에는 영향이 없을 것으로 보지만 확인하지 않음 [미확인]
환경 문제: safetensors 버전 비교 오류(found=None)와 huggingface-hub 의존성 충돌이 있어 uv pip install --reinstall safetensors, uv remove huggingface-hub 등으로 정리했다고 노트북에 메모
편향 / 공정성 이슈: [미확인]
성능이 떨어지는 입력 조건: [미확인] (이미지 1장, 5장만 확인)
배운 점
CLIP은 텍스트 축에 softmax를 걸어 확률의 합이 1이 된다. [🚩AI 설명] 라벨이 하나만 맞아도 다른 라벨에 확률이 나눠지고, "어느 것도 아님"을 표현하기 어렵다
추론에서는 torch.no_grad()로 그래디언트 계산을 막아 리소스를 줄인다
검색은 이미지 폴더를 한 번만 벡터화해 두고 질의 텍스트 벡터와의 코사인 유사도로 순위를 매기면 된다. [🚩AI 설명] 벡터를 L2 정규화해야 내적 = 코사인 유사도
같은 실습을 SigLIP2로도 했다: 점수 방식(sigmoid)과 벡터화 함수가 달라진다 (20261007-image-text-matching-siglip2). [🚩AI 설명] 질의와 이미지가 서로 달라 점수를 직접 비교할 수는 없다
[🚩AI 설명] 다음에 해 볼 것: 정답 라벨이 있는 이미지 묶음에서 CLIP과 SigLIP2의 정확도·속도를 같은 조건으로 비교
사용 방법코드 셀 5개
In [1]모델 불러오기
from transformers import CLIPProcessor, CLIPModel
model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")
Out[1] 출력 보기
Loading weights: 0%| | 0/398 [00:00<?, ?it/s]
In [2]이미지-텍스트 입력 만들기
from PIL import Image
image = Image.open("images/sit.jpg")
classes = ["a person standing", "a person sitting", "a person running"]
inputs = processor(text=classes, images=image, return_tensors="pt", padding=True)
print(inputs.keys())