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
| 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} | |
| } | |
| ``` | |