v802 classifier
Multi-label image classifier that predicts which of six characters appear in an image: Applejack, Fluttershy, Pinkie Pie, Rainbow Dash, Rarity, Twilight Sparkle.
- Backbone (frozen, not included): DINOv3 ViT-L/16,
facebook/dinov3-vitl16-pretrain-lvd1689m - Head (
assets/v802/classifier.joblib): ensemble of a MIL head on patch tokens from layers 16/20/24 (weight 0.6) and a per-class logistic-regression probe (weight 0.4), followed by a label-set decoder with a label-set prior and a cardinality model. The output is a set of labels plus per-class probabilities. - Input: RGB resized to 640x352, inferred on the original and its horizontal flip. Runs on CPU.
Files
| Path | Contents |
|---|---|
assets/v802/classifier.joblib |
Trained head bundle (classes, components, config, decoder) |
src/ |
Inference, training and experiment code |
requirements.txt |
Pinned dependency versions used in production |
classifier.joblib is a pickle. Loading it executes code, so only load it from a source you trust.
Setup
Request access to
facebook/dinov3-vitl16-pretrain-lvd1689mon Hugging Face (gated under the DINOv3 license), then download it:hf download facebook/dinov3-vitl16-pretrain-lvd1689m --local-dir models/dinov3-vitl16Install dependencies (torch is the CPU build):
pip install --extra-index-url https://download.pytorch.org/whl/cpu -r requirements.txt
Inference
python src/predict_v802.py \
--bundle assets/v802/classifier.joblib \
--model models/dinov3-vitl16 \
image1.jpg images_dir/
Options: --threads N (default 4), --fp32 (disable bf16 autocast), --output out.jsonl.
Each line of output is JSON: {"file": ..., "labels": [...], "probabilities": {class: p, ...}}.
src/serve_v802.py takes the same --bundle / --model arguments and serves a minimal HTTP endpoint (--port, default 8802).
Notes
- Training and experiment scripts (
train_*,experiment_*,extract_features_*,build_v802.py) expect anartifacts/tree of datasets, splits and features that is not included, so they will not run as-is. - Training data: 736 labeled dev images plus two 32-image holdout sets (not included).