Nodes/ComfyUI-VideoQuality-Metrics/VQ CLIP Aesthetic Score
ComfyUI Node

VQ CLIP Aesthetic Score

The name is a vibe check, because that's what this node does

By jajos12·Created 7 months ago·Updated 7 months ago· 1
VQ CLIP Aesthetic Score
  • images
  • aesthetic_score
  • summary

"VQ CLIP Aesthetic Score" sounds like it's calling some external API, but the name is mostly a joke. It doesn't call an API, it doesn't need a key, and "aesthetic" is doing a lot of work. What it actually does is take a batch of images (or the frames of a video) and ask a CLIP model how pretty it thinks they are, on a 0 to 1 scale.

You reach for this when you have no reference video to compare against - which is most of the time in text-to-video work. The reference-based nodes in this pack (PSNR, FVD, FID) all need a ground truth. This one just needs your output. So it's the quick-and-dirty gatekeeper: generate a batch, score it, and see if prompt A reliably out-scores prompt B before you bother running the heavier stuff.

How it works

The core is CLIP's ViT-B/32, loaded through HuggingFace transformers on first use. Each frame gets compared against a fixed set of text prompts - positives like "a high quality photo" and "a beautiful image" against negatives like "a blurry photo" and "a poorly composed image" - and the score is the sigmoid of the difference between the positive and negative similarities. Feed it a whole video tensor and it scores every frame, then averages. Higher is better, and you'll want to read the numbers relatively rather than absolutely; CLIP's taste is trained on web images, so it flatters saturated, high-contrast shots and has no real opinion about temporal coherence.

Inputs and outputs

The schema is small enough to be a haiku. Required: images (IMAGE), which is the [T, H, W, 3] frame tensor straight off your video decoder. That's it - no optional knobs.

Outputs:

  • aesthetic_score (FLOAT) - the averaged 0–1 score. This is the number you compare across runs.
  • summary (STRING) - a formatted report with the overall score, how many frames were analyzed, and the min/max range. Wire it into a text display node to read it.

The pack's own calibration: above ~0.7 is excellent, 0.6–0.7 very good, 0.4–0.6 middling, below 0.4 poor. Don't treat those as gospel.

Installing

Everything here lives in the ComfyUI-VideoQuality-Metrics pack, so you install it once:

cd ComfyUI/custom_nodes
git clone https://github.com/jajos12/ComfyUI-VideoQuality-Metrics
pip install -r ComfyUI-VideoQuality-Metrics/requirements.txt

then restart ComfyUI. ComfyUI Manager can also grab it - search "VideoQuality Metrics". The node shows up under Video Quality/CLIP in the node menu. One thing nobody warns you about: the model downloads happen on your first run, not at install. CLIP ViT-B/32 is roughly 600 MB from HuggingFace, so the first execution stalls while it pulls weights. That's normal, let it finish.

The pack is young and has essentially no community footprint yet - if you hit a wall, the GitHub repo is where fixes actually land.

Common issues

  • Returns 0.0 with a warning in the summary - CLIP isn't available, meaning transformers (or OpenAI's clip) isn't installed. The pack's requirements install transformers, but if you skipped that step this is what you get.
  • First run is slow - weight download, not a bug.
  • Scores feel noisy or biased - they are. CLIP aesthetic scores correlate with what CLIP was trained on, so compare outputs from the same prompt on different models, not different prompts against each other.
CategoryVideo Quality/CLIP

Inputs (1)

NameTypeDefaultDescription
imagesIMAGE

Outputs (2)

NameTypeDescription
aesthetic_scoreFLOAT
summarySTRING