| | --- |
| | language: |
| | - en |
| | - zh |
| | library_name: diffusers |
| | license: apache-2.0 |
| | pipeline_tag: image-to-image |
| | tags: |
| | - lora |
| | --- |
| | |
| | # Edit-R1-Qwen-Image-Edit-2509: A model from UniWorld-V2 |
| |
|
| | This model is a checkpoint (`Edit-R1-Qwen-Image-Edit-2509`) developed using the **Edit-R1** framework, as presented in the paper [Uniworld-V2: Reinforce Image Editing with Diffusion Negative-aware Finetuning and MLLM Implicit Feedback](https://huggingface.co/papers/2510.16888). The **Edit-R1** framework focuses on reinforcing instruction-based image editing through Diffusion Negative-aware Finetuning (DiffusionNFT) and MLLM Implicit Feedback. |
| |
|
| | <p align="center"> |
| | <a href="https://huggingface.co/papers/2510.16888"><b>Paper</b></a> | <a href="https://github.com/PKU-YuanGroup/UniWorld-V2"><b>Code</b></a> | <a href="https://github.com/PKU-YuanGroup/Edit-R1"><b>Dataset</b></a> |
| | </p> |
| | |
| |
|
| | # Performance |
| | |Benchmark| Qwen-Image-Edit-2509 | **Edit-R1-Qwen-Image-Edit-2509** | |
| | | ---- | ---- | ----| |
| | | GEdit-Bench | 7.54 | **7.76** | |
| | | ImgEdit | 4.35 | **4.48** | |
| |
|
| | # Usage |
| |
|
| | ```python |
| | import os |
| | import torch |
| | from PIL import Image |
| | from diffusers import QwenImageEditPlusPipeline |
| | |
| | pipeline = QwenImageEditPlusPipeline.from_pretrained("Qwen/Qwen-Image-Edit-2509", torch_dtype=torch.bfloat16) |
| | print("pipeline loaded") |
| | |
| | pipeline.load_lora_weights( |
| | "chestnutlzj/Edit-R1-Qwen-Image-Edit-2509", |
| | adapter_name="lora", |
| | ) |
| | pipeline.set_adapters(["lora"], adapter_weights=[1]) |
| | |
| | pipeline.to('cuda') |
| | pipeline.set_progress_bar_config(disable=None) |
| | image1 = Image.open("input1.png") |
| | image2 = Image.open("input2.png") |
| | prompt = "The magician bear is on the left, the alchemist bear is on the right, facing each other in the central park square." |
| | inputs = { |
| | "image": [image1, image2], |
| | "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, |
| | } |
| | with torch.inference_mode(): |
| | output = pipeline(**inputs) |
| | output_image = output.images[0] |
| | output_image.save("output_image_edit_plus.png") |
| | print("image saved at", os.path.abspath("output_image_edit_plus.png")) |
| | |
| | ``` |