Nodes/ComfyUI-nhknodes/πŸ” Image Evaluator (nhk)
ComfyUI Node

πŸ” Image Evaluator (nhk)

An AI quality gate that actually looks at your images

By EnashkaΒ·Created 12 months agoΒ·Updated 28 days agoΒ· 23
πŸ” Image Evaluator (nhk)
  • image
  • image
  • passed
  • confidence
  • reasoning
  • info
β—„evaluation_criteriaIs this image high quality, sharp, and well-composed?β–Ί
β—„confidence_threshold0.70β–Ί
β—„modelqwen3-vl:8bβ–Ί
β—„temperature0.3β–Ί

Most "quality checks" in ComfyUI are just a human squinting at a preview. ImageEvaluator tries to replace that with a vision model that reads the actual pixels, scores them against your own criteria, and hands you a pass/fail boolean you can route on. It's the gatekeeper node for an automated QC loop: generate, evaluate, keep the good ones, quietly discard or reroute the bad ones. That's a genuinely useful thing to want, and this is one of the few nodes I've seen attempt it on top of local Ollama instead of a paid API.

The catch is in the category: nhk/wip. This is part of the pack's experimental Image Evaluation workflow, and the author is upfront that behavior may shift while they sort out ComfyUI's pull-based execution quirks. It works, but treat it as a building block, not a finished product.

How it works

The node takes your image, saves it as a temporary JPEG, base64-encodes it, and fires it at your local Ollama server (http://localhost:11434/api/generate). The vision model reads the image against whatever evaluation_criteria you wrote and responds with a verdict. The node then parses that text.

This is where you need to be realistic about what you're getting. The confidence score isn't a calibrated model output - it's a regex that looks for patterns like confidence: 0.85, 8/10, or 85%, and falls back to keyword matching ("excellent" β†’ 0.95, "poor" β†’ 0.30). Pass/fail is a keyword vote plus an explicit "yes"/"no" check. It's a heuristic on top of a vision model, which is fine for "is this obviously blurry garbage" but don't expect it to agree with your taste.

passed is True only if the judgment says you met the criteria and the extracted confidence is at least confidence_threshold. That double gate is the right call - it stops a model that says "yes, but I'm really not sure" from passing.

The inputs that matter

  • evaluation_criteria - the whole game. "Is this image high quality, sharp, and well-composed?" is the default and it's too vague for real QC. Be concrete: "eyes in focus, natural skin tones, no motion blur" or "product centered, clean background, no text artifacts."
  • confidence_threshold (0.7) - how strict the gate is. 0.85+ is very strict, 0.5 is lenient.
  • model - qwen3-vl:8b (default) or llama3.2-vision:11b. You must have it pulled in Ollama.
  • temperature (0.3) - keep it low. Lower = more consistent judgments, which is what you want in a QC loop.

Outputs: image (passthrough), passed (BOOLEAN - wire this to a Conditional Router or Stop node), confidence (FLOAT), reasoning (STRING, the model's actual explanation - read it when the gate misfires), and info (a summary string). Note the node re-runs on every execution by design, so each run costs a local Ollama call. Local, so it's free, but it's not instant on an 8B model.

Installing and prerequisites

Install the pack the usual way - ComfyUI Manager, search "NHK Nodes", install, restart - or clone it manually:

cd ComfyUI/custom_nodes
git clone https://github.com/Enashka/ComfyUI-nhknodes

Then the Ollama part, which is the real dependency:

ollama serve          # keep this running
ollama pull qwen3-vl:8b

Where people get burned

  • "Cannot connect to Ollama. Is it running?" - that's the error text when ollama serve isn't up. Start it, pull the model, try again.
  • All images pass or all fail - your criteria are too vague or too strict. Read the reasoning output; it'll tell you what the model actually saw.
  • Nothing seems to run at all - this is the WIP gotcha. ComfyUI only executes chains that lead into a real terminal, so your evaluation branch has to end in an actual Save/Preview (or a Conditional Router that feeds one). The passthrough preview nodes in this pack aren't terminals by themselves. If the evaluator silently does nothing, you've got no terminal reachable from it.

ImageEvaluator is the most "wow" node in the pack and the most undercooked. If you want a smarter filter for long batch runs, it's worth a shot - just verify its judgment on your own images before you let it discard anything you care about.

Categorynhk/wip

Inputs (5)

NameTypeDefaultDescription
imageIMAGEImage to evaluate
evaluation_criteriaSTRINGIs this image high quality, sharp, and well-composed?Criteria for evaluation - be specific about what you want
confidence_thresholdFLOAT0.700–1Minimum confidence score to pass (0.0-1.0)
modelCOMBOqwen3-vl:8bVision model to use for evaluation
temperatureFLOAT0.30–1Lower = more consistent, higher = more varied judgments

Outputs (5)

NameTypeDescription
imageIMAGEOriginal image passthrough
passedBOOLEANTrue if meets criteria AND confidence β‰₯ threshold
confidenceFLOATAI confidence score (0.0-1.0)
reasoningSTRINGAI's detailed explanation of judgment
infoSTRINGSummary: model, threshold, result