Aesthetic Loader
The model loader that makes Aesthetic Select possible (and downloads four classifiers)
- MODELS
Let's get the honest version out first: Aesthetic Loader doesn't judge anything. It's the supply side of the pack's cherry-picking duo. You flip four toggles, it downloads the image-classifier models those toggles map to, and hands them to Aesthetic Select as a MODELS list. Without it, Select has nothing to score with - and with nothing connected to Select, your "pick the best image" workflow silently becomes a plain "pick the Nth image" workflow. That's the whole game here.
What it actually does
Each of the four toggles - aesthetic, style, waifu, age - loads a HuggingFace classification pipeline and bundles it with a hardcoded weight vector that tells Select which classifier labels count as "good":
- aesthetic →
cafeai/cafe_aesthetic, which scores how visually pleasing a frame is - style →
cafeai/cafe_style, with weights spread across five style classes - waifu →
cafeai/cafe_waifu, the anime version of the aesthetic scorer - age →
nateraw/vit-age-classifier, weighted so Select can nudge results toward the age bands you're after
The weight vectors live in the node's source, so you don't tune them from the UI - the author already decided what "good" means for each classifier. Your job is just picking which scorers you trust.
The inputs that matter
Honestly, the only inputs are the four booleans, and they're self-explanatory. One worth knowing: leave them all false and the node returns an empty list, which makes Select fall back to its no-models index-pick mode. So there's no real "off" state - just a state where you've paid for model downloads without using them.
Output is a single MODELS (LIST) socket, wired straight into Aesthetic Select's models input. Nothing else accepts it.
First run downloads real models
This is the gotcha that surprises people. The moment the loader executes, it calls pipeline() for each enabled toggle, which pulls the model weights from HuggingFace if they aren't cached. That's a few hundred MB on a first run and it needs network access. The models themselves are small ViTs that run fine on any GPU - this isn't a Stable Diffusion-size download - but it's not instant either, and it happens every first run until the cache is warm.
Installing the pack
The pack is Zuellni/ComfyUI-Custom-Nodes, now archived but still installable. Easiest path is ComfyUI Manager - search "Zuellni" and install. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Zuellni/ComfyUI-Custom-Nodes
Restart ComfyUI. On first run the extension writes a config.json beside itself and - by default - runs pip install on its requirements.txt. Aesthetic Loader specifically needs transformers (and torchvision, which ComfyUI already ships), so if pip install was skipped, run pip install -r ComfyUI/custom_nodes/Zuellni/requirements.txt yourself.
Troubleshooting
- "ModuleNotFoundError: transformers" - requirements didn't install. Run the pip command above.
- Loader hangs on first run - it's downloading. Watch the console; it prints pipeline progress.
- Select behaves like a plain index picker - you didn't wire
MODELSin. That's the documented fallback, and the most common "why is my pick random?" report. - The pack is archived and unmaintained. It still works because the nodes are thin wrappers over transformers pipelines that haven't rotted, but there's no one fixing bugs. If you're building something you'll rely on, consider that before building your whole pipeline on it.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| aesthetic | COMBO | false | 2 options: false, true |
| style | COMBO | false | 2 options: false, true |
| waifu | COMBO | false | 2 options: false, true |
| age | COMBO | false | 2 options: false, true |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODELS | LIST | — |