Ovis-U1 Image Edit
Prompt-driven editing with no mask, no inpainting rig, no fuss
- model
- image
- IMAGE
Feed it an image, tell it what to change, get back an edited image - no mask painting, no inpainting node rig, no ControlNet, no prompt-engineering dance. That's the appeal: add a red hat to this cat just works, because the edit happens inside the model's own understanding of the scene rather than through diffusion inpainting math. It's the third leg of the Ovis-U1 one-model-does-everything pitch, and for quick fixes and small changes it's genuinely handy.
But let's set expectations before the hype. The community verdict from people who actually ran the model at launch was consistent: good for basic edits and fixes, unreliable for big structural changes. It keeps changing identities when you push it, and it won't hold fine details through a major rewrite. Treat it as a fast, conversational edit tool - not a replacement for careful masked inpainting when the change actually matters.
How it works
The README is upfront about this: the node implements the model's three-step conditional flow - unconditional, image-only, then the final conditioned pass. Concretely, it runs generate_condition three times:
- Unconditional - a blank image with
"<image>\nGenerate an image."(this isno_both_cond, the "generate anything" baseline). - Image-only - your real image's pixels with that same blank prompt (
no_txt_cond): the "here's the source, no instructions" baseline. - Final - your image plus your actual instruction (the
cond).
Then generate_img combines all three. That's why you get two guidance sliders instead of one: txt_cfg controls how hard the prompt pushes the result, and img_cfg controls how strongly the source image anchors it. Raise img_cfg to keep the edit close to the original; lower it and let the model get more creative. Defaults are txt_cfg 6.0, img_cfg 1.5 - a decent start, and img_cfg is the first thing I'd nudge.
One practical detail: the node smart-resizes your input to multiples of 32 before editing, so the output dimensions can differ from your input by a few pixels. Don't be surprised if a 1000×1000 image comes back 1024×1024.
The inputs that matter
- image - a ComfyUI
IMAGE. Any source works, but the model edits the whole frame, so feed it the final image you want changed. - prompt - multiline, default
add a red hat to this cat. Write instructions like you're telling a (slightly dim) assistant what to change. The node wraps it internally; you just describe the edit. - txt_cfg - default 6.0. Text-guidance strength, same idea as a CFG scale.
- img_cfg - default 1.5. The image-anchoring strength - this is the one that makes the edit stick to the source. This slider is the reason editing gets its own node.
- steps - default 50.
- seed -
-1for random.
Output is IMAGE, so it flows into Save Image, Preview Image, or any downstream node like any other generator.
Installing it
Same pack, same drill:
cd ComfyUI/custom_nodes
git clone https://github.com/neverbiasu/ComfyUI-Ovis-U1.git
cd ComfyUI-Ovis-U1
pip install -r requirements.txt
or search "Ovis-U1" in ComfyUI Manager. Wire Model Loader → Image Edit → Save Image, load an image into the image input, and hit run. First run downloads the ~6 GB model into models/ovis/.
Common issues & honest expectations
- Identity drift on big changes. If you're trying to rewrite a face or change who's in the shot, expect the model to wander. Keep edits small and incremental - several small edits beat one big one.
- Output resolution shifts. The /32 snap means your dimensions may wiggle. If you need the original size back, run a resize after.
- Full-frame editing only. There's no mask input. The model understands the whole image and changes what it thinks you mean. For surgical region-locked edits, masked inpainting is still the right tool.
- Small text and fine detail degrade (the SDXL-era VAE again) - don't ask it to fix or render text.
For the workflow-slot it fills - "load an image, type a change, see what it comes up with" - it's faster to reach for than assembling an inpainting rig, and it's the same single 3B model as the rest of the pack. Just keep the edits modest and it'll keep you honest.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | OVIS_MODEL | — | |
| image | IMAGE | — | |
| prompt | STRING | add a red hat to this cat | — |
| steps | INT | 501–200 | — |
| txt_cfg | FLOAT | 6.00–20 | — |
| img_cfg | FLOAT | 1.50–20 | — |
| seed | INT | -1-1–2147483647 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |