"""VBVR-Pro-Qwen-Image-Edit inference example. Usage: python example.py --model_path ./VBVR-Pro-Qwen-Image-Edit """ import argparse import torch from PIL import Image from diffusers import QwenImageEditPlusPipeline parser = argparse.ArgumentParser() parser.add_argument("--model_path", type=str, default="VBVR-Pro-Qwen-Image-Edit") parser.add_argument("--image", type=str, required=True, help="Path to input image") parser.add_argument("--prompt", type=str, required=True, help="Editing instruction") parser.add_argument("--output", type=str, default="output.png") parser.add_argument("--steps", type=int, default=40) parser.add_argument("--seed", type=int, default=42) args = parser.parse_args() print(f"Loading model from: {args.model_path}") pipe = QwenImageEditPlusPipeline.from_pretrained( args.model_path, torch_dtype=torch.bfloat16 ) pipe.enable_model_cpu_offload() image = Image.open(args.image).convert("RGB") print(f"Input image: {args.image} ({image.size[0]}x{image.size[1]})") output = pipe( image=[image], prompt=args.prompt, num_inference_steps=args.steps, true_cfg_scale=4.0, negative_prompt=" ", guidance_scale=1.0, generator=torch.manual_seed(args.seed), ).images[0] output.save(args.output) print(f"Saved to: {args.output}")