from PIL import Image import httpx from io import BytesIO from transformers import AutoProcessor, AutoModel import torch model = AutoModel.from_pretrained("google/siglip2-base-patch16-224") processor = AutoProcessor.from_pretrained("google/siglip2-base-patch16-224") url = "http://images.cocodataset.org/val2017/000000039769.jpg" with httpx.stream("GET", url) as response: image = Image.open(BytesIO(response.read())) texts = ["a photo of 2 cats", "a photo of 2 dogs"] # important: we pass `padding=max_length` since the model was trained with this inputs = processor(text=texts, images=image, padding="max_length", return_tensors="pt") with torch.no_grad(): outputs = model(**inputs) logits_per_image = outputs.logits_per_image probs = torch.sigmoid(logits_per_image) # these are the probabilities print(f"{probs[0][0]:.1%} that image 0 is '{texts[0]}'") #10.6% that image 0 is 'a photo of 2 cats'