ZooClaw-FashionSigLIP2

Project Page arXiv Model Dataset API License

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:

Notebook What it does Open
Fashion Embeddings Raw 768-dim image & text embeddings, similarity, and zero-shot classification — direct access to this model Open In Colab
Fashion Image Search Visual product discovery — find visually similar items across 200M+ products Open In Colab
Fashion Product Search Text-based discovery — natural-language search across 200M+ items Open In Colab

The Fashion Embeddings notebook hits this checkpoint directly through three endpoints:

  • fashion-image-embedding — batch image → [N, 768] L2-normalized vectors
  • fashion-text-embedding — batch text → [M, 768] L2-normalized vectors
  • fashion-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

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
Safetensors
Model size
0.4B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for srpone/zooclaw-fashionsiglip2

Finetuned
(5)
this model

Paper for srpone/zooclaw-fashionsiglip2