Seedream 5.0 Pro · Layer Decomposition
Split a finished frame into usable pieces
- image_url
- images
- alpha
- task id
Ask a matting model for the subject and you get one mask, and you get to keep the flat image you started with. Ask Seedream 5.0 Pro to decompose a frame and you get the frame pulled apart into named pieces - subject, background, props - each as a transparent layer, plus a mask batch. It's the difference between one cutout and a stack you can actually rebuild.
This is the Pro version of that node: sharper edges, and a resolution list that starts at 1.5k rather than auto. 6.3 credits (~$0.063) per image, the most expensive thing per-image in the Seedream family and worth it when the detail is the point.
How it works
One IMAGE in - image_url, singular, because decomposition works on a single picture - and a batch out. The node calls bytedance/seedream-5.0-pro/layer-decomposition on PopNow's servers; the model returns the base image plus separated elements, which the node decodes into an IMAGE batch plus an alpha MASK batch, one mask per layer. Layers are always transparent PNG no matter what you set.
There's a 12-hour content-hash upload cache, so re-running decomposition on the same picture to get different elements costs you no upload time. It does cost credits, because it's a fresh generation.
The inputs
image_url- the finished image to split. Your render, a photo, something off a hosted model.prompt- optional, and worth using. Empty means the model picks the main elements - often fine, sometimes four arbitrary slices. Name what you want ("the woman, the bicycle, the railing") and you get those instead of the model's opinion.resolution-auto(follows the source size),1k,1.5k,2k. Default is1.5k, which is a sensible middle: higher than flash-tier defaults, without quadrupling the pixel count for a job where you'll refine edges anyway.output_format-jpegorpng, and it only affects the base image. Layers ignore it.
Outputs
images - base plus every layer, as a batch. alpha - the transparency of each, 1 = opaque. task id for the API console or support.
Watch the premultiplication. The pack decodes transparent PNGs by multiplying RGB with alpha, which makes a cutout look correct in a preview instead of showing the dead colour under it. Don't multiply again downstream, or your edges go dark.
What it's for
The genuinely useful pattern is chaining: decompose a frame, take the character layer, feed it into an image-to-video node's image_url to animate one element while the background stays put. Or decompose a poster to move its pieces around. Or grab the alpha for a layer and hand it into a local inpainting graph as a starting mask, refined your way with your own models.
That last one is where hosted and local stop competing. Six credits to get a mask you'd otherwise spend twenty minutes painting by hand is a good deal, and the local work still happens locally.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Or the Manager route: search PopNow, Install, restart. Add the key from popnow.ai/api/console/keys in Settings > PopNow, or export POPNOW_API_KEY, then restart once more so the node list is built from your account's catalog. Nothing to pip install - empty dependency list, ComfyUI's own libraries only.
Where it goes wrong
- Only the first image saved - the output is a batch. Send it to a node that writes every item, or you'll see just the base and assume decomposition failed.
- Edge quality on hair and thin structures - the hardest problem in this whole field; nobody has solved it. Pro is better than Flash here, and
2kis better than1.5k, but glass and flyaway hair still show. PopNow 40201- credits gone. Six credits an image, and re-running to get a different split is another run.PopNow 40004- unsupported combination; the message names the field.- Cancelling stops your wait, not the job - it completes server-side, bills if it succeeds, and lands in your API console.
The wider point about this kind of node: for years the community's answer to "I need the subject alone" was a matting model and luck, and the failure modes were hair, fur and transparency. Getting a generative model to hand you the layers it was imagining skips the matte fight entirely - you're not extracting the layers, they were there the whole time.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image_url | IMAGE | The finished image to split into layers. | |
| prompt | STRING | Optional: name the elements to separate. Leave empty to let the model pick the main elements. | |
| resolution | COMBO | 1.5k | Output resolution tier. auto follows the size of the source image. |
| output_format | COMBO | jpeg | File format of the base image. Layers are always transparent PNG. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| alpha | MASK | Transparency of each image: 1 is opaque. |
| task id | STRING | The PopNow task id, for the API console logs or support. |