Nodes/ComfyUI-Info-Prompt-Toolkit/PixAI Tagger (Deprecated)
ComfyUI Node

PixAI Tagger (Deprecated)

Local Anime Tagging Without the ONNX Runtime Hassle (But It's Deprecated)

By kinorax·Created 5 months ago·Updated about a month ago· 2
PixAI Tagger (Deprecated)
  • image
  • general
  • character
  • ip
  • result_json
modethreshold
threshold_general0.30
threshold_character0.85
topk_general25
topk_character10
deviceauto

Anime taggers are the shortcut for turning an image into a prompt or a training caption: run the picture through a vision model, get back comma-separated Danbooru tags. The usual suspects (WD14 family) lean on ONNX runtime, which is exactly the dependency that fights with your ComfyUI Python environment on every update. IPT-PixAITagger - the pack's PixAI Tagger node - sidesteps that by running the PixAI Tagger v0.9 model on a pure PyTorch implementation, no onnxruntime required. It estimates tags from an image and outputs general / character / ip categories plus a raw JSON result.

The important asterisk, right up front: this specific node is deprecated. The author kept it around for existing workflows, and the current recommended PixAI Tagger in the pack is a separate node. If you're starting fresh, look for the non-deprecated one - but if you've got an old workflow wired to this class, it still runs, and this page is about what it does.

How it works

It loads the PixAI Tagger v0.9 bundle and classifies your image batch. Tag selection is controlled by mode: threshold keeps tags above per-category thresholds in score order, while topk keeps the top-K tags per category. Thresholds default to 0.3 for general and 0.85 for character - note the character bar is much higher, because character tags are usually either clearly present or not. Outputs are general, character, and ip (the IP tag, the artist-style identifier) as strings, plus result_json if you want the full raw output for your own processing. There's a device combo (default auto) for where the runtime executes.

Model files you must download

This is the node that requires manual model placement - the pack's README calls it out. Download the PixAI Tagger v0.9 bundle (model_v0.9.pth, tags_v0.9_13k.json, char_ip_map.json) from pixai-labs/pixai-tagger-v0.9 and put it in:

ComfyUI/models/pixai_tagger/

(or ComfyUI/models/pixai_tagger/v0.9/ - either is scanned). Without the files, the node fails on first run with a missing-bundle error.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/kinorax/comfyui-info-prompt-toolkit.git
cd comfyui-info-prompt-toolkit
pip install -r requirements.txt

Restart, or ComfyUI Manager → "ComfyUI-Info-Prompt-Toolkit". ComfyUI 0.17.0+. The requirements file includes timm - that's for the tagger (and the vendored SAM3), so it should come in with the install.

Common issues

The PyTorch implementation means no ONNX runtime conflicts, but it also means a heavier load at inference than an ONNX-optimized tagger - on CPU this can be slow; device exists for a reason. Thresholds are the thing people tune constantly: at the default 0.3 general threshold you'll see a lot of tags, and if the output feels noisy, raise it. And don't forget the deprecation: if you're wiring a new workflow, the pack's current PixAI Tagger node is the maintained path - this one is frozen for backwards compatibility, not the place to build your future on.

CategoryInfo-Prompt-Toolkit/Prompt

Inputs (7)

NameTypeDefaultDescription
imageIMAGEInput image batch to classify with the local PixAI tagger bundle.
modeCOMBOthresholdthreshold keeps tags above category thresholds in score order. topk keeps the top-K tags per category.
threshold_generalFLOAT0.300–1Threshold for general tags when mode=threshold.
threshold_characterFLOAT0.850–1Threshold for character tags when mode=threshold.
topk_generalINT250–2048Number of general tags kept when mode=topk.
topk_characterINT100–2048Number of character tags kept when mode=topk.
deviceCOMBOautoExecution device for the local PixAI tagger runtime.

Outputs (4)

NameTypeDescription
generalSTRING
characterSTRING
ipSTRING
result_jsonSTRING