Imgutils Classify
Safety, Style, Rating, Furry
- image
- label
- score
- json
"What kind of image is this?" is a question with eleven answers in this pack, and Imgutils Classify is the node that asks all of them. One image input, one dropdown with eleven different classification models behind it, and one output trio - label, score, and json - telling you what it thinks the image is and how confident it is.
The mode menu
The dropdown is a grab bag of imgutils' validate classifiers, and knowing which are worth your time is half the value:
- Safe Check and NSFW Prediction - content-safety scoring. These are your moderation gates: flag or route images by safety before they go anywhere public.
- Anime Rating / Anime DB Rating - content rating labels. Useful for dataset labeling and gallery sorting.
- Anime Teen - a niche age-rating classification.
- Anime Classify - general classification.
- Anime Real - the interesting router: real photo versus drawn anime. Feeding a mixed folder? This tells you which is which.
- Anime Portrait - framing classification (is this a portrait shot?).
- Anime Furry - furry/anthro classification.
- Anime Bangumi Character - which named character is present (bangumi = the character-identity axis).
- Anime Style Age - style/age classification.
How it works
Each mode is a separate classifier model in imgutils' validate family, mostly trained on danbooru-derived labels. The node runs the selected model, takes the top-scoring class, and returns it three ways: label (STRING - the top class name), score (FLOAT - its confidence), and json (STRING - the full distribution of all classes with scores). The json is the part that makes this powerful: it's not just "what," it's "how sure, and what else."
Honest take
Let's be straight: a few of these earn their keep, and a few are hyperspecific enough that you'll touch them once for a joke. The ones with real jobs: Safe Check / NSFW Prediction for content gating, Anime Real for routing real-vs-drawn, Anime Rating for content labels. The rest are for pipelines with very particular questions. Whatever you pick, remember score is the confidence of the top label - a low score means "probably that class, but not sure," and the json is where you go when you want the nuance. Feed that json to Imgutils JSON Filter to threshold the distribution, or the label into Label Contains to branch on what came back.
One real cost to know: each mode downloads its own model on first use. Flip through the menu once and you'll trigger several downloads and a lot of waiting; pick your modes and stick with them.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/xiaden/comfyui-imgutils.git
cd comfyui-imgutils
pip install -r requirements.txt
Or via ComfyUI Manager (search "imgutils"). Needs ComfyUI >= 0.25.0 and Python >= 3.10; dependency is dghs-imgutils[gpu].
Troubleshooting
If a mode returns a low-score label you don't trust, that's the model being honest - check the json distribution before acting. If the first run of a new mode stalls, it's the per-mode model download, not a freeze. And if you're gating on this, remember label is a string: convert it to a boolean with Label Contains or route on the score with Score Threshold rather than trying to wire a string into a switch.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Input image to classify. | |
| mode | COMBO | Safe Check | What to classify — safety, NSFW, content rating, style, age, or character detection. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| label | STRING | — |
| score | FLOAT | — |
| json | STRING | — |