Nodes/FiL_Design_ImageMind/👁️‍🗨️ Image Decomposer
ComfyUI Node

👁️‍🗨️ Image Decomposer

Split an image into subject, lighting, composition and style — then change only the lighting

By FiL-Design-Ai·Created 2 months ago·Updated 8 days ago· 8
👁️‍🗨️ Image Decomposer
  • config
  • image
  • subject
  • lighting
  • composition
  • style
  • full_prompt
prompt
languageen

You've got an image you like, except for one thing. The lighting's flat, or the composition's wrong, and you want to re-roll that while keeping everything else. The problem is that a prompt is a lump - change one word and the whole thing drifts. FiL Image Decomposer's answer is to take an image (or a text description) and split it into four clean layers: subject, lighting, composition, and style, plus a full_prompt that recombines them. Wire the layers into separate conditioning branches and you can vary one axis while holding the rest fixed.

It's from the FiL Design ImageMind pack, and it's the analysis half of the pack's loop: Decomposer breaks an image apart, Optic Scanner builds prompts, Cinema Rig and Style Mixer restyle them.

How it works

This is an LLM node, so the mechanism is: one call to a vision-language model, a strict instruction to return JSON with exactly those four components, and a robust parser on the way back (it strips code fences and falls back to regex if the model gets chatty - which happens). No secret sauce, which means the quality ceiling is set entirely by the model you point at it.

The one input you can't skip is config - a provider config from the pack's Provider Loader node, which is what selects the model and provider. Then:

  • image (optional) - feed a picture for visual decomposition.
  • prompt (optional) - feed text instead, and it decomposes the description. Handy for splitting an existing prompt you want to reassemble differently.
  • language - en or ru for the component outputs.

The outputs are five strings: subject, lighting, composition, style, and full_prompt (the seamless high-density recombined version). The layered ones are the point - the pack's suggested workflow is to keep subject, composition and style as they came out and rewrite only lighting before recombining.

The one thing that makes or breaks it

The model choice, and it's the same trade-off the whole LLM-in-ComfyUI world lives with: a big frontier vision model gives the cleanest decomposition; a small local one is free, offline and keyless but writes fuzzier layers. The pack's whole design assumes you might run Ollama or LM Studio locally - no key, no account, just a running server. That's the realistic setup for actually iterating on this, because the moment decomposition output feels wrong, you want to tweak and re-run without paying per call.

Set expectations honestly: the decomposition is a description, not ground truth. A VLM splitting a photo into subject/lighting/composition/style will get the obvious stuff right and occasionally misattribute detail - the classic multi-subject confusion every captioner shares. For "I want the same girl, different lighting," it's exactly the right tool. For surgical pixel-level control, it isn't.

Installing it

Ships in FiL Design ImageMind (MIT). ComfyUI Manager: search FiL_Design_ImageMind, or:

cd ComfyUI/custom_nodes
git clone https://github.com/FiL-Design-Ai/FiL_LLM FiL_Design_ImageMind
pip install -r FiL_Design_ImageMind/requirements.txt

Restart; it appears under 🎨 FiL Design/Analysis. Requires ComfyUI 0.3.60+, Python 3.10+, and the pack's light dependencies - the actual heavy lifting is the provider you choose. If you want the keyless path, install Ollama and pull a vision model (something like a Qwen-VL or Llama-vision class model - the pack's Provider Loader shows what it can actually see).

Gotchas

The most common failure is forgetting the config entirely - the node raises without it, and it's the one thing that isn't optional. Second: with no image and no prompt connected, there's nothing to decompose - connect one or the other. And don't expect the full_prompt to be a drop-in replacement for a carefully hand-tuned prompt; it's a faithful recombination, which is the point, but faithful to the source, not to your taste.

Category🎨 FiL Design/🔍 Analysis

Inputs (4)

NameTypeDefaultDescription
configFIL_PROVIDER_CONFIGProvider Loader config connection.
imageoptIMAGEOptional input image for visual decomposition.
promptoptSTRINGOptional text description.
languageoptCOMBOenLanguage for decomposed component outputs.

Outputs (5)

NameTypeDescription
subjectSTRING
lightingSTRING
compositionSTRING
styleSTRING
full_promptSTRING