βΎοΈπβ¨ Image Reward
ESS Image Reward β let a reward model pick your best image so you don't have to
- images
- SCORE_FLOAT
- SCORE_STRING
- VALUE_FLOAT
- VALUE_STRING
Ran a batch of twelve and now you have to eyeball every one to find the winner? The βΎοΈπβ¨ Image Reward node automates that judgment call. It scores your generated images against your prompt using the ImageReward model - the same human-preference reward model from THU-MIG - and hands you the score, plus a friendlier 0-to-10-ish "value" so you can rank the batch without squinting at floating-point noise.
It's the kind of node that earns its place if you do a lot of batch variation: render a grid of prompts or seeds, pipe every image through this with the prompt you used, and the highest score is the model's pick for "most aligned with what you asked for." It's a ranking aid, not an oracle - but for "which of these six do I upscale," it's genuinely useful.
How it works
Three inputs:
images- IMAGE, the batch you want scored.prompt- STRING (multiline), the prompt the images were generated from. This matters: ImageReward scores alignment to this prompt, so feed it the exact prompt.model- STRING, defaultImageReward-v1.0. This is the HF model name the node loads on first use - that's a download the first time you run it, so don't panic when it stalls.
Four outputs:
SCORE_FLOATandSCORE_STRING- the raw ImageReward score (can be negative), in both types.VALUE_FLOATandVALUE_STRING- the raw score mapped through a normal-CDF-ish curve into a 0-to-10 scale, which is the number you'll actually want to compare.
The implementation scores each image in the batch against the prompt, averages the results, and converts via 0.5 * (1 + erf(score / sqrt(2))) * 10. Under the hood it needs the image-reward Python package (plus pytorch-lightning and clip - the pack's old requirements file lists them). That's a real dependency, not a decorative one: without it the node won't import.
Installing it
Standard pack install, plus a dependency note:
- ComfyUI Manager β Install Custom Nodes β search "Endless" / "Endless-Nodes", or
git clone https://github.com/tusharbhutt/Endless-Nodesintocustom_nodes, then restart.
For this node specifically, make sure image-reward is installed in your ComfyUI Python environment (pip install image-reward). The old pack bundled that in its requirements; the current pack doesn't ship this node at all.
The honest caveat
This is a legacy ESS class from the pre-June-2025 pack - the current repo dropped the whole scoring module, so a fresh install won't expose it. The pack's surviving scoring nodes are different (novelty and complexity scores via its image_analysis module). If you're here from an old workflow, expect a missing-node error and consider grabbing ImageReward another way.
Two real-world gotchas: first-run model download (the ImageReward-v1.0 weights come from Hugging Face and take a while), and the score's opinion. ImageReward was trained on human preferences from 2023 - it's decent at "does this match the prompt," mediocre at "is this actually good." Use it to rank candidates, not as a final verdict, and you'll be happy with it.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | STRING | ImageReward-v1.0 | β |
| prompt | STRING | β | |
| images | IMAGE | β |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| SCORE_FLOAT | FLOAT | β |
| SCORE_STRING | STRING | β |
| VALUE_FLOAT | FLOAT | β |
| VALUE_STRING | STRING | β |