Nodes/ComfyUI-PiD/PiD Caption Creator
ComfyUI Node

PiD Caption Creator

Local Qwen captions so PiD knows what it's looking at

By Merserk·Created 3 months ago·Updated 2 months ago· 122
PiD Caption Creator
  • image
  • text
  • caption
auto_downloadtrue
preview

PiD's decoders are conditioned on text, and a good caption genuinely changes the output - the decoder uses it to decide what detail to regenerate. But when you're upscaling an existing image, who writes the caption? You could type it, or you could let PiD Caption Creator do it locally with a small Qwen model. That's the node: IMAGE in, text/caption out, no API, no key, nothing leaves your machine.

The name is a lie in the best way - it's not a creator in the "make a caption" sense, it's a local captioner, and it's the recommended front end for the PiD Upscale workflow in the README.

How it works

It downloads Qwen/Qwen3.5-0.8B into ComfyUI/models/text_encoders/nvidia_pid/qwen35_caption/ on first run (that's the auto_download toggle), then prompts the model to produce a single ~100-word, ultra-precise descriptive sentence of the visible image. The outputs text and caption carry the same string - text for anything that wants a plain string, caption for the PiD inputs that ask for one (PiD Prepare, PiD Decode, PiD Upscale).

Worth setting expectations: 0.8B is a small model. It's fast, runs on modest hardware, and produces clean descriptive captions - but it's a captioner, not a chat model. It won't tell you a photograph was made by a specific artist or unpack cultural context. For the upscale use case that's exactly right.

The inputs

  • image - an IMAGE batch. It captions each image in the batch and joins the results.
  • auto_download - on by default; downloads the Qwen model on first use.
  • preview - a display-only multiline string where the generated caption shows up in the UI. It's not an input you configure; it's the node reporting back.

Outputs: text (STRING) and caption (STRING), same content.

The workflow

Load Image -> PiD Caption Creator -> PiD Upscale -> Save Image

That's the whole tiled-upscale graph from the README. If you're decoding a latent instead, swap PiD Upscale for PiD Prepare -> PiD Sample -> PiD Finalize and feed the caption to PiD Prepare.

Setup and gotchas

Pack install as usual: ComfyUI Manager → "ComfyUI-PiD", or git clone https://github.com/Merserk/ComfyUI-PiD.git into ComfyUI/custom_nodes, pip install -r requirements.txt, restart. The pack's requirements include transformers>=5.0 and accelerate>=1.0, which the captioner leans on - if the node errors on import, your environment predates those.

The real gotcha is the model download: Qwen3.5-0.8B is around 1.5GB and it downloads on the first run through this node, so the first queue feels like it's hung. It isn't. Give it a minute, and subsequent runs use the cached copy. And if you disabled auto_download before the model was present, you'll get a clear "download Qwen... or enable auto_download" error - flip the toggle, re-run, done.

CategoryPiD

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
auto_downloadBOOLEANtrue
previewSTRING

Outputs (2)

NameTypeDescription
textSTRING
captionSTRING