Nodes/ComfyUI-GGUF-FX/๐Ÿค– Multi-Image Comparison
ComfyUI Node

๐Ÿค– Multi-Image Comparison

Six images, one prompt, a written verdict โ€” A/B testing reads this good

By weekiiยทCreated 11 months agoยทUpdated 11 months agoยท 0
๐Ÿค– Multi-Image Comparison
  • model_config
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
  • context
โ—„comparison_typesimilarities - ๆ‰พๅ‡บ็›ธไผผไน‹ๅค„โ–บ
โ—„custom_promptโ–บ
โ—„temperature0.70โ–บ
โ—„max_tokens2048โ–บ
โ—„seed0โ–บ

You upscaled the same render two ways and now you're squinting at side-by-side PNGs trying to decide which is actually sharper. This node does the squinting for you - it feeds up to six images to a real vision-language model and comes back with a written verdict. It's the pack's "tell me what changed" utility, built for exactly those A/B workflows: comparing generations, checking how an edit ripples through a sequence, judging style or quality. Instead of eyeballing pixels, you get a paragraph arguing for one over the other. Genuinely handy when the difference is subtle.

How it works

This is a preset-prompt wrapper around the pack's Transformers mode. You feed it a model_config (of type TRANSFORMERS_MODEL, straight out of the pack's VisionModelLoaderTransformers node - the Qwen3-VL family), plus images, and it runs them through the same generation engine the single-image vision node uses.

The trick is the comparison_type dropdown. It has seven preset lenses plus custom, and each one maps to a written English prompt sent to the model:

  • similarities - what the images share
  • differences - what makes each unique
  • changes - what changed from one to the next
  • relationships - how they connect, what story they tell together
  • sequence - treating them as a timeline
  • quality - resolution, clarity, composition, technical execution
  • style - artistic technique and aesthetic choices

The UI labels are bilingual (e.g. "similarities - ๆ‰พๅ‡บ็›ธไผผไน‹ๅค„"), but the prompts actually sent to the model are English. Pick custom and it uses your custom_prompt field instead - that's the one input that matters when you want the comparison framed your way, like "which has more accurate hands."

The inputs that matter

  • model_config - required; no config, no model. Wire it from the loader.
  • comparison_type - the whole point of the node; this is the lens.
  • image_1 through image_6 - all optional; wire only what you have. Two images is the common case.
  • temperature (default 0.7) and max_tokens (default 2048) - leave alone unless output is rambly or terse.
  • seed - lock it when you want the same comparison reproducible.

Output is a single context string. It's an output node, so the text lands on the node itself; wire it to a text preview or downstream text node to move it around the graph.

Where people get burned

This is the heavy path, not the GGUF one. It runs a full Qwen3-VL checkpoint through HuggingFace Transformers - several gigabytes downloaded on first run, and real VRAM once loaded. The engine loads the model on demand, so your first comparison pays the load cost. Feed it your biggest renders, too: images get resized internally to the model's expected pixel range, and a tiny preview loses the detail you were comparing. And remember the ecosystem's debugging rule - change one thing at a time, lock the seed, then compare. This node makes that habit almost too easy.

Install

ComfyUI Manager (search "ComfyUI-GGUF-FX") or:

cd ComfyUI/custom_nodes
git clone https://github.com/weekii/ComfyUI-GGUF-FX.git
cd ComfyUI-GGUF-FX
pip install -r requirements.txt

Restart, and let the first run download the checkpoint while you make coffee. If you're VRAM-capped, this is the moment to consider the pack's GGUF vision path instead - full-precision Transformers models are why GGUF quantization exists in the first place.

Category๐Ÿค– GGUF-Fusion/Multi-Image

Inputs (12)

NameTypeDefaultDescription
model_configTRANSFORMERS_MODELโ€”
comparison_typeCOMBOsimilarities - ๆ‰พๅ‡บ็›ธไผผไน‹ๅค„ๅฏนๆฏ”็ฑปๅž‹
custom_promptSTRING่‡ชๅฎšไน‰ๆ็คบ่ฏ๏ผˆๅฝ“้€‰ๆ‹ฉ custom ๆ—ถไฝฟ็”จ๏ผ‰
temperatureFLOAT0.700โ€“2็”Ÿๆˆๆธฉๅบฆ๏ผŒๆŽงๅˆถ่พ“ๅ‡บ็š„้šๆœบๆ€ง๏ผˆQwen3-VL ๆŽจ่: 0.7๏ผ‰
max_tokensINT2048128โ€“256000ๆœ€ๅคง็”Ÿๆˆ token ๆ•ฐ
seedINT00โ€“18446744073709550000้šๆœบ็งๅญ๏ผŒ็”จไบŽๅฏ้‡ๅค็š„็”Ÿๆˆ็ป“ๆžœ
image_1optIMAGEโ€”
image_2optIMAGEโ€”
image_3optIMAGEโ€”
image_4optIMAGEโ€”
image_5optIMAGEโ€”
image_6optIMAGEโ€”

Outputs (1)

NameTypeDescription
contextSTRINGโ€”