vmaf_tiny_v1_medium — legacy mlp_medium VMAF fusion regressor¶
Status — Superseded.
vmaf_tiny_v1_mediumis retained for LOSO-eval baselines alongsidevmaf_tiny_v1. For production use, prefervmaf_tiny_v3(themlp_mediumsuccessor) or later. See ADR-0244.
vmaf_tiny_v1_medium is the medium-capacity sibling of vmaf_tiny_v1, trained under the same Phase-1 recipe over the canonical-6 features (adm2, vif_scale0..3, motion2). It uses the mlp_medium architecture of the Phase-1 recipe (Linear 6→64→32→1 as shipped) without a baked-in StandardScaler. Both v1 variants are the single-split LOSO baselines referenced in docs/ai/loso-eval.md — v1 covers the mlp_small branch and v1_medium covers the mlp_medium branch for the capacity comparison. vmaf_tiny_v3 is the production mlp_medium-capacity checkpoint; it supersedes v1_medium in all production contexts.
Shipped checkpoint¶
| Field | Value |
|---|---|
| Model id | vmaf_tiny_v1_medium |
| Location | model/tiny/vmaf_tiny_v1_medium.onnx |
| Architecture | mlp_medium — Linear(6, 64) → ReLU → Linear(64, 32) → ReLU → Linear(32, 1), read from the ONNX initialisers |
| Trainable parameters | 2 561 |
| Input | input — float32 [batch, 6], dynamic batch |
| Feature order | adm2, vif_scale0, vif_scale1, vif_scale2, vif_scale3, motion2 |
| Output | score — float32 [batch, 1] |
| Ops | Gemm, Relu (no scaler in the graph) |
| Sidecar | none ships; only the ONNX file |
| ONNX opset | 17 |
| License | BSD-2-Clause-Patent |
| Registry entry | vmaf_tiny_v1_medium in model/tiny/registry.json ("smoke": true) |
| SHA-256 | 97f6116b44913f4076170a2f0cb78042db85aac7c56d432e14d9fe138ab952b7 |
Training corpus¶
Identical to vmaf_tiny_v1 — Netflix Public Dataset only (9 reference sources; teacher score vmaf_v0.6.1). No KoNViD-1k or BVI-DVC rows. docs/ai/loso-eval.md references both vmaf_tiny_v1*.onnx as single-split LOSO baselines for the Phase-1 capacity sweep (small vs medium).
Training data terms¶
This model was trained on the Netflix Public Dataset. The terms below are quoted as each source states them (read 2026-10-04); the dataset terms list where each comes from and which models it trained.
Netflix Public Dataset: https://github.com/Netflix/vmaf/blob/0fb4152418d0351901e9c5fd2d30668dced89cdb/resource/doc/datasets.md
We provide a dataset publicly available to the community for training, testing and verification of results purposes.
(please request for access and we will grant it)
The stated purpose includes training; the page states no other terms.
Reading. The fork ships these weights under BSD-2-Clause-Patent: they are fitted parameters that cannot reproduce a clip, an image or a label, and no dataset file is redistributed. That is the fork's reading, not a permission from the dataset's authors. Where a dataset limits its use to research and that limit binds the weights where you use them, treat the model as research-only.
Retrain. RC9 retrains this model on data cleared for redistribution (T-TINY-AI-RETRAIN-CLEARED-DATA-2026-10-04 in state; ADR-1490, ADR-1570).
Validation¶
v1_medium has not been re-evaluated on the Phase-3 chain. For current production PLCC / SROCC / RMSE numbers at mlp_medium capacity, see vmaf_tiny_v3.md (trained on the 4-corpus union with baked StandardScaler, ADR-0275 PTQ sidecar).
When to use this model¶
| Use case | Recommendation |
|---|---|
| Production VMAF fusion (medium capacity) | Use vmaf_tiny_v3 |
LOSO capacity baseline (mlp_medium) | vmaf_tiny_v1_medium — required fixture |
Accuracy comparison vs mlp_small | Pair with vmaf_tiny_v1 |
Runnable usage example¶
# Evaluate quality using the vmaf CLI with the medium-capacity tiny model:
vmaf \
--reference python/test/resource/yuv/src01_hrc00_576x324.yuv \
--distorted python/test/resource/yuv/src01_hrc01_576x324.yuv \
--width 576 --height 324 --pixel_format 420 --bitdepth 8 \
--tiny-model model/tiny/vmaf_tiny_v1_medium.onnx \
--json --output /tmp/vmaf_tiny_v1_medium.json
The tiny model is attached alongside the classic model and its score is added under the feature name vmaf_tiny_model (there is no sidecar name).
Input features
Loading the model makes the run compute its input features (adm2, vif_scale0..3, motion2, with default options), and the model scores every frame once the run is flushed. A frame without one of them fails the run with a message naming it; no input is read as 0.0 (ADR-1520).
Known limitations¶
- Trained on Netflix Public Dataset only — same limited UGC coverage as
vmaf_tiny_v1;vmaf_tiny_v3uses the 4-corpus union. - StandardScaler is not baked into the ONNX graph (Phase-1 recipe), and no sidecar carrying the scaler statistics ships. libvmaf therefore feeds the raw features, so scores from
--tiny-modelare not scaler-corrected: treat v1_medium as a fixture, not as a calibrated estimator. - Superseded by
vmaf_tiny_v3for both accuracy and corpus coverage. Do not use v1_medium in new pipelines.
See also¶
vmaf_tiny_v1.md— themlp_smallsibling; same Phase-1 recipe.vmaf_tiny_v3.md— themlp_mediumproduction successor (4-corpus union, baked scaler, ADR-0275 PTQ).docs/ai/loso-eval.md— LOSO methodology; cites both v1 variants as single-split baselines.- ADR-0244 — v2 ship decision (also supersedes v1_medium as default).
- ADR-0042 — tiny-AI doc-substance rule this card satisfies.