File size: 3,434 Bytes
cd6183f
 
 
fbc2be0
 
 
 
 
 
 
cd6183f
 
e3797c9
fbc2be0
e3797c9
 
cd6183f
e3797c9
 
 
 
cd6183f
fbc2be0
cd6183f
fbc2be0
 
cd6183f
fbc2be0
 
 
 
 
 
 
 
cd6183f
fbc2be0
 
cd6183f
fbc2be0
 
cd6183f
fbc2be0
 
 
 
 
 
 
 
 
e3797c9
fbc2be0
 
 
 
cd6183f
 
 
 
 
fbc2be0
 
 
 
cd6183f
 
fbc2be0
e3797c9
 
cd6183f
fbc2be0
c63f26f
fbc2be0
 
 
c63f26f
fbc2be0
cd6183f
e3797c9
fbc2be0
 
 
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
---
license: apache-2.0
tags:
  - fashion
  - retrieval
  - text-to-image
  - open_clip
  - siglip2
pipeline_tag: feature-extraction
library_name: open_clip
---

# MODA Pro Lite

A 213M fashion retrieval encoder (SigLIP2-base-384 backbone, fashion-vocabulary build).
**Open weights.**

Served with its calibrated recipe it becomes
**[MODA Pro Lite+](https://huggingface.co/HopitAI/moda-pro-lite-plus)** — the strongest open
system at ≤250M parameters on catalogue and title search. The recipe lives in that repository;
the weights live here, and Pro Lite+ pulls them at load time.

## Results

MAP@10, full corpus, all ground-truth queries, one evaluator (`pytrec_eval map_cut.10`).
`MODA` is FashionSigLIP with its own serving recipe, shown for reference.

| benchmark | MODA | Pro Lite (bare) | **Pro Lite+** (with recipe) |
|---|---:|---:|---:|
| KAGL | 0.2887 | 0.3055 | **0.3201** |
| Polyvore | 0.3726 | 0.3952 | **0.4049** |
| Atlas | 0.1862 | 0.1814 | **0.1904** |
| Fashion200K | **0.1946** | 0.1758 | 0.1846 |
| DeepFashion In-Shop | **0.1642** | 0.0930 | 0.1026 |
| DeepFashion Multimodal | **0.0147** | 0.0118 | 0.0133 |

**Pro Lite+ leads the ≤250M class on KAGL, Polyvore and Atlas** — +10.9% over MODA on KAGL,
+8.7% on Polyvore, both significant under a paired bootstrap (10,000 resamples).

The recipe is worth +2.5% to +12.8% over the bare encoder on every benchmark, and costs
nothing at query time: the views are fused into a single vector before indexing.

**Where this model is weak, stated plainly.** Pro Lite is tuned for short catalogue titles.
On long natural-language descriptions it trails FashionSigLIP substantially — DeepFashion
In-Shop queries average 75 words, and Pro Lite+ scores 0.1026 there against MODA's 0.1642.
If your queries are descriptions rather than titles, use
[MODA Duo](https://huggingface.co/HopitAI/moda-duo), which routes per query.

## Use

```bash
pip install open_clip_torch pillow
```

```python
import open_clip, torch

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()

with torch.no_grad():
    image = torch.nn.functional.normalize(model.encode_image(preprocess(img).unsqueeze(0)), dim=-1)
    text  = torch.nn.functional.normalize(model.encode_text(tokenizer(["black leather ankle boots"])), dim=-1)
    score = (text @ image.T).item()
```

768-d embeddings, cosine similarity, one vector per item. Index them in any vector database.
For the recipe that lifts these numbers to the Pro Lite+ column, use
[moda-pro-lite-plus](https://huggingface.co/HopitAI/moda-pro-lite-plus).

## Evaluation

All figures are full corpus, all ground-truth queries, MAP@10 under one evaluator
(`pytrec_eval map_cut.10`), float32. Per-query results and confidence intervals are in the
[repository](https://github.com/hopit-ai/Moda).

## Related

- [MODA Pro Lite+](https://huggingface.co/HopitAI/moda-pro-lite-plus) — this encoder with its serving recipe.
- [MODA Duo](https://huggingface.co/HopitAI/moda-duo) — routes each query to Pro Lite+ or MODA by its shape; beats both on a mixed workload.
- [MODA](https://huggingface.co/HopitAI/moda-fashionsiglip-multiview-203m) — FashionSigLIP with a serving recipe. Stronger on long descriptions.
- [MODA-SigLIP-Distilled](https://huggingface.co/HopitAI/moda-fashion-distilled) — image-to-image retrieval.