Qwen-Image-Edit:全能图像编辑,驱动内容创作提质增效
今天,通义千问团队开源发布了 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的吉祥物——卡皮巴拉开始:
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 os
from PIL import Image
import torch
from diffusers import QwenImageEditPipeline
pipeline = 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.git
cd DiffSynth-Studio
pip install -e .
示例数据集下载:
modelscope download --dataset DiffSynth-Studio/example_image_dataset --local_dir ./data/example_image_dataset
想要微调图像编辑模型,需要准备编辑图像对和输入prompt,示例数据集metadata_edit.csv如下:
image,prompt,edit_image
edit/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
点击链接,即可跳转链接~
更多推荐
所有评论(0)