---
license: mit
library_name: open_clip
pipeline_tag: image-classification
base_model: HopitAI/moda-fashion-distilled
language:
- en
metrics:
- f1
- accuracy
datasets:
- detection-datasets/fashionpedia
tags:
- fashion
- attribute-extraction
- product-attributes
- catalog-enrichment
- e-commerce
- computer-vision
- image-classification
- multi-label-classification
- siglip
- moda-ner
- benchmark
- reproducibility
- fashionpedia
- mit
model-index:
- name: MODA_NER(V) Crop
results:
- task:
type: image-classification
name: Fashion attribute extraction
dataset:
type: moda-general-attribute-suite
name: MODA General Attribute Suite (crop track)
metrics:
- type: f1
value: 0.63
name: Attribute micro-F1
- type: f1
value: 0.6074
name: Field-macro F1
- type: accuracy
value: 0.8825
name: Category accuracy
- type: accuracy
value: 0.9215
name: Master-category accuracy
---
# MODA_NER(V) - Crop
> **Fix, 2026-09-19. If you ran this model before this date, re-run it.** The repository's
> `models/inference.py` ran the crop route with the wrong image preprocessing: OpenAI-CLIP
> normalisation and a centre crop, instead of the mean/std 0.5 squash this checkpoint was trained
> with. Its outputs did not match the published benchmark predictions, matching on 16 of 64
> held-out images. The weights in this repository are unchanged and correct. Pull the latest
> [Moda_ner](https://github.com/hopit-ai/Moda_ner) code and the Usage command below produces the
> published predictions. The benchmark numbers on this card were produced correctly.
*Tier `*` - open code, open weights.*
**Tier `*`** — open code, open weights. **Weights: MIT.**
Conditional attribute heads on our own frozen encoder (see Provenance below).
**Input contract:** one localized garment crop.
**Output:** 15 sparse fields — master category, category, sub-category, silhouette, hemline,
sleeve length and shape, neckline, collar presence and style, waist, material, surface
treatment, pattern, closure. No colour, no fit; the evaluation corpus for this track carries
no equivalent labels.
| | Attribute micro-F1 (crop track) |
|---|---:|
| **This released checkpoint** | **0.6300** |
| Same architecture on a frozen FashionSigLIP encoder | 0.6245 |
| Zero-shot open VLM reference (Qwen3-VL-8B) | 0.1805 |
| Zero-shot FashionSigLIP text prototypes | 0.1817 |
These are the weights that produced our published number: nothing is held back on this route.
Field-macro F1 is 0.6074, category accuracy 0.8825, master-category accuracy 0.9215.
Weak fields, stated because the micro average hides them: material 0.4148, plus surface
treatment, collar style, neckline and waist type. A headline of 0.6300 does not mean every
field is usable.
**Attribution.** The annotations behind this track are licensed CC BY 4.0 and require credit:
Jia et al., *Fashionpedia: Ontology, Segmentation, and an Attribute Localization Dataset*,
ECCV 2020. No images from that corpus are redistributed in the weights or the repository.
## Provenance
The encoder these heads run on is ours: [`HopitAI/moda-fashion-distilled`](https://huggingface.co/HopitAI/moda-fashion-distilled), MIT, already public. Nothing from another vendor is loaded at inference time.
That is worth stating plainly, because the comparator on this track is a FashionSigLIP-based system and it would be easy to assume this model is that system with heads attached. It is not. FashionSigLIP appears in two other roles:
- **As the distillation teacher.** An earlier ladder of checkpoints put conditional heads on frozen Marqo-FashionSigLIP. We distilled that system into our own encoder; the teacher is used during training and is not needed to serve.
- **As the baseline we measure against.** The comparator figure quoted above is that same FashionSigLIP-based system.
Lineage, stated once rather than implied: `moda-fashion-distilled` is itself a distilled student built on ViT-B/16-SigLIP, from a teacher ensemble that included our own DeepFashion2 fine-tune. Marqo-FashionSigLIP is Apache-2.0. The DeepFashion2 corpus is research-only, so we do not describe this pipeline as provenance-clean end to end.
**Credit for this model.** If you use these weights or report numbers from this track, cite
the MODA General Attribute Suite (see `CITATION.cff`). Scorers stamp the suite name and
version into every result file for exactly this reason.
## Links
- Benchmark tables and protocol:
- Code, scorers and prediction files:
- All Hopit AI benchmarks:
## Usage
The heads are not a `transformers` architecture, so load them through the suite
repository rather than `AutoModel`:
```bash
git clone https://github.com/hopit-ai/Moda_ner && cd Moda_ner
pip install -r requirements-inference.txt
huggingface-cli download HopitAI/moda-ner-v-crop --local-dir ./moda-ner-v-crop
python models/inference.py --route crop --model-dir ./moda-ner-v-crop --images photo.jpg
```