Nodes/ComfyUI-RH-Bernini-Full/Bernini Full Image to Image
ComfyUI Node

Bernini Full Image to Image

Prompt-editing images with Bernini's full model, not just the renderer

By RH-RunningHub·Created 3 months ago·Updated 3 months ago· 7
Bernini Full Image to Image
  • image
  • image
promptTurn the source image into a polished flat illustration.
negative_promptlow quality, blurry, distorted, text, watermark
width512
height512
steps4
seed2345
quality_presetstandard
accelerationwan2.2_lightx2v_4step
memory_modekeep_loaded_batch

RHBerniniFullImageToImage is the "Bernini Full" pack's image-editing node: you feed it one image, give it an instruction, and get a new image back. It uses the full Bernini-Diffusers pipeline - semantic planner plus the 14B renderer - so you're not just running another image-edit diffusion model; you're running the same stack the video nodes use, warmed up for a cheaper, one-shot task.

The case for reaching for this instead of a dedicated image-editing model is honestly narrow, and it's worth saying that. For a single image edit, something like Qwen-Image-Edit is faster, lighter, and purpose-built. Where this earns its keep is workflow consistency: it's the only member of this pack that outputs an IMAGE, so it's your natural first test that the model loads, that the LoRAs resolve, and that your VRAM survives before you commit to a video job that costs ten times as long. The pack's own README makes this the recommended environment check, and it's good advice - the video nodes share the same cached pipeline, so a clean t2i/i2i run means your whole install is right.

How it works

The mechanism is the standard Bernini one. Your source image is VAE-encoded, the MLLM planner reads your instruction and plans the edit semantically, T5 + the vision encoder build conditioning, and the 14B transformer denoises over the latents. One detail this node gets for free: VAE tiling and slicing are on internally, so a 2048px edit doesn't have to be a VRAM catastrophe the way raw Bernini can be. The image-to-image tuning is baked in (higher image guidance, a tighter omega_scale than pure text-to-image), so it leans on preserving your source rather than reinventing it.

The inputs that matter

The full list is: image, prompt, negative_prompt, width, height, steps, seed, quality_preset, acceleration, memory_mode. You'll actually touch a handful:

  • image - an IMAGE socket, straight from LoadImage or any image output. One image per run; this node doesn't take references the way the R2V node does.
  • prompt - write it as an edit instruction, not a caption: "turn the source image into a polished flat illustration" is the default and it's the right shape. Bernini's whole thing is instruction-following without a mask.
  • steps - 4 is the fast setting with LightX2V LoRAs present; 25–50 with acceleration off. If your output looks undercooked, this is the first knob.
  • width / height - 64–2048, step 16. These set the output size; the source image gets resized into it.
  • negative_prompt - the default ("low quality, blurry, distorted, text, watermark") is fine to keep.

Output is a single IMAGE socket → SaveImage. That's the whole graph: LoadImage → node → SaveImage.

Installing (same for the whole pack)

cd ComfyUI/custom_nodes
git clone https://github.com/RH-RunningHub/ComfyUI-RH-Bernini-Full.git
cd ComfyUI-RH-Bernini-Full
pip install -r requirements.txt
pip install --no-deps git+https://github.com/ByteDance-Seed/[email protected]

Then the model, which must land at ComfyUI/models/diffusers/Bernini-Diffusers-qint8:

cd ComfyUI/models
modelscope download --model Gluttony10/Bernini-Diffusers-qint8 --local_dir diffusers/Bernini-Diffusers-qint8

ComfyUI Manager can install the pack for you (search "ComfyUI-RH-Bernini-Full"), but the model download is always manual. Don't skip the --no-deps on VeOmni - its deps can overwrite your torch and break ComfyUI.

Troubleshooting worth knowing

  • First run is slow and that's normal. The qint8 model cold-loads the planner, T5, vision encoder, and transformer. keep_loaded_batch (the default memory mode) caches the pipeline so your second i2i or t2i run reuses it - that's the mode you want for iterating. low_vram_unload frees memory after each run instead, for tight-VRAM machines.
  • Model-not-found errors are almost always a path problem. The node looks for the exact Bernini-Diffusers-qint8 directory, validates model_type: "bernini", requires all five subfolders, and rejects anything containing Bernini-R. If you downloaded Bernini-R instead of Bernini-Diffusers, it will refuse to load - by design. This pack only runs the full model.
  • Mushy 4-step output = the LightX2V LoRA pair isn't in ComfyUI/models/loras, and acceleration silently fell back to none. Grab Wan2.2-T2V-A14B-4steps-lora-rank64-Seko-V2.0 (high + low noise .safetensors) or set acceleration to none and raise steps.

One light caveat to set expectations: this is a video-first model wearing an image hat. It edits well, but it loads a video-scale stack to do it. If you only ever edit stills, a leaner model is the right tool. If you're heading into Bernini video anyway, run this first and confirm everything.

CategoryRunningHub/Bernini

Inputs (10)

NameTypeDefaultDescription
imageIMAGESource image from a ComfyUI image output.
promptSTRINGTurn the source image into a polished flat illustration.Text prompt or edit instruction.
negative_promptSTRINGlow quality, blurry, distorted, text, watermarkNegative prompt.
widthINT51264–2048Output width in pixels. Larger values increase VRAM use and runtime.
heightINT51264–2048Output height in pixels. Larger values increase VRAM use and runtime.
stepsINT41–100Diffusion steps.
seedINT23450–4294967295Random seed. Values are clamped to NumPy's valid 0 to 2**32-1 range before inference.
quality_presetCOMBOstandardstandard balances speed and quality; quality spends more planning time for better output.
accelerationCOMBOwan2.2_lightx2v_4stepAuto-load the Wan2.2 T2V LightX2V 4-step LoRA pair from ComfyUI/models/loras when available.
memory_modeCOMBOkeep_loaded_batchkeep_loaded_batch keeps the Bernini pipeline cached for faster consecutive jobs; low_vram_unload frees memory after each run.

Outputs (1)

NameTypeDescription
imageIMAGE