Qwen2_5_VL_ImageToTextpose
A pose reference image, translated into degrees and clock-face positions
- image1
- image2
- raw_description
- cleaned_description
ControlNet gives you pose control with an actual skeleton map. This node gives you pose control via prose. It's the "pseudo ControlNet" of the pack: point it at a reference image and it writes a hyper-detailed geometric description of the pose - "left arm at 10:00, right at 3:00, knee bent 90 degrees" - that you then feed to a text-to-image pass as your prompt. No skeleton maps, no ControlNet weights, nothing to download beyond the model itself. Just a vision-language model doing its best impression of an anatomy lecturer.
Where this shines: the standard openpose → ControlNet pipeline needs the matching ControlNet checkpoint for your architecture, and on an Intel-iGPU laptop that's a whole extra stack of pain. This runs on the same Qwen2.5-VL OpenVINO model as the rest of the pack. You trade precision for portability - the output is text, so any text-to-image model downstream can consume it, regardless of whether a ControlNet exists for it.
How it works
The node (blackmeat1225's ComfyUI-Qwen2.5-VL-7B-OPENVINO, one of five in the pack) feeds the reference image to Qwen2.5-VL with a hardcoded prompt demanding exhaustive appearance detail plus a pose spec. The style dropdown isn't a style at all - it's a pose preset that injects a "POSE SPEC" block into the prompt. Choose Standing, sitting, walking, t_pose, running, squatting, or None, and the model is told to describe the pose in exactly that vocabulary: clock-face positions (4:30), degree angles (90-degree bend), every limb's shoulders/elbows/wrists and hips/knees/ankles spelled out individually.
Plug in image2 as well and it becomes a two-image job: image1 supplies the appearance, image2 the pose, and the model fuses them into one paragraph. That's the full "redraw this character in this pose" recipe in a single node.
You get the same two outputs as its sibling Image-to-Text node: raw_description (the model unfiltered) and cleaned_description (sentences about "the second image" stripped, "the subject in the first image" normalized, truncated to max_description_length, default 1002 chars). Use the cleaned one for prompting.
Inputs that matter
- image1 - the subject, in detail (or just the pose, if you skip image2).
- image2 (optional) - the pose reference.
- style - the pose preset whose spec gets injected. "None" means the model improvises the pose description with no template.
- max_new_tokens - output budget, default 2048.
Everything else (model_path, device, max_description_length) is shared with the pack's other nodes: model defaults to the auto-downloaded helenai/Qwen2.5-VL-7B-Instruct-ov-int4, device defaults to CPU, and remember OpenVINO's "GPU" means Intel iGPU.
Install & troubleshooting
Same story as the rest of the pack: ComfyUI Manager (search ComfyUI-Qwen2.5-VL-7B-OPENVINO) or git clone https://github.com/blackmeat1225/ComfyUI-Qwen2.5-VL-7B-OPENVINO into custom_nodes/, then pip install openvino-genai pillow (fresh venv recommended - there's no requirements.txt in the repo, so this manual step is the dependency install). First queue run downloads the multi-GB model into models/openvino/.
Two things to watch. First, a pose description is only as good as the model's reading of the reference - weird lighting, cropped limbs, or busy backgrounds make the angles hallucinate, and you'll see it in the output. Read the text before you sample with it. Second, this node, like the Image-to-Text node, swallows exceptions and returns "❌ 模型推理失败: …" as its output string; if you see that, check the console for the real traceback rather than re-running blindly.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image1 | IMAGE | — | |
| max_new_tokens | INT | 20481–2048 | — |
| max_description_length | INT | 100250–2048 | — |
| model_path | STRING | helenai/Qwen2.5-VL-7B-Instruct-ov-int4 | — |
| device | COMBO | CPU | 2 options: CPU, GPU |
| style | COMBO | None | 7 options: Standing, sitting, walking, t_pose, running, squatting, +1 |
| image2opt | IMAGE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| raw_description | STRING | — |
| cleaned_description | STRING | — |