文章详细介绍了通义千问团队最新开源的 Qwen-Image-Edit 模型。该模型基于 20B 的 Qwen-Image 模型进一步训练,成功将 Qwen-Image 的文本渲染能力拓展到图像编辑任务,实现精准文字编辑。其核心特性在于支持语义/外观双重编辑,这得益于将输入图像同时送入 Qwen2.5-VL(获取视觉语义控制)和 VAE Encoder(获得视觉外观控制)。模型能处理保持语义不变的 IP 创作、视角转换、风格迁移等高级编辑,也能进行增删改、修复等局部外观编辑。文章通过丰富的示例图展示了模型在原创 IP 编辑、MBTI 表情包制作、视角转换、虚拟形象生成、物体增删、文字修复、海报编辑等多种场景下的强大效果。此外,文章还提供了模型推理的 Python 代码示例以及基于 DiffSynth-Studio 进行 LoRA 微调的详细步骤和示例数据集,极大地降低了开发者使用和定制模型的门槛。
src="https://api.eyabc.cn/api/picture/scenery/?k=0b3f6a44&u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F8ZLuyaibrZbkoV1W1R8y2qmf9sTIEicby3deA7sxicaIib25a3hM8POebNJKhQ6LJWZTYH4jC4yPGQagSaYQiasosAw%2F0%3Fwx_fmt%3Djpeg">
今天,通义千问团队开源发布了 Qwen-Image-Edit,Qwen-Image的图像编辑版本!
模型链接:
https://www.modelscope.cn/models/Qwen/Qwen-Image-Edit
Qwen-Image-Edit基于20B的Qwen-Image模型进一步训练,成功将Qwen-Image的文本渲染特色能力拓展到编辑任务上,以支持精准的文字编辑。此外,Qwen-Image-Edit将输入图像同时输入到Qwen2.5-VL(获取视觉语义控制)和VAE Encoder(获得视觉外观控制),以同时获得语义/外观双重编辑能力。
主要特性包括:
-
语义/外观 双重编辑: Qwen-Image-Edit不仅支持low-level的视觉外观编辑(例如增删改等,需要保持图片部分区域完全不变),也支持high-level的视觉语义编辑(例如IP制作,物体旋转,风格迁移等,整体像素值可以变化,但需要保持语义不变)
-
精准文字编辑: Qwen-Image-Edit支持中英双语文字编辑,可以在保留文字大小/字体/风格的前提下,直接编辑图片中文字,进行增删改。
-
强大的跨基准性能表现: 在多个公开基准测试中的评估表明,Qwen-Image-Edit 在编辑任务中均获得SOTA,是一个强大的图像生成基础模型。
01
示例效果
Qwen-Image-Edit的突出能力之一是能够语义/外观双重编辑。其中,语义编辑指的是,要保持原有图像的视觉语义不变的情况下,进行图像编辑,比如从Qwen的吉祥物——卡皮巴拉开始:
Qwen-Image-Edit的突出能力之一是能够语义/外观双重编辑。其中,语义编辑指的是,要保持原有图像的视觉语义不变的情况下,进行图像编辑,比如从Qwen的吉祥物——卡皮巴拉开始:

Image Editing in IP Creation(原创IP编辑)
可以看到,虽然编辑后的图像每个像素值和输入图像(最左边的图)都不一样,但是依然保持了卡皮巴拉角色的一致性。Qwen-Image的这种语义编辑能力使其能够轻松的进行原创IP编辑。再比如,通过一系列prompt进行了拓展,完成了MBTI整个表情包的制作:

Image Editing in IP Creation
(原创IP编辑之MBTI)
此外,视角转换也是语义编辑的重要场景。在下面两页图中,可以看到Qwen-Image-Edit不仅可以简单旋转物体(90度),甚至可以旋转180度,直接看到物体的背面:


Image Editing in Novel View Synthesis
(视角转换)
语义编辑的另一个例子是风格迁移。比如输入一张人物头像,Qwen-Image-Edit能够轻松的转换为吉卜力等多种风格,这在制作虚拟形象,人物ID上面非常有用:

Image Editing in Avatar Creator(虚拟形象生成)
除了语义编辑之外,外观编辑是另一类编辑需求。外观编辑指的是在编辑过程中要保持部分区域完全不变。比如一个常见的外观编辑是增删改。下面展示了在图片中增加指示牌。可以看到,Qwen-Image-Edit不仅仅增加了指示牌,而且增加了对应的倒影。

Image Editing in Object Add(AI新增)
下面也是一个有趣的例子,展示了在图片中删除头发丝。
Image Editing in Object Removal(AI消除)
-
下面展示了如何去修改图像中字幕的颜色。把n的颜色修改为蓝色。

Image Editing in Replace(AI重绘)
-
外观编辑在人物姿势修改、背景修改、服装修改中也有很重要的应用,下面三张图分别展示了这些场景

Image Editing in Portrait Modification
(人像P图)

Image Editing in Background Swap(虚拟场景)

Image Editing in Virtual Try-On(穿搭模拟)
Qwen-Image-Edit的第二个特色在于,能够进行准确的文字编辑,这得益于Qwen-Image本身在文字渲染上的强大能力。比如,下面两个例子展示了Qwen-Image-Edit在英文文字编辑上的能力:


Image Editing in Text Editing(文字设计)
Qwen-Image-Edit也可以直接对中文海报进行编辑,不仅可以更改海报中的大字,小字也可以编辑。

Image Editing in Poster Editing(海报编辑)
最后,来看一个具体的图像编辑例子,展示如何通过链式编辑来修改Qwen-Image生成错误的一幅书法作品:

这幅图中有不少字是生成错误的,可以通过Qwen-Image-Edit来逐步修复它。比如,可以直接在原图中增加方框,要求Qwen-Image-Edit来改对这些部分。这里,希望红框位置能够写对“稽”,蓝色部分能写对“亭”。

Image Editing in Repairing T2I Text
(定点文字修复)
不过事与愿违。“稽”字比较生僻,模型无法直接完成修改,“稽”右下角应该是“旨”,而不是“日”。可以进一步用红色框框住“日”,让Qwen-Image-Edit微调具体的部分,改成“旨”

Image Editing in Repairing T2I Text
(定点文字修复)
神奇吧?按照这种思路,可以逐步地进行错字修改,直到完成最终版本




Image Editing in Repairing T2I Text
(定点文字修复)

最终,我们获得了完全正确的,兰亭集序的书法版本!还顺手装裱了一把( •̀ ω •́ )✧
02
模型推理
环境依赖
环境依赖
pip install git+https://github.com/huggingface/diffusers
推理代码,说明如何使用模型根据文本提示和参考图片生成图像
import osfrom PIL import Imageimport torchfrom diffusers import QwenImageEditPipelinepipeline = QwenImageEditPipeline.from_pretrained("Qwen/Qwen-Image-Edit")print("pipeline loaded")pipeline.to(torch.bfloat16)pipeline.to("cuda")pipeline.set_progress_bar_config(disable=None)image = Image.open("./input.png").convert("RGB")prompt = "Change the rabbit's color to purple, with a flash light background."inputs = {"image": image,"prompt": prompt,"generator": torch.manual_seed(0),"true_cfg_scale": 4.0,"negative_prompt": " ","num_inference_steps": 50,}with torch.inference_mode():output = pipeline(**inputs)output_image = output.images[0]output_image.save("output_image_edit.png")print("image saved at", os.path.abspath("output_image_edit.png"))
03
模型微调
推荐使用DiffSynth-Studio进行微调
环境依赖:
git clone https://github.com/modelscope/DiffSynth-Studio.gitcd DiffSynth-Studiopip install -e .
示例数据集下载:
modelscope download --dataset DiffSynth-Studio/example_image_dataset --local_dir ./data/example_image_dataset
想要微调图像编辑模型,需要准备编辑图像对和输入prompt,示例数据集metadata_edit.csv如下:
image,prompt,edit_imageedit/image2.jpg,"将裙子改为粉色",edit/image1.jpg
待编辑图像 ---- 目标图像
LoRA模型微调脚本:
accelerate launch examples/qwen_image/model_training/train.py \--dataset_base_path data/example_image_dataset \--dataset_metadata_path data/example_image_dataset/metadata_edit.csv \--data_file_keys "image,edit_image" \--extra_inputs "edit_image" \--max_pixels 1048576 \--dataset_repeat 50 \--model_id_with_origin_paths "Qwen/Qwen-Image-Edit:transformer/diffusion_pytorch_model*.safetensors,Qwen/Qwen-Image:text_encoder/model*.safetensors,Qwen/Qwen-Image:vae/diffusion_pytorch_model.safetensors" \--learning_rate 1e-4 \--num_epochs 5 \--remove_prefix_in_ckpt "pipe.dit." \--output_path "./models/train/Qwen-Image-Edit_lora" \--lora_base_model "dit" \--lora_target_modules "to_q,to_k,to_v,add_q_proj,add_k_proj,add_v_proj,to_out.0,to_add_out,img_mlp.net.2,img_mod.1,txt_mlp.net.2,txt_mod.1" \--lora_rank 32 \--use_gradient_checkpointing \--dataset_num_workers 8 \--find_unused_parameters
点击阅读原文,即可跳转链接~
