비전 AI (VISION)/CLIP
CLIPProcessor
bellmake
2024. 8. 23. 17:09
[ 참고 ]
test_clip.py
model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")
txt = ['a piece of sushi','a dog', 'a robot']
img = Image.open('/home/joseph/study/multimodal/ai_editor/my_data/optimus.jpg')
inputs = processor(text=txt, images=img, return_tensors="pt", padding=True)
print(inputs.keys())
outputs= model(**inputs)
logits_per_image = outputs.logits_per_image
probs = logits_per_image.softmax(dim=1)
print(probs)
# 가장 높은 확률을 가지는 텍스트의 인덱스 추출
max_prob_index = torch.argmax(probs).item()
# 가장 높은 확률을 가지는 텍스트 출력
print(f"The most relevant text is: {txt[max_prob_index]}")
model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")
CLIPImageProcessor와 CLIPTokenizer를 wrapping한 class로
CLIPImageProcessor는 이미지 처리(e.g. resize, normalization)를 담당합니다.
CLIPTokenizer은 text tokenizing을 담당합니다.
이에 대응하는 image_processor, tokenizer 필드를 갖고 있습니다.
CLIPProcessor
Tokenizer를 통과하여 encoding으로 나오고,
Feature Extrator(Image Processor)를 통과한 것은 image_features로 나옵니다.
if text is not None:
encoding = self.tokenizer(text, return_tensors=return_tensors, **kwargs)
if images is not None:
image_features = self.feature_extractor(images, return_tensors=return_tensors, **kwargs)
if text is not None and images is not None:
encoding["pixel_values"] = image_features.pixel_values