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