阅读,与值得关注的内容Readance

Qwen-Image-2.1 开源:7B 生图编辑一体,原生支持透明图,最多 10 张参考图!

Qwen 团队开源 Qwen-Image-2.1,将文生图与图像编辑统一在一个模型中。模型视觉生成部分仅 7B 参数,采用 32 层 Single-Stream DiT,在官方 Qwen-Image-Bench 公开评测中获得 60.28 分,并原生支持透明图生成与最多 10 张参考图编辑。

开源地址:

  • 模型链接

    https://modelscope.cn/models/Qwen/Qwen-Image-2.1

  • 模型体验

    https://modelscope.cn/studios/Qwen/Qwen-Image-2.1

  • 技术博客 

    https://qwen.ai/blog?id=qwen-image-2.1

  • 代码仓库 

    https://github.com/QwenLM/Qwen-Image-2.1

  • AIGC专区支持Qwen-Image-2.1推理与LoRA训练

    https://modelscope.cn/aigc/image-generation


01


7B 参数,兼顾效果与推理效率


Qwen-Image-2.1 的视觉生成部分参数量为 7B,采用 32 层 Single-Stream DiT。在官方公布的 Qwen-Image-Bench 公开评测中,模型总分达到 60.28,高于图中所有参与对比的开源模型;相较多个参数未公开的闭源模型,也保持了有竞争力的综合表现。


Qwen-Image-Bench 公开评测对比:


推理效率方面,Qwen-Image-2.1 也着重优化了推理效率,优势在多图输入场景中尤其明显。这一优化来自混合粒度注意力结构。模型对文本和图像采用不同的处理策略:文本部分,包括系统前缀和编辑指令,采用 Token 级因果掩码;图像生成部分采用 Chunk 级掩码。同时,通过 KV Cache 复用机制,模型将输入图像与编辑指令作为静态上下文,在首步预计算并缓存,以提升推理效率、降低显存开销。


Qwen-Image-2.1 混合粒度注意力结构:


02


从透明图到多图编辑:覆盖多类视觉创作场景


原生透明图:生成与编辑统一完成

Qwen-Image-2.1 原生支持透明背景图像生成。模型可根据提示词决定输出普通 RGB 图像还是带 Alpha 通道的 RGBA 图像,适合贴纸、人物或商品抠图、图形素材与设计资产制作。透明图并非单独的后处理能力,生成结果还可以继续作为条件输入,用于表情、文字和内容编辑。


透明背景图像生成效果:


模型也能将真实 RGB 图片转换为透明 RGBA 图层,并继续修改透明图中的表情或文字。例如,官方案例展示了将透明图中的“BLOOM”替换为“Qwen-Image”,同时保持主体和透明背景结构。


多图编辑:最高支持 10 张参考图

Qwen-Image-2.1 最高支持 10 张参考图。在多人合照场景中,模型可将 6 张独立人像组合为一张群像;在商品穿戴场景中,可以同时读取模特、衣服、鞋子、包和帽子等多张素材;在家居设计场景中,还可以根据 10 张家具参考图生成完整室内布置。


局部编辑:圈选、涂抹与掩码

模型支持圈选、涂抹和掩码三类局部控制方式。圈选可以在多个指定区域内同时执行删除、替换与颜色调整;涂抹适合快速指定新增内容的位置;掩码则通过额外输入一张区域图,在不覆盖原图信息的前提下完成更精确的局部编辑。


圈选区域内的多目标局部编辑

局部编辑还可连续执行,官方案例将多次一致性编辑串联为短动画,展示角色姿态和内容在连续帧中的变化。

查看内嵌内容


编辑保真:人物身份与商品细节

Qwen-Image-2.1 重点增强了人像和商品两类高一致性编辑。人像场景强调编辑前后身份特征的稳定;商品场景则尽量保留包装文字、纹理和外形,降低编辑过程中主体细节被重绘或变形的概率。


人像编辑后的身份一致性


商品编辑后的文字、纹理与形态保持


全景图、信息图与分镜生成

除常规文生图和图像编辑外,Qwen-Image-2.1 还覆盖全景图、复杂信息图和分镜图生成。模型可以将单张自拍扩展为完整全景画面,也能基于人物照片组织包含文字与视觉元素的信息图,或根据人物三视图生成连续分镜。


全景图生成效果


全景图放置可视化工具之后展现的完整效果:

查看内嵌内容


复杂信息图生成效果


文字渲染与人物质感

Qwen-Image-2.1 对文字排版、光影和人物细节进行了增强,可用于海报、封面、品牌视觉与人物肖像等场景。官方案例覆盖多种字体风格、复杂文字布局,以及不同光线和构图下的人像生成。


文字渲染效果


03


模型体验与使用


开发者可以通过魔搭创空间 Demo 直接体验 Qwen-Image-2.1 的图像生成与编辑能力,快速验证不同提示词和参考图的实际效果。


此外,魔搭 AIGC 专区已提供在线推理与模型训练能力,无需配置本地环境,即可进一步测试生成效果、调整参数并开展模型微调。


快速生图:


训练LoRA:同时支持文生图的微调和编辑的微调


04


使用 DiffSynth 套件进行推理与训练


推理

首先创建独立的 Python 环境,并安装 DiffSynth-Studio 与 ModelScope:

conda create -n diffsynth python=3.10 -yconda activate diffsynth
git clone https://github.com/modelscope/DiffSynth-Studio.gitcd DiffSynth-Studiopip install -e .

直接运行以下代码,可下载 Qwen-Image-2.1 并生成图像:

from diffsynth.pipelines.qwen_image_21 import QwenImage21Pipeline, ModelConfigimport torchfrom PIL import Imagepipe = QwenImage21Pipeline.from_pretrained(    torch_dtype=torch.bfloat16,    device="cuda",    model_configs=[        ModelConfig(model_id="Qwen/Qwen-Image-2.1", origin_file_pattern="transformer/diffusion_pytorch_model*.safetensors"),        ModelConfig(model_id="Qwen/Qwen-Image-2.1", origin_file_pattern="text_encoder/model*.safetensors"),        ModelConfig(model_id="Qwen/Qwen-Image-2.1", origin_file_pattern="vae/diffusion_pytorch_model*.safetensors"),    ],    processor_config=ModelConfig(model_id="Qwen/Qwen-Image-2.1", origin_file_pattern="processor/"),)
# Text-to-Image, the output is an RGBA imageprompt = "Flat anime-style illustration, a girl with long black hair, wearing a JK uniform."image = pipe(prompt, seed=0)image.save("image1.png")
prompt = "Flat anime-style illustration, a sunny and cheerful high school girl."image_2 = pipe(prompt=prompt, seed=0)image_2.save("image2.png")
# Image Editing, the generated RGBA image is fed back as the conditionprompt = "Generate a group photo of these two characters."edit_image = [Image.open("image1.png"), Image.open("image2.png")]image_3 = pipe(prompt, edit_image=edit_image, seed=1)image_3.save("image3.png")

通过DiffSynth-WebUI推理

基于 DiffSynth-Studio 的零代码 LoRA 训练平台 DiffSynth-WebUI也支持了这个模型,通过以下指令配置环境并启动 WebUI:

git clone --recurse-submodules https://github.com/modelscope/DiffSynth-WebUI.gitcd DiffSynth-WebUIpip install -e DiffSynth-Studio/pip install -e .bash training_ui/launch.sh
在 WebUI 中导入训练数据集 -> 点击 New Task -> 选择 Qwen-Image-2.1,即可开始训练

训练 LoRA

先从魔搭下载示例训练数据:

modelscope download \  --dataset DiffSynth-Studio/diffsynth_example_dataset \  --include "qwen_image_21/Qwen-Image-2.1/*" \  --local_dir ./data/diffsynth_example_dataset

随后通过 Accelerate 启动 Qwen-Image-2.1 LoRA 训练:

accelerate launch examples/qwen_image_21/model_training/train.py \  --dataset_base_path data/diffsynth_example_dataset/qwen_image_21/Qwen-Image-2.1 \  --dataset_metadata_path data/diffsynth_example_dataset/qwen_image_21/Qwen-Image-2.1/metadata.csv \  --max_pixels 1048576 \  --dataset_repeat 50 \  --model_id_with_origin_paths "Qwen/Qwen-Image-2.1:transformer/diffusion_pytorch_model*.safetensors,Qwen/Qwen-Image-2.1:text_encoder/model*.safetensors,Qwen/Qwen-Image-2.1:vae/diffusion_pytorch_model*.safetensors" \  --learning_rate 1e-4 \  --num_epochs 5 \  --remove_prefix_in_ckpt "pipe.dit." \  --output_path "./models/train/Qwen-Image-2.1_lora" \  --lora_base_model "dit" \  --lora_target_modules "" \  --lora_rank 32 \  --use_gradient_checkpointing \  --find_unused_parameters

图像编辑 LoRA 可沿用同一训练入口,通过 data_file_keys 和 extra_inputs 加入编辑图像条件


05


本地推理与部署


使用 ComfyUI 推理

准备 ComfyUI,并创建独立的 Python 环境,完成环境配置:

git clone https://github.com/comfyanonymous/ComfyUI.gitcd ComfyUIpip install -r requirements.txtpip install git+https://github.com/modelscope/DiffSynth-Studio.git

在 ComfyUI 中使用 DiffSynth-Studio 的自定义节点包:

cd ComfyUI/custom_nodesgit clone https://github.com/modelscope/DiffSynth-ComfyUI.gitcd ..python main.py

在「模板」中可以找到我们提供的 Qwen-Image-2.1 工作流:

此外,ComfyUI官方也Day0支持了模型推理,官方工作流如下:

  • 生图工作流地址:

    https://github.com/Comfy-Org/workflow_templates/blob/main/templates/image_qwen_image_2_1_t2i.json


  • 编辑工作流地址:

    https://github.com/Comfy-Org/workflow_templates/blob/main/templates/image_qwen_image_2_1_image_edit.json


使用 Diffusers 推理

环境安装

pip install torch>=2.4.0pip install transformers>=5.17pip install git+https://github.com/huggingface/diffuserspip install accelerate pillow

文生图脚本:

import torchfrom diffusers import QwenImage21Pipelinepipe = QwenImage21Pipeline.from_pretrained(    "Qwen/Qwen-Image-2.1", torch_dtype=torch.bfloat16).to("cuda")image = pipe(    prompt="A neon shop sign that reads \"QWEN IMAGE 2.1\", rainy night, reflections on wet pavement",    width=2048, height=2048,    num_inference_steps=40,    generator=torch.Generator("cuda").manual_seed(42),).images[0]image.save("t2i_example.png")

图生图脚本:

import torchfrom PIL import Imagefrom diffusers import QwenImage21Pipelinepipe = QwenImage21Pipeline.from_pretrained(    "Qwen/Qwen-Image-2.1", torch_dtype=torch.bfloat16).to("cuda")input_image = Image.open("input.png")image = pipe(    prompt="Change the background to a sunset beach",    image=input_image,    num_inference_steps=40,    generator=torch.Generator("cuda").manual_seed(42),).images[0]image.save("edit_example.png")

通过 vLLM 部署

服务启动命令:

vllm serve Qwen/Qwen-Image-2.1 --omni --port 8091

接口调用示例:

curl http://localhost:8091/v1/images/generations \  -H "Content-Type: application/json" \  -d '{    "model": "Qwen/Qwen-Image-2.1",    "prompt": "A ceramic teapot on a wooden table",    "size": "1024x1024",    "num_inference_steps": 50,    "true_cfg_scale": 1.0,    "seed": 42  }'

详情参考:https://recipes.vllm.ai/Qwen/Qwen-Image-2.1

通过 SGLang 部署

服务启动命令:

sglang serve \  --model-path "/models/qwen-image-2.1" \  --model-id Qwen-Image-2.1 \  --num-gpus 1 \  --ulysses-degree 1 \  --host 0.0.0.0 \  --port 30010 \  --performance-mode speed \  --attention-backend fa \  --encoder-parallel auto \  --batching-max-size 1

接口调用:

curl -sS --fail-with-body http://localhost:30010/v1/images/generations \  -H 'Content-Type: application/json' \  -d '{  "model": "Qwen-Image-2.1",  "prompt": "A capybara reading a book by candlelight",  "n": 1,  "size": "1024x1024",  "num_inference_steps": 40,  "guidance_scale": 1,  "seed": 42,  "generator_device": "cpu",  "output_format": "png",  "response_format": "b64_json",  "background": "auto",  "enable_cache_dit": false}'
详情参考:https://docs.sglang.io/cookbook/diffusion/Qwen-Image/Qwen-Image-2.1

在 AMD 平台上推理

qwen-Image-2.1可通过 ROCm 7.2.4 PyTorch 容器在 AMD Radeon GPU 上运行。以下示例使用 Diffusers 加载魔搭模型权重并完成文生图推理。


拉取 ROCm PyTorch 镜像

docker pull rocm/pytorch:rocm7.2.4_ubuntu24.04_py3.12_pytorch_release_2.10.0

启动容器
docker run -d --name qwen-image \  --device=/dev/kfd --device=/dev/dri \  --ipc=host --shm-size 32G \  --security-opt seccomp=unconfined \  -v "$PWD":/workspace \  -w /workspace \  rocm/pytorch:rocm7.2.4_ubuntu24.04_py3.12_pytorch_release_2.10.0 sleep infinity

进入容器:

docker exec -it qwen-image bash
后续命令均在容器内执行。

安装Diffusers及相关依赖

pip install "transformers>=5.0" accelerate safetensors sentencepiece modelscopepip install --no-deps "git+https://github.com/huggingface/diffusers"


从魔搭下载模型权重

modelscope login --token <YOUR_TOKEN>modelscope download Qwen/Qwen-Image-2.1 --local_dir /root/.cache/modelscope/Qwen-Image-2.1

运行文生图推理:

import torchfrom diffusers import QwenImage21Pipelinemodel_path = "/root/.cache/modelscope/Qwen-Image-2.1"pipe = QwenImage21Pipeline.from_pretrained(model_path, dtype=torch.bfloat16)pipe.enable_model_cpu_offload()prompt = "A capybara wearing a wizard hat, oil painting"image = pipe(prompt, generator=torch.Generator("cuda").manual_seed(42)).images[0]image.save("t2i.png")

通过 FlagOS 在多种 AI 芯片上推理

Qwen-Image-2.1 已通过 FlagOS 支持 NVIDIA、沐曦、海光、昇腾、摩尔线程、平头哥真武、燧原和 Arm 共 8 种芯片平台。开发者只需从魔搭 FlagRelease 组织下载对应芯片的预构建镜像与模型权重,即可沿用 Diffusers 的推理方式运行模型,无需修改代码;各平台的推理精度已与官方实现对齐。


模型下载地址:https://modelscope.cn/organization/FlagRelease

点击阅读原文,即可跳转模型链接~




👇点击关注ModelScope公众号获取
更多技术信息~



前往微信阅读全文

内容来自公众号,可前往微信查看原文。

查看作者的更多文章 →