I FUCKING FIGURED OUT how to use VMAF with AVIF images. For those who don't know Jpeg XL has been caught cheating in DSSIM by using modular encoding which produces nasty pixilation artefacts. VMAF is somewhat resistent to this cheat but nobody could figure out how to use it for images since it only accepts Y4M video.
It turns out VMAF needs many frames to sample from to create a usable score so 1 FPS video is no good. 30 FPS video even of 1 second duration is perfectly okay thoughbeit. This took me weeks to figure out. FUCK. VMAF was primarily trained on a 1080p HDTV so it's most accurate with 1080p images. Only scores of 95 or above seem to correlate with high quality images.
@echo off
for %%s in (*.png) do (
ffmpeg -framerate 1 -i "%%s" -loglevel error -hide_banner ^
-r 30 -pix_fmt yuv444p ref.y4m
)
for %%s in (*.avif) do (
ffmpeg -i "%%s" -hide_banner -loglevel error ^
-pix_fmt rgb24 avif.png
ffmpeg -framerate 1 -i avif.png -loglevel error -hide_banner ^
-r 30 -pix_fmt yuv444p dis.y4m
)
vmaf -r ref.y4m -d dis.y4m
cmd /k
94.94 VMAF 56KB VarDCT Jpeg XL (cjxl -q 70 -m 0 -e 9)
https://files.catbox.moe/dhi7z4.jxl
95.82 VMAF 47KB Modular/SSIM cheat Jpeg XL (cjxl -q 60 -m 1 -e 9)
https://files.catbox.moe/3h7w8q.jxl
95.04 VMAF 29KB AVIF (-d 10 -y 444 -q 60 -s 0 --cicp 1/13/1)
https://files.catbox.moe/fjsxfc.avif