Spaces:
Sleeping
Sleeping
| ''' | |
| import torch | |
| from torchvision import models, transforms | |
| from PIL import Image | |
| import requests | |
| from io import BytesIO | |
| # Load ResNet50 model | |
| model = models.resnet50(pretrained=True) | |
| model.eval() | |
| preprocess = transforms.Compose([ | |
| transforms.Resize(256), | |
| transforms.CenterCrop(224), | |
| transforms.ToTensor(), | |
| ]) | |
| def get_embedding(image: Image.Image): | |
| img_tensor = preprocess(image).unsqueeze(0) | |
| with torch.no_grad(): | |
| embedding = model(img_tensor).squeeze().numpy() | |
| return embedding | |
| def load_image_from_url(url): | |
| response = requests.get(url) | |
| img = Image.open(BytesIO(response.content)).convert("RGB") | |
| return img | |
| ''' | |
| import torch | |
| import open_clip | |
| from PIL import Image | |
| import requests | |
| from io import BytesIO | |
| from torchvision import transforms | |
| # Load CLIP model (ViT-B-32 is a good default) | |
| model, _, preprocess = open_clip.create_model_and_transforms( | |
| 'ViT-B-32', pretrained='openai' | |
| ) | |
| model.eval() | |
| # Define a function to compute CLIP embeddings | |
| def get_embedding(image: Image.Image): | |
| # CLIP expects images in a certain format: | |
| image_input = preprocess(image).unsqueeze(0) # (1, 3, H, W) | |
| with torch.no_grad(): | |
| image_features = model.encode_image(image_input) | |
| # Normalize to unit vector for cosine similarity | |
| image_features = image_features / image_features.norm(dim=-1, keepdim=True) | |
| return image_features.squeeze().cpu().numpy() | |
| # Helper to load image from URL | |
| def load_image_from_url(url): | |
| response = requests.get(url) | |
| img = Image.open(BytesIO(response.content)).convert("RGB") | |
| return img | |