What is actually available?
Qwen-Image-Edit-2511 is an open-weight image-to-image model. The official model card lists a 20B-parameter BF16 checkpoint under the Apache-2.0 license. It highlights reduced image drift, stronger single- and multi-person consistency, integrated community LoRAs, industrial-design workflows, and geometric reasoning.
This is a different product from the hosted Qwen-Image 3.0 release. Use the exact model ID and model card instead of treating every “Qwen Image” version as interchangeable.
Hardware planning without an invented minimum
The official model card identifies the model size and BF16 tensor type but does not publish one universal minimum VRAM figure. Memory use depends on the pipeline version, number and size of input images, output resolution, precision, attention implementation, and whether components are offloaded or quantized.
- Start on a CUDA machine intended for large diffusion pipelines.
- Use the official BF16 example as the baseline.
- Measure peak memory before promising a consumer-GPU requirement.
- Treat third-party quantizations as separate artifacts with their own quality and compatibility tradeoffs.
Install the current Diffusers implementation
The full model card currently asks for the latest Diffusers source. Use a clean virtual environment so the install does not disturb another project.
python -m venv .venv
# PowerShell
.venv\Scripts\Activate.ps1
# macOS or Linux
source .venv/bin/activate
pip install git+https://github.com/huggingface/diffusers
pip install -U transformers accelerate pillow
Single-image editing example
The following keeps the official specialized pipeline and parameter structure, while reducing the example to one local input image.
import os
import torch
from PIL import Image
from diffusers import QwenImageEditPlusPipeline
pipeline = QwenImageEditPlusPipeline.from_pretrained(
"Qwen/Qwen-Image-Edit-2511",
torch_dtype=torch.bfloat16,
)
pipeline.to("cuda")
pipeline.set_progress_bar_config(disable=None)
source = Image.open("input.png").convert("RGB")
prompt = (
"Replace the background with a quiet library. "
"Preserve the subject's identity, pose, clothing, and lighting direction."
)
with torch.inference_mode():
result = pipeline(
image=[source],
prompt=prompt,
generator=torch.manual_seed(0),
true_cfg_scale=4.0,
negative_prompt=" ",
num_inference_steps=40,
guidance_scale=1.0,
num_images_per_prompt=1,
).images[0]
result.save("qwen_edit_2511.png")
print("Saved", os.path.abspath("qwen_edit_2511.png"))
Multi-image editing
The official example accepts multiple PIL images in the image list. That supports tasks such as combining subjects or borrowing visual attributes from more than one reference. Begin with two inputs, keep the instruction explicit about which image supplies each element, and inspect identity drift before increasing complexity.
image_a = Image.open("person.png").convert("RGB")
image_b = Image.open("material.png").convert("RGB")
result = pipeline(
image=[image_a, image_b],
prompt="Keep the person from image one; apply the material from image two to the jacket.",
generator=torch.manual_seed(0),
true_cfg_scale=4.0,
negative_prompt=" ",
num_inference_steps=40,
guidance_scale=1.0,
).images[0]
When to use this route
- Choose Qwen-Image-Edit-2511 when you need local weights, an Apache-2.0 license, and image-editing workflows.
- Choose Nano Banana 2 when a hosted API and minimal local infrastructure matter more than offline control.
- Do not choose HunyuanImage 3.0 merely because it is open-weight; its official multi-GPU requirement is in a very different class. Compare it in the Hunyuan hardware guide.