ArchCoder/llm-excel-plotter-agent
0
1from PIL import Image2import torch3from transformers import CLIPProcessor, CLIPModel4import os5import logging6import time7from dotenv import load_dotenv8 9load_dotenv()10 11class ImageVerifier:12 def __init__(self):13 logging.info("Initializing ImageVerifier")14 self.model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")15 self.processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")16 17 def verify(self, image_path, query):18 start_time = time.time()19 logging.info(f"Verifying image {image_path} with query: {query}")20 21 full_image_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), image_path)22 23 image = Image.open(full_image_path)24 25 inputs = self.processor(text=[query], images=image, return_tensors="pt", padding=True)26 outputs = self.model(**inputs)27 logits_per_image = outputs.logits_per_image 28 probs = logits_per_image.softmax(dim=1) 29 30 verification_result = probs.argmax().item() == 0 31 end_time = time.time()32 33 logging.info(f"Image verification result: {verification_result} in {end_time - start_time} seconds")34 return verification_result35 