Nodes/IG Interpolation Nodes/πŸ“‰ Analyze SSIM
ComfyUI Node

πŸ“‰ Analyze SSIM

The chart that tells you where your latent walk actually moved

By IDGallagherΒ·Created 3 years agoΒ·Updated about a year agoΒ· 3
πŸ“‰ Analyze SSIM
    • IMAGE
    β—„folderβ€”β–Ί
    β—„ymin0.00β–Ί
    β—„ymax1.00β–Ί

    IG Analyze SSIM is the companion chart for IG Explorer, and it answers a question the Explorer leaves implicit: where in your sequence of generated images did things actually change? It scans every image in a folder, compares each consecutive pair with SSIM (structural similarity), and renders the result as a matplotlib line chart that comes out as an image you can look at right in the graph.

    A quick reading guide, because the axis is inverted from what people expect: SSIM of 1.0 means the two frames are identical, so dips in the line are where content changed the most. A plateau at 0.99 across ten frames means you burned ten generations exploring a region where nothing happened. That's exactly the signal you want when you're deciding whether your exploration budget is going into the interesting part of the walk.

    Mechanically it's simple: it lists the folder, sorts the image files, loads each consecutive pair, converts to grayscale, and computes ssim from scikit-image with multichannel=True. It writes the raw values to ssim_data.json in the folder - though worth knowing, the shipped code's cache-read branch is disabled, so it recomputes the whole thing on every run rather than reading that file back. Then it plots with matplotlib at a fixed 2048Γ—1024 canvas and hands you the tensor.

    The inputs are nearly nothing:

    • folder - a string path (forceInput), same folder convention as the rest of the pack. Wire it from IG Folder.
    • ymin / ymax (optional, default 0 and 1) - the y-axis range of the plot. SSIM is naturally 0–1, but if your run lives in a narrow band like 0.93–0.98, clamping the range makes the variation legible instead of a flat line.

    The single IMAGE output is the chart, ready to preview or save like any image. It's not an output-node in the ComfyUI sense - it just returns the rendered picture, so wire it into whatever preview/save you use.

    Two practical notes. First, it sorts filenames lexically, so zero-padded names (which the Explorer's own naming convention produces) sort correctly - but a folder mixing frame_2.png and frame_10.png will compare them out of order. Second, it needs the pack's heavier deps (scikit-image, matplotlib, opencv-contrib-python), which are in the requirements and get installed with everything else.

    Install as usual - ComfyUI Manager β†’ search "IG Interpolation Nodes" β†’ Install, then restart:

    cd ComfyUI/custom_nodes
    git clone https://github.com/IDGallagher/ComfyUI-IG-Nodes
    cd ComfyUI-IG-Nodes && pip install -r requirements.txt
    

    The README is literally :), so the cache behavior above came from reading nodes/analyze.py - treat the source as the docs for this whole pack.

    CategoryπŸ“ IG Nodes/Explorer

    Inputs (3)

    NameTypeDefaultDescription
    folderSTRINGβ€”
    yminoptFLOAT0.00β€”
    ymaxoptFLOAT1.00β€”

    Outputs (1)

    NameTypeDescription
    IMAGEIMAGEβ€”