Nodes/ComfyUI-VideoQuality-Metrics/VQ Metrics Logger (JSON)
ComfyUI Node

VQ Metrics Logger (JSON)

The glue node that turns your scores into JSON you can save, diff, and plot

By jajos12·Created 7 months ago·Updated 7 months ago· 1
VQ Metrics Logger (JSON)
    • json_output
    metric_namevideo_quality
    psnr0.00
    ssim0.00
    ciede20000.00
    warping_error0.00
    flickering_score0.00
    smoothness_score0.00
    fvd0.00
    fid0.00

    Run enough quality checks and you'll end up with a pile of disconnected floats and no way to compare Monday's run against Friday's. This node is the tidy-up step: it collects your metrics into one structured JSON blob you can save, diff, or feed into analysis later. It doesn't measure anything itself - it's the plumbing, and plumbing nodes are underrated.

    You reach for it once you've wired up a few of the pack's scoring nodes (PSNR/SSIM, warping, FVD, whatever you're tracking) and want the results in one place instead of scattered across summary strings. Wire its JSON output to a save-text node and you've got a run log.

    How it works

    Nothing clever under the hood - and that's fine. It takes whatever metric floats you hand it and assembles them into a JSON object organized by category: fidelity (psnr, ssim, ciede2000), temporal (warping_error, flickering_score, smoothness_score), and distributional (fvd, fid), tagged with a name. Zero values get filtered out, so unconnected inputs don't clutter the output. That's the one behavior to know: default zeros are silently dropped, meaning a metric you forgot to wire won't appear in the JSON at all.

    Inputs and outputs

    Required:

    • metric_name (STRING, default "video_quality") - the tag for this run. Set it to something like upscale_v2_denoise0.4 so you can tell logs apart later.

    Optional (all FLOAT, all default 0, dropped when zero):

    • psnr, ssim, ciede2000 - full-reference results
    • warping_error, flickering_score, smoothness_score - temporal results
    • fvd, fid - distributional results

    Output:

    • json_output (STRING) - the assembled, indented JSON.

    Installing

    It's one node in ComfyUI-VideoQuality-Metrics:

    cd ComfyUI/custom_nodes
    git clone https://github.com/jajos12/ComfyUI-VideoQuality-Metrics
    pip install -r ComfyUI-VideoQuality-Metrics/requirements.txt
    

    Restart ComfyUI; it's under VideoQuality/Reporting. ComfyUI Manager handles the pack install too.

    Common issues

    • Metrics missing from the JSON. You forgot to wire them, and the default zero got filtered. Check your connections - a missing key in the output means an unwired input, not a bug.
    • The JSON is nested, not flat. This matters if you feed it into the pack's own comparison node, which expects flat key→number JSON. The logger's output and the comparison node don't chain cleanly - if that's your goal, either flatten manually or log the values separately. (See the VQ Workflow Comparison article for the gory details.)
    • Nothing is persisted automatically. "Logger" is a slight oversell - it produces a string. Saving it to disk is on you, via a text-save or Python node.
    CategoryVideoQuality/Reporting

    Inputs (9)

    NameTypeDefaultDescription
    metric_nameSTRINGvideo_quality
    psnroptFLOAT0.00
    ssimoptFLOAT0.00
    ciede2000optFLOAT0.00
    warping_erroroptFLOAT0.00
    flickering_scoreoptFLOAT0.00
    smoothness_scoreoptFLOAT0.00
    fvdoptFLOAT0.00
    fidoptFLOAT0.00

    Outputs (1)

    NameTypeDescription
    json_outputSTRING