비전 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