Fine-tuned DINOv2-Small model for individual animal identification, specializing in distinguishing between unique cats and dogs. This model produces robust image embeddings optimized for pet recognition, re-identification, and verification tasks.
This approach creates compact feature clusters for each individual animal while maintaining large separation between different identities.
The model has been benchmarked against various vision encoders on multiple pet recognition datasets:
1import torch
2import torch.nn.functional as F
3from PIL import Image
4from transformers import AutoModel, AutoImageProcessor
5
6# Load model and processor
7processor = AutoImageProcessor.from_pretrained("facebook/dinov2-small")
8model = AutoModel.from_pretrained("AvitoTech/DINO-v2-small-for-animal-identification")
9
10device = "cuda" if torch.cuda.is_available() else "cpu"
11model = model.to(device).eval()
12
13# Load and process image
14image = Image.open("your_image.jpg").convert("RGB")
15
16with torch.no_grad():
17 inputs = processor(images=[image], return_tensors="pt").to(device)
18 outputs = model(**inputs)
19 embedding = outputs.last_hidden_state[:, 0, :] # CLS token
20 embedding = F.normalize(embedding, dim=1)
21
22print(f"Embedding shape: {embedding.shape}") # torch.Size([1, 384])