LoadAesteticModel
The 'loader' that's really just a file picker
- AESTHETIC_MODEL
The name is a lie, and it's a useful lie to understand. LoadAesteticModel doesn't load a model into memory, doesn't make your VRAM jump, and doesn't download anything. All it does is look at a dropdown, take the model file you picked, and pass its file path down the wire as an AESTHETIC_MODEL value. The actual heavy lifting - loading the MLP, loading CLIP, encoding your image - happens later in CalculateAestheticScore. This node is the front end of a two-node pipeline, and pretending otherwise just confuses you about where the slowness comes from.
So think of it as a config node: "which taste should we grade against?" Everything downstream reads that answer from the file path it carries.
What it does
- model_name - a dropdown of every
.pt/.pth/.safetensorsfile sitting inComfyUI/models/aesthetic/. That folder doesn't exist by default, which is why the README tells you to create it. The node registers the folder with ComfyUI's model system itself, so the dropdown populates even before you've made the directory - but if the folder's missing, there's nothing to select.
The single output, AESTHETIC_MODEL, plugs straight into CalculateAestheticScore's aesthetic_model input. That's the only thing it connects to in this pack.
Which model do you actually want?
The README lists two it was tested with:
ava+logos-l14-linearMSE.pthfrom christophschuhmann/improved-aesthetic-predictor - the canonical choice. It's a 768-dim linear+MLP head trained on the AVA dataset with CLIP ViT-L/14 features, which is exactly the architecture this pack's CalculateAestheticScore expects. This is the one to start with.chadscorer.pthfrom grexzen/SD-Chad - an alternative the author says they "tried". Both go inComfyUI/models/aesthetic/.
The README's download links are a bit of a mess - the second one is written as a blob URL, so it won't fetch as-is. Download the file from the repo's page and drop it into models/aesthetic/, or just grab ava+logos-l14-linearMSE.pth from the improved-aesthetic-predictor repo and skip the drama. Both are small; the whole scoring head is a few MB, since the big encoder (CLIP) is loaded separately by the scoring node.
Install
This node ships with the rest of the pack, so installing it means installing all four nodes. ComfyUI Manager: search "Strimmlarns". Or:
cd ComfyUI/custom_nodes
git clone https://github.com/strimmlarn/ComfyUI-Strimmlarns-Aesthetic-Score
pip install -r requirement.txt # note: not requirements.txt - the README's typo
Then restart ComfyUI and create ComfyUI/models/aesthetic/ if it's not there.
Where people get burned
Since the loader doesn't actually load anything, the classic confusion is: you run the workflow, LoadAesteticModel zips through instantly, and CalculateAestheticScore hangs for a few seconds on every run. That's normal - the scoring node re-loads CLIP ViT-L/14 and the MLP from disk each execution. Nothing is wrong with your loader.
The other trap is pairing a model the scoring node can't digest. If CalculateAestheticScore throws a shape or state-dict error right after this node, you're usually feeding it a model saved by a different fork or architecture than the 768-dim MLP it builds. Stick to the two README files and you're on safe ground.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AESTHETIC_MODEL | AESTHETIC_MODEL | — |