π Analyze SSIM
The chart that tells you where your latent walk actually moved
- IMAGE
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
0and1) - 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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| folder | STRING | β | |
| yminopt | FLOAT | 0.00 | β |
| ymaxopt | FLOAT | 1.00 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |