One Mask, Four Jobs — Remove, Fill From a Prompt, Rebuild a Border, or Fill a Shape
PowerPaint is a versatile inpainting model from the open-mmlab / Shanghai AI Laboratory team (ECCV 2024). Draw one mask and pick what should happen inside it: erase the object and rebuild the background, generate something new from a text prompt, extend the image past its original edge, or generate an object that conforms to the mask's outline. All four run on the same weights — the mode is selected by a learned task prompt, not by swapping models.
CNAPS Studio runs the PowerPaint v2-1 checkpoint. Weights are Apache 2.0; the reference code is MIT.
What it does
Most inpainting models are tuned for one intent. A model trained to fill a region with plausible background is optimised differently from one trained to synthesise a described object — which is why removal tools and generative-fill tools are usually separate products.
PowerPaint's contribution is doing both from one set of weights. The authors trained learnable task prompts — special tokens the model learned alongside the image data, one per inpainting intent — and select behaviour by prepending the right token. Two of these do most of the work: one steers the model toward synthesising an object, the other toward continuing the surrounding context. Object removal is then an elegant trick rather than a separate model: the object token is used as a negative prompt under classifier-free guidance, actively pushing the model away from generating anything in the masked region. Shape-guided fill comes from interpolating between the shape token and the context token, which is what makes the fitting degree a continuous dial rather than an on/off switch.
In CNAPS Studio this surfaces as a single dropdown — What to do with the masked region — and everything else stays the same between modes.
Problem it solves
- Four editing jobs, one node — Removal, generative fill, outpainting and shape-guided insertion share a mask, a node and a set of parameters. No re-wiring the flow to switch intent
- Removal that actually removes — Using the object prompt as a negative is materially different from filling a mask with a generic background model; it suppresses the model's tendency to hallucinate a replacement object into the hole
- Outpainting without a separate tool — Extend a frame past its border for a different aspect ratio or a wider composition, using the same mask mechanic
- Shape control when you want it, and not when you don't — A high fitting degree makes the generated object conform to the mask outline; a low one lets it take its natural shape inside the masked area
- Everything outside the mask stays untouched — An explicit option keeps unmasked pixels bit-identical to the input, so the node is safe on assets where only one region may legally or editorially change
- Light enough for batch — A Stable Diffusion 1.5-class model, not a 20B-parameter editor. Reasonable to run across hundreds of images
Input/Output
- Input:three ports. In CNAPS Studio a filled connection point means required, a hollow one means optional.
- Image — the source image (required)
- Mask — the region to operate on (required)
- Text prompt — what to generate inside the mask (optional)
The prompt is optional because two of the four modes don't use one: remove and rebuild a border work from context alone. For fill from a prompt and fill a shape, a prompt is what drives the result — leaving it empty in those modes will not fail, but it will give you context-fill behaviour instead of what you asked for. Port identity (which of the two image-type ports is the image and which is the mask) is inferred from port order and should be confirmed against the node before it's relied on in a written tutorial.
- Output: a single edited image
- Masked region regenerated according to the selected mode
- With the pixel-identical option on, everything outside the mask matches the input exactly
- No mask, confidence map or intermediate is returned
- Parameters
- What to do with the masked region (dropdown) — selects the task prompt. Four modes:
The dropdown's exact label strings weren't captured beyond
text-guided; the four behaviours are from the node description and the upstream model. - Diffusion steps (slider,
10–50, default45) - Random seed (
-1= random) — fix it to reproduce a result - How strongly the prompt steers the fill (
1–20, default7.5) — guidance scale. For removal the upstream authors recommend 10 or higher, and raising it further if unwanted objects keep appearing in the masked area. - Fitting degree (0–1, default 1) —
shape-guidedonly: how tightly the generated object is held to the mask's silhouette. Leave it at 1.0 when the mask traces a real object shape — the output follows the outline closely. Lower it to 0.3–0.7 when the mask is a rough blob and you want the model to treat it as a loose hint and pick a more natural form. Has no effect on the other three tasks. - How tightly the fill follows the surrounding pixels (
0–2, default1) — how strongly the surrounding image conditions the generated region. Lower gives the model more freedom; higher binds it to its surroundings - Negative prompt (text, empty by default) — what to keep out of the filled area
- Keep everything outside the mask pixel-identical to the input (checkbox, on by default) — composites the generated region back over the original rather than returning a fully re-encoded image. Leave it on unless you have a reason not to; a VAE round-trip subtly shifts every pixel in the frame
- Expand the mask outward by this many pixels (default
8) — dilates the mask to avoid a faint outline where the original object's edge used to be. Raise it if you can still see a ghost of what you removed
Mode | What it does | Prompt |
text-guided (shown selected) | Generates the described object inside the mask | Required in practice |
remove | Erases what's there and rebuilds background from context | Not needed |
rebuild a border (outpainting) | Extends the image past its original edge | Not needed |
fill a shape (shape-guided) | Generates an object that conforms to the mask outline | Required in practice |
Under Advanced
Performance
Family | Stable Diffusion 1.5-class latent diffusion. v2 and v2-1 add a BrushNet-style conditioning branch |
Checkpoint | PowerPaint v2-1 — released 22 May 2024, fixing training issues present in v2 |
Parameter count | Not published on the model card. SD-1.5 lineage puts it in the sub-1B UNet class rather than the multi-billion editor class |
Native resolution | Not documented by the provider — SD 1.5-family models are trained at 512 px and degrade at large deviations. Verify on your own asset sizes |
Diffusion steps | 10 – 50 (node), default 45 |
ControlNet | The upstream model is ControlNet-compatible (canny, depth, HED, pose). Not exposed on this node |
End-to-end node timing | Not yet measured — verify before committing to a batch schedule |
How PowerPaint compares
CNAPS Studio has several ways to edit inside a mask. They differ mainly in scope and weight class.
LatentDiffusion (Object Removal) | QWEN-Inpaint | PowerPaint | |
Remove an object | ✅ | ✅ | ✅ |
Generate from a prompt | ❌ | ✅ | ✅ |
Outpaint past the border | ❌ | ❌ | ✅ |
Shape-guided fill | ❌ | ❌ | ✅ with a fitting dial |
Model class | Latent diffusion | Qwen-Image-Edit-2511 | SD 1.5-class + BrushNet branch |
Rough guidance: PowerPaint when you want one node to cover several editing intents, or when you specifically need outpainting or shape control. A larger editor when single-image fidelity matters more than throughput. Scope claims here come from each node's own documentation; the models have not been benchmarked against each other inside CNAPS Studio.
All of these run inside CNAPS Studio — compare them side-by-side.
Model Source
- Hugging Face:
- GitHub: https://github.com/open-mmlab/PowerPaint
- Project page: https://powerpaint.github.io/
- Paper: arXiv 2312.03594
- License (weights): Apache 2.0 · License (code): MIT
Compliance & Provenance
Provider | PowerPaint team — Junhao Zhuang et al., published via open-mmlab (Shanghai AI Laboratory / Tsinghua) |
Provider type | Specialized |
License | Model weights Apache 2.0 (Hugging Face); reference implementation MIT (GitHub). Both permissive, no territorial or revenue restrictions |
EU AI Act risk class | Limited Risk |
Art. 50 transparency | Required — output is AI-modified image content and is marked with a visible AI label and machine-readable provenance. See AI Policy §2. |
Region availability | Available globally |
Training data summary | Described in the paper; the provider has not published a structured summary per Art. 53(d) |
For more on how we classify models and mark outputs, see our AI Policy.