VMAF contribution guide
Zhi Li, Kyle Swanson
Netflix
Agenda
VMAF license BSD+Patent
VMAF repo
code structure
libvmaf (C)
feature
feature
extractor
feature
collector
VIF
motion
adm
ssim*
ms_ssim*
PSNR*
third-party
pdjson (unlicense)
libsvm (libsvm license)
IQA*
(BSD)
y4m_input (daala license)
model prediction
Python
Matlab
spEED^
STMAD^
STRRED^
MatlabPyrTools (MIT)
feature
extractor
model training / prediction
other
housekeeping tools
*Not part of the VMAF algorithm
^Not part of the VMAF algorithm;
research code, doesn’t have a
explicit license
...
...
Brisque^
no-ref
fex
Niqe^
SI-TI*
iCID (BSD)
Python library
inheritance
association
Ways to contribute
Algorithmic contribution
Create a new
FeatureExtractor
Create a thin QualityRunner wrapper
Create a new
FeatureExtractor*
Create a new
TrainTestModel*
Call run_vmaf_training script
Create a new
FeatureExtractor*
Create a new
FeatureExtractor*
*optional
Create a new FeatureExtractor
Create a new TrainTestModel
Call run_vmaf_training script
example_dataset.py:
Call run_vmaf_training script (Cont’d)
vmaf_feature_v6.py:
“Aggregate” feature (TYPE of a FeatureExtractor)
“Atom” feature (in ATOM_FEATURES or DERIVED_ATOM_FEATURES of a FeatureExtractor)
Call run_vmaf_training script (Cont’d)
libsvmnusvr_v2.py:
Validate the new model on a different dataset