Skip to content

Instantly share code, notes, and snippets.

@kylophone
Last active December 14, 2020 22:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kylophone/58b10ce1a4b6efbe49d99d585249e667 to your computer and use it in GitHub Desktop.
Save kylophone/58b10ce1a4b6efbe49d99d585249e667 to your computer and use it in GitHub Desktop.
Example Python3 script showing the parsing of libvmaf JSON format output logs. All AOM CTC metrics are included.
import json
import sys
for vmaf_log in sys.argv[1:]:
with open(vmaf_log) as f:
data = json.load(f)
per_frame_metrics = {}
per_frame_metrics["psnr_y"] = \
[frame['metrics']['psnr_y'] for frame in data['frames']]
per_frame_metrics["psnr_cb"] = \
[frame['metrics']['psnr_cb'] for frame in data['frames']]
per_frame_metrics["psnr_cr"] = \
[frame['metrics']['psnr_cr'] for frame in data['frames']]
per_frame_metrics["psnr_hvs"] = \
[frame['metrics']['psnr_hvs'] for frame in data['frames']]
per_frame_metrics["ssim"] = \
[frame['metrics']['float_ssim'] for frame in data['frames']]
per_frame_metrics["ms_ssim"] = \
[frame['metrics']['float_ssim'] for frame in data['frames']]
per_frame_metrics["ciede2000"] = \
[frame['metrics']['ciede2000'] for frame in data['frames']]
per_frame_metrics["vmaf"] = \
[frame['metrics']['vmaf'] for frame in data['frames']]
pooled_metrics = {}
pooled_metrics["psnr_y"] = \
data["pooled_metrics"]["psnr_y"]["mean"]
pooled_metrics["psnr_cb"] = \
data["pooled_metrics"]["psnr_cb"]["mean"]
pooled_metrics["psnr_cr"] = \
data["pooled_metrics"]["psnr_cr"]["mean"]
pooled_metrics["psnr_hvs"] = \
data["pooled_metrics"]["psnr_hvs"]["mean"]
pooled_metrics["float_ssim"] = \
data["pooled_metrics"]["float_ssim"]["mean"]
pooled_metrics["float_ms_ssim"] = \
data["pooled_metrics"]["float_ms_ssim"]["mean"]
pooled_metrics["ciede2000"] = \
data["pooled_metrics"]["ciede2000"]["mean"]
pooled_metrics["vmaf"] = \
data["pooled_metrics"]["vmaf"]["mean"]
aggregate_metrics = {}
aggregate_metrics["aspnr_y"] = \
data["aggregate_metrics"]["apsnr_y"]
aggregate_metrics["aspnr_cb"] = \
data["aggregate_metrics"]["apsnr_cb"]
aggregate_metrics["aspnr_cr"] = \
data["aggregate_metrics"]["apsnr_cr"]
print(per_frame_metrics)
print(pooled_metrics)
print(aggregate_metrics)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment