Instructions to use srpone/zooclaw-fashionsiglip2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use srpone/zooclaw-fashionsiglip2 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("zero-shot-image-classification", model="srpone/zooclaw-fashionsiglip2") pipe( "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/parrots.png", candidate_labels=["animals", "humans", "landscape"], )# Load model directly from transformers import AutoProcessor, AutoModelForZeroShotImageClassification processor = AutoProcessor.from_pretrained("srpone/zooclaw-fashionsiglip2") model = AutoModelForZeroShotImageClassification.from_pretrained("srpone/zooclaw-fashionsiglip2", device_map="auto") - Notebooks
- Google Colab
- Kaggle
ZooClaw-FashionSigLIP2
ZooClaw-FashionSigLIP2 is a fashion-specialized vision-language encoder fine-tuned from SigLIP2-base-patch16-384. It extracts aligned image and text embeddings optimized for fashion product search, image-text retrieval, and text-to-image retrieval. The model is developed for the ZooClaw AI agents platform and served via the zoodata.ai data-agent API. See the paper for the full recipe, ablations, and benchmark results.
🚀 Continuously optimized version & cleaned training data are available via zoodata.ai. The hosted API is refreshed on a rolling cadence with newly mined hard negatives and re-validated training pairs, and the cleaned fashion-retrieval training data used to produce these checkpoints is offered alongside the API for licensed use.
Try the commercial API in Colab — no setup, no GPU
Three ready-to-run notebooks on the ZooData platform — no model download, no GPU:
The Fashion Embeddings notebook hits this checkpoint directly through three endpoints:
fashion-image-embedding— batch image →[N, 768]L2-normalized vectorsfashion-text-embedding— batch text →[M, 768]L2-normalized vectorsfashion-similarity— one-shot[N × M]cosine-similarity matrix
Sign up at zoodata.ai/register — every new account includes 1,000 free credits.
| Property | Value |
|---|---|
| Architecture | SigLIP2 (ViT-B/16) |
| Parameters | ~375M (vision + text towers) |
| Image input | 384 × 384 RGB |
| Text input | up to 64 tokens |
| Output | aligned image / text embeddings (768-d) |
| Framework | PyTorch / Transformers |
Quick Start
from transformers import AutoModel, AutoProcessor
import torch
from PIL import Image
model = AutoModel.from_pretrained("srpone/zooclaw-fashionsiglip2")
processor = AutoProcessor.from_pretrained("srpone/zooclaw-fashionsiglip2")
model.eval()
image = Image.open("your_image.jpg").convert("RGB")
texts = [
"navy blue floral midi dress",
"black leather crossbody bag",
"white cotton oversized hoodie",
]
inputs = processor(images=image, text=texts, padding="max_length", return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
# Aligned embeddings (already L2-normalized by SigLIP2)
image_emb = outputs.image_embeds # [1, 768]
text_emb = outputs.text_embeds # [3, 768]
similarity = (image_emb @ text_emb.T).softmax(dim=-1)
print(similarity)
Feature Extraction (Batch)
from torch.utils.data import DataLoader, Dataset
class ImageDataset(Dataset):
def __init__(self, image_paths, processor):
self.image_paths = image_paths
self.processor = processor
def __len__(self):
return len(self.image_paths)
def __getitem__(self, idx):
image = Image.open(self.image_paths[idx]).convert("RGB")
return self.processor(images=image, return_tensors="pt")["pixel_values"][0]
dataset = ImageDataset(your_image_paths, processor)
loader = DataLoader(dataset, batch_size=64, num_workers=4)
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)
all_embeddings = []
with torch.no_grad():
for batch in loader:
emb = model.get_image_features(pixel_values=batch.to(device))
emb = torch.nn.functional.normalize(emb, dim=-1)
all_embeddings.append(emb.cpu())
image_embeddings = torch.cat(all_embeddings, dim=0) # [N, 768]
Text-to-Image Retrieval
import torch.nn.functional as F
text_inputs = processor(text=queries, padding="max_length", return_tensors="pt").to(device)
with torch.no_grad():
text_embs = model.get_text_features(**text_inputs)
text_embs = F.normalize(text_embs, dim=-1)
# image_embeddings: [N, 768] precomputed gallery
similarity = text_embs @ image_embeddings.to(device).T
top_k_indices = similarity.topk(k=10, dim=-1).indices
Model Outputs
The model returns a SigLIP-style output:
| Field | Shape | Description |
|---|---|---|
image_embeds |
[B, 768] |
Image embedding (use for image retrieval) |
text_embeds |
[B, 768] |
Text embedding (use for text retrieval) |
logits_per_image |
[B_img, B_text] |
Image→text sigmoid logits |
logits_per_text |
[B_text, B_img] |
Text→image sigmoid logits |
Resources
- Paper: ZooClaw-FashionSigLIP2: Distilled Fine-tuning for Robust Fashion Retrieval
- Evaluation Benchmark: srpone/zooclaw-fashion-eval
- Benchmark Framework: LookBench
- Commercial API: zoodata.ai
Citation
@article{xue2026zooclaw,
title={ZooClaw-FashionSigLIP2: Distilled Fine-tuning for Robust Fashion Retrieval},
author={Siqiao Xue and Chunxue Xu},
year={2026},
url={https://arxiv.org/abs/2606.27708},
journal={arXiv preprint arXiv:2606.27708},
}
- Downloads last month
- 2,633
Model tree for srpone/zooclaw-fashionsiglip2
Base model
google/siglip2-base-patch16-384