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