Zero-Shot Image Classification
OpenCLIP
Safetensors
fashion
retrieval
text-to-image
siglip2
e-commerce
moda
Eval Results (legacy)
Instructions to use HopitAI/moda-pro-lite with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- OpenCLIP
How to use HopitAI/moda-pro-lite with OpenCLIP:
import open_clip model, preprocess_train, preprocess_val = open_clip.create_model_and_transforms('hf-hub:HopitAI/moda-pro-lite') tokenizer = open_clip.get_tokenizer('hf-hub:HopitAI/moda-pro-lite') - Notebooks
- Google Colab
- Kaggle
File size: 6,165 Bytes
cd6183f e0ec375 cd6183f e0ec375 cd6183f 5026db7 52d7711 cd6183f 52d7711 cd6183f b673e9d 24a8d0d cd6183f b673e9d cd6183f c63f26f cd6183f 24a8d0d cd6183f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | ---
license: apache-2.0
library_name: open_clip
pipeline_tag: zero-shot-image-classification
tags:
- fashion
- retrieval
- text-to-image
- siglip2
- e-commerce
- moda
datasets:
- Marqo/marqo-GS-10M
base_model: timm/ViT-B-16-SigLIP2-384
model-index:
- name: MODA Pro Lite
results:
- task: {type: text-to-image-retrieval, name: Text-to-Image Retrieval}
dataset: {type: kaggle-fashion, name: KAGL (full corpus, 44K)}
metrics:
- {type: map@10, value: 0.31851, name: MAP@10}
- task: {type: text-to-image-retrieval, name: Text-to-Image Retrieval}
dataset: {type: polyvore, name: Polyvore (full corpus, 94K)}
metrics:
- {type: map@10, value: 0.39970, name: MAP@10}
- task: {type: text-to-image-retrieval, name: Text-to-Image Retrieval}
dataset: {type: atlas, name: Atlas (full corpus, 78K)}
metrics:
- {type: map@10, value: 0.19451, name: MAP@10}
- task: {type: text-to-image-retrieval, name: Text-to-Image Retrieval}
dataset: {type: fashion200k, name: Fashion200K (full corpus, 202K)}
metrics:
- {type: map@10, value: 0.18023, name: MAP@10}
---
# MODA Pro Lite
**A 213M open-weights fashion encoder that beats [MODA](https://huggingface.co/HopitAI/moda-fashionsiglip-multiview-203m) β the strongest open fashion retrieval system β on catalog search, at full corpus and with statistical significance, from one checkpoint with no serving machinery.**
By [Hopit AI](https://hopit.ai). Weights are open (Apache-2.0); the training and data pipeline are proprietary.
| vs MODA, full corpus | MODA Pro Lite | gain |
|---|--:|--:|
| KAGL (44K products) | **0.3185** vs 0.2890 | **+10.2%** |
| Polyvore (94K) | **0.3997** vs 0.3726 | **+7.3%** |
| ZooClaw-Fashion short | **0.4994** vs 0.4775 | **+4.6%** |
The KAGL and Polyvore gains are significant under a paired bootstrap (10,000 resamples, 95% CI excludes zero); on Atlas the difference is positive but inconclusive, and on Fashion200K and In-Shop MODA is significantly better β see the full table. Every number in this card is a **full-corpus** measurement (no subsampled galleries) through one shared harness, alongside FashionSigLIP, SigLIP-SO400M, and ZooClaw under identical protocol. Full six-system table: [benchmark page](https://hopit-ai.github.io/Moda/).
## The MODA family
| model | what it is | availability |
|---|---|---|
| [**MODA**](https://huggingface.co/HopitAI/moda-fashionsiglip-multiview-203m) | frozen FashionSigLIP + zero-parameter multi-view serving recipe | open source + open weights |
| **MODA Pro Lite** (this model) | trained 213M encoder β the drop-in single-checkpoint option | **open weights** |
| **MODA Pro** | our hosted retrieval system. Rank 1 or 2 on **9 of 10** benchmark cells; +6.9% mean over MODA on the six academic sets | closed Β· hosted by Hopit AI |
**Which to pick:** already running MODA's recipe β keep MODA (it still leads on caption-style benchmarks). Want one checkpoint, standard CLIP usage, strongest catalog/title search β **Pro Lite**. Want the strongest overall β [MODA Pro](https://hopit.ai) (hosted).
## Usage
```python
import torch, open_clip
from PIL import Image
model, _, preprocess = open_clip.create_model_and_transforms("hf-hub:HopitAI/moda-pro-lite")
tokenizer = open_clip.get_tokenizer("hf-hub:HopitAI/moda-pro-lite")
model.eval()
image = preprocess(Image.open("product.jpg")).unsqueeze(0)
text = tokenizer(["red floral maxi dress", "slim-fit denim jacket"])
with torch.no_grad(), torch.autocast("cuda"):
img_emb = model.encode_image(image)
txt_emb = model.encode_text(text)
img_emb /= img_emb.norm(dim=-1, keepdim=True)
txt_emb /= txt_emb.norm(dim=-1, keepdim=True)
scores = txt_emb @ img_emb.T
```
Plain bi-encoder: one 768-d vector per image, one per query, cosine similarity. Works with any vector database; no reranker, no prompt template required.
## What's inside (summary)
- **Base:** SigLIP2-base-384 (`timm/ViT-B-16-SigLIP2-384`), full fine-tune of both towers.
- **Size β 213,159,938 params:** the base's 256K-token multilingual vocabulary is trimmed to the 44,646 pieces fashion text actually uses (BPE merge-closure preserved). Verified: **100.00% bit-identical** outputs on 12,000 benchmark queries and 6,000 held-out fashion texts vs the untrimmed 375M model β every benchmark number in this card transfers exactly. Out-of-vocabulary input (emoji, non-Latin scripts, rare typos) re-segments gracefully into kept pieces (cosine 0.82β0.97 to full model), never a silent failure.
- **Data:** 93K commercial product images (from [Marqo-GS-10M](https://huggingface.co/datasets/Marqo/marqo-GS-10M), Apache-2.0), re-annotated by a frontier VLM with graded relevance labels (99.9% coverage).
- **Training:** a proprietary fine-tuning recipe; the pipeline and annotated dataset are not released.
- **Distinctive property:** unlike typical fashion fine-tunes, Pro Lite does **not** collapse out of domain β it adds fashion skill while keeping generalist behavior (image-tower drift from base: 0.36%).
## Evaluation protocol
Measured on six academic fashion benchmarks (DeepFashion In-Shop, DeepFashion Multimodal, Fashion200K, Polyvore, Atlas, KAGL) at **full corpus** β no gallery subsampling β plus H&M (10K, MRR) and ZooClaw-Fashion (12K, MAP@10), all through one open harness with identical preprocessing per model. Where Pro Lite loses (instance retrieval, caption-style sets), the card for [MODA](https://huggingface.co/HopitAI/moda-fashionsiglip-multiview-203m) shows the stronger pick β see the [full comparison](https://hopit-ai.github.io/Moda/) rather than a cherry-picked subset.
## Using this in production
MODA Pro Lite is free to use under Apache-2.0. If you want the hosted MODA Pro,
help evaluating on your own catalog, or a pilot, [book a call](https://calendly.com/arkid_/new-meeting?back=1) β we bring
specific examples from your category and a proposed pilot shape.
## Citation
```bibtex
@misc{modaprolite2026,
title = {MODA Pro Lite: a fashion encoder that does not collapse out of domain},
author = {Hopit AI},
year = {2026},
url = {https://huggingface.co/HopitAI/moda-pro-lite}
}
```
|