Nodes/Divergent Nodes/MusiQ Image Scorer
ComfyUI Node

MusiQ Image Scorer

A quality score that's currently reading the aspect ratio, not your image

By thedivergentai·Created 2 years ago·Updated 9 months ago· 1
MusiQ Image Scorer
  • image
  • quality_score
  • quality_rating
normalize_scoretrue

"Stop guessing if your generation is good" - that's the pitch, and it's a great one. A node that scores your image objectively and tells you it's an 87? Sign me up. The MusiQ Image Scorer is supposed to be that: it's named after Google's MUSIQ (Multi-Scale Image Quality) models, which are real, respected no-reference image quality scorers that rate aesthetic and technical quality without needing a reference image.

Here's what you need to know before you trust that number: the node that ships in this pack returns a placeholder heuristic, not an actual MUSIQ score. I checked the source. The scoring function converts your image, then awards points for vibes: a baseline of 50, +10 if the aspect ratio is near-square, +20 if it's over 512×512, +10 more if it's over 1024×1024. Then it clamps to 0–100 and maps to a rating. It's a thumbnail-property guess with a pretty name, and the code itself has the TODO admitting the real model inference isn't implemented yet.

The pack does contain a real MUSIQ scorer (musiq_scorer.py) that loads the TensorFlow Hub models and runs them - but it's not connected to the node. So the honest state: the plumbing exists, the node doesn't use it.

How it works (what ships)

Input image → convert to PIL → heuristic: baseline 50, bonuses for square-ish aspect and high resolution → clamp to 0–100 → map to a rating. The rating thresholds: 80+ is "Excellent", 60+ "Good", 40+ "Fair", below that "Poor".

Inputs and outputs

  • image - the IMAGE to score. The only required input.
  • normalize_score (optional boolean, default on) - clamps the score into 0–100. Turn it off and you get the raw heuristic value.

Outputs:

  • quality_score (FLOAT) - the number, 0–100 in default mode.
  • quality_rating (STRING) - Excellent / Good / Fair / Poor.

The dependency elephant

The pack's requirements.txt pulls in tensorflow and tensorflow-hub - a very heavy install, and it exists entirely for the MusiQ scorer that isn't even wired up. If you're only here for this node, that's a lot of gigabytes for a placeholder. Installing the pack for the Gemini or save nodes means accepting TensorFlow into your environment whether you want it or not.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/thedivergentai/divergent_nodes.git divergent_nodes
cd divergent_nodes
pip install -r requirements.txt

Or via ComfyUI Manager ("Divergent Nodes"). It's built on the newer v3 node API, so a current ComfyUI is required. Expect the TensorFlow install to take a while - that part's real.

The honest verdict

Right now, don't let this score make decisions for you. A square 1080×1080 image scores 80 and rates "Excellent" no matter how mangled it is, and a beautiful 800×450 landscape caps out around 60. It's a resolution/aspect-ratio meter wearing a quality-score costume. Watch the repo - the real scorer is sitting there in the codebase, and the day it gets connected, this becomes a genuinely useful node. Until then, use your eyes; they're still better at this.

CategoryDivergent Nodes 👽/Image

Inputs (2)

NameTypeDefaultDescription
imageIMAGEImage to assess quality for
normalize_scoreoptBOOLEANtrueNormalize score to 0-100 range

Outputs (2)

NameTypeDescription
quality_scoreFLOAT
quality_ratingSTRING