Janus Pro Describe Image ๐
Ask a question, get a caption
- model
- image
- text
This is the node that actually looks at your image and writes something about it. Feed it a loaded Janus model and an image, and it hands back a text description. What makes it different from most captioners is that it's question-driven - you don't pick a mode from a dropdown, you ask it something in plain English, and it answers.
Why you'd reach for it
Janus Pro is DeepSeek's multimodal model, and its image-understanding side is the genuinely good part (its image generation side is a curiosity nobody uses seriously). Because you prompt it with a question, it's more flexible than a fixed-task captioner: the default is "Describe this image in detail," but you can just as easily ask "What is the woman wearing?" or "Describe the lighting and color palette." People have found the descriptions clean enough to feed straight into other tools as prompts - one common trick is using Janus's read of a still frame to write a video prompt. For LoRA dataset prep, natural-language captions like these are exactly what the modern LLM-encoder bases (Flux, Qwen-Image, Z-Image) want to train on - prose, not comma-tags.
The inputs that matter
You'll wire two things and touch maybe two more:
model- fromJanus Pro Model Loader. Required, no substitutes.image- the picture to describe.question(multiline, default "Describe this image in detail.") - this is your steering wheel. Ask for what you want. Want tags-ish output? Ask for a comma-separated list. Want it to ignore the background? Say so.temperature(0.1) andtop_p(0.95) - sampling randomness. The low default temperature is deliberate: for captioning you want boring, faithful, repeatable output, not creative flourishes. Leave temperature low unless descriptions feel robotically identical across a set, then nudge it up a touch.
max_new_tokens (512) caps how long the answer runs; bump it if descriptions get cut off mid-sentence. keep_model_loaded (on) leaves Janus in memory between runs so the next image is fast - turn it off only if you're tight on VRAM and want it freed after each run. seed fixes reproducibility.
The single output is text (a STRING).
You need somewhere to see the text
Here's the beginner trap the author calls out directly: ComfyUI has no native node that displays text, so if you just run this node, the caption goes nowhere you can see it. Wire the text output into a ShowText / DisplayText node. The author recommends their own MieNodes pack for this (it's dependency-free and has the file-op nodes that pair well with captioning), but any show-text node from packs like rgthree or the pythongosssss tools works fine.
How to install it
The node lives in ComfyUI-CaptionThis:
- ComfyUI Manager (recommended): search CaptionThis, Install, restart.
- Manual:
cd ComfyUI/custom_nodes && git clone https://github.com/MieMieeeee/ComfyUI-CaptionThis, then restart.
The Janus weights download from HuggingFace on first use (or set HF_ENDPOINT=https://hf-mirror.com for the mirror). See the Janus Pro Model Loader page for the model details.
Common issues & troubleshooting
The description is generic or misses the subject. Rewrite the question to be specific. Janus answers what you ask - a vague question gets a vague answer. This is the lever, use it.
It repeats the same phrasing on every image. Temperature is doing its job (staying faithful). If you actually want variety, raise temperature a little; for dataset captions, though, consistency is usually the feature, not the bug.
Captions cut off. Raise max_new_tokens.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MIE_JANUS_MODEL | โ | |
| image | IMAGE | โ | |
| question | STRING | Describe this image in detail. | โ |
| seed | INT | 420โ18446744073709550000 | โ |
| temperature | FLOAT | 0.100โ1 | โ |
| top_p | FLOAT | 0.950โ1 | โ |
| max_new_tokens | INT | 5121โ2048 | โ |
| keep_model_loaded | BOOLEAN | true | โ |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | โ |