BLIP Analyze Image
Caption or interrogate an image in ComfyUI
- images
- blip_model
- FULL_CAPTIONS
- CAPTIONS
BLIP Analyze Image looks at a picture and tells you what's in it - as text. Point it at an image and it either writes a caption ("a woman standing in a field at sunset") or answers a question you ask about the image ("what color is the car?"). It's an image-to-text node, and it's one of the more genuinely useful things in WAS Node Suite because it closes the loop: turn an image back into a prompt.
The common workflow is exactly that. You have a reference image and want to generate variations, so you run it through BLIP to get a caption, then feed that caption into your text encoder as a starting prompt. It's a quick, automated way to "describe this so I can remix it," and it beats staring at the image trying to write the prompt yourself.
How it works
BLIP (Bootstrapping Language-Image Pre-training) is a vision-language model. It was trained to connect images and text, so it can both generate a description of an image (captioning) and answer natural-language questions about it (visual question answering / "interrogation"). This node wraps BLIP and exposes both modes.
Good news on setup: the WAS README notes that as of the October 2023 update, BLIP is a shipped module of WAS-NS and no longer requires a separate BLIP repo. The model itself still downloads - automatically, from a default URL, into ComfyUI/models/blip/checkpoints/ - so the first run pulls a few hundred MB and takes a moment. After that it's cached.
The inputs and outputs that matter
You feed it an image and pick the mode - caption (describe the image) or interrogate (answer a question). In interrogate mode you also supply the question as text. The output is a string: the caption or the answer. Wire that string into a text-to-conditioning / CLIP encode node to turn it into a prompt, or into Save Text File to log it.
In practice you'll pair it with the BLIP Model Loader node, which loads the model and hands it to Analyze - that's the intended two-node setup.
How to install it
Part of WAS Node Suite. Install once via ComfyUI Manager (search WAS Node Suite, install, restart) or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui
pip install -r was-node-suite-comfyui/requirements.txt
then restart. On Windows portable, run the pip step with python_embeded\python.exe -s -m pip install -r ... (or install.bat). Note this node is heavier than most of the suite: it downloads a model on first use and leans on the transformers stack, so give the first run time and watch the console for the download.
Common issues & troubleshooting
First run stalls or errors on the model download. BLIP auto-downloads to ComfyUI/models/blip/checkpoints/ from a default URL. If your machine can't reach it, or the download half-completes, the node fails. Check the console; if needed, grab the model manually and drop it in that folder. You can also repoint the download in was_suite_config.json.
"Import Failed" after updating ComfyUI - and BLIP is why. This is the WAS install issue in its most common form, and the pack's own author has explained the mechanism: WAS pins/downgrades some packages to keep older-but-still-used models like BLIP working, and a ComfyUI update re-upgrades them, breaking the import. The fix is to reinstall the suite's requirements against your actual ComfyUI Python (activate the venv first, or use install.bat); opencv/transformers version clashes are the usual specifics, and it gets worse if you also run ReActor/insightface.
Captions are generic or wrong. BLIP is an older, smallish captioner - fine for a rough description, not for nuance. If you need detailed, accurate captions, modern taggers/VLMs (WD14, Florence-2, and friends) generally do better. Reach for BLIP when "good enough and already installed" beats "best."
The whole suite won't load. Same root cause as above - WAS Node Suite is large and unmaintained since late 2023. Reinstall requirements against ComfyUI's Python and restart.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | The images to describe. Every image in the batch gets its own caption or answer. | |
| mode | COMBO | `caption` writes a description of the image and ignores the question widget. `interrogate` answers the question instead, so 'What colour is the car?' gives back a colour. | |
| question | STRING | What does the background consist of? | The question to answer in `interrogate` mode. Plain language works best and short answers are the norm: 'How many people are there?' answers with a number. Ignored in `caption` mode. |
| blip_model | BLIP_MODEL | Both models from BLIP Model Loader. | |
| min_lengthopt | INT | 241–1024 | Shortest answer the model may stop at, in tokens, which are roughly words. Raise it to force a wordier caption; a question answer is usually padded out rather than improved by it. |
| max_lengthopt | INT | 642–1024 | Longest answer the model may produce, in tokens. The answer is cut off here, so raise it if captions end mid-sentence. |
| num_beamsopt | INT | 51–12 | How many candidate wordings are explored before the best is picked. 1 is fastest and takes the first thing that comes; 5 is the usual trade; 12 is slower and a little more considered. |
| no_repeat_ngram_sizeopt | INT | 31–12 | Blocks any run of this many words from appearing twice, which stops 'a man on a man on a man'. 3 is a good default; 1 forbids repeating even single words, including 'the'. |
| early_stoppingopt | BOOLEAN | false | Stop searching as soon as enough finished candidates exist rather than exploring to the end. Faster, and it tends to give shorter answers. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| FULL_CAPTIONS | STRING | Every caption in one string, separated by blank lines, for saving to a text file or feeding a prompt box. |
| CAPTIONS | STRING | One caption per image, as a list, so downstream nodes run once per image. |