Qwen-Image-2.1:生成+修图一体的新一代(原生 2K、透明底、16 参考图)
Qwen-Image-2.1 是阿里 Qwen 团队 Qwen-Image 系列的最新开源权重版本,也是这一代最大的变化:一个模型同时干文生图和指令修图——同一份权重,既能从提示词出图,也能按一句话指令改图,工作流不用换 checkpoint。再加上三件上代做不到或做不好的事:原生 2K 直出、密集小字的专业文字排版、VAE 自带 alpha 通道直接生成透明底图。
这一页带你把官方 Qwen-Image-2.1 工作流从头跑通:下载模型三件套、模板库加载文生图和编辑模板、用 Resolution Selector 直出 2K、写透明底提示词、接多张参考图换装,最后切 Turbo 8 步加速。
和前两课的关系:Qwen-Image 基座管从零生成、Qwen-Image-Edit管指令修图,2.1 把两条线合并成一个模型,还换掉了整套文本编码器(Qwen2.5-VL 7B → Qwen3-VL 8B),模型文件与前三代不通用。
学完你能做什么
- 从官方模板库加载 Qwen-Image-2.1 文生图与编辑工作流,补齐模型文件,跑通第一次生成
- 用 Resolution Selector 按比例+百万像素出图,1:1 加 4MP 直出 2048×2048 原生 2K
- 写一句话指令修图:换背景、改文字、换装,image_1 到 image_16 最多接 16 张参考图
- 用官方提示词模板生成透明底 PNG,不用再跑抠图模型
- 切换 Turbo 检查点或挂官方 Turbo LoRA,8 步出图
你现在的困境
- 用 Qwen-Image 出底图、再开 Qwen-Image-Edit 改图,两套模型三十多个 GB,硬盘和流程都扛不住
- 上代默认出图只有 1328×1328(约 1.8MP),做海报要再跑一遍放大,文字一放大就糊
- 电商素材要透明底,生成完还得用 BiRefNet 抠一遍,边缘总有一圈白边
- 多图参考(把这件衣服穿到这个人身上)上代模型最多接 3 张,套装和场景图根本不够用
什么时候用这一招
当你需要:
- 一个模型覆盖「从零生成」和「指令改图」两种任务,不再维护两套权重
- 原生 2K 分辨率直出:海报、包装、信息图,小字密排也清晰
- 直接生成或编辑出带 alpha 通道的透明底图
- 多参考图编辑:人物图 + 服装图 + 场景图一起喂进去
而且不想:
- 生成后再跑一遍放大模型凑 2K
- 透明底素材再过一道抠图工作流
- 生成、编辑、加速各下一套模型
🎒 开始前的准备
- 学过上一课 Qwen-Image-Edit 指令修图,知道指令编辑是什么(2.1 的模型文件与它不通用,没学过也能直接开始)
- 跑过 第一次生图,会加载模板、认得 KSampler 和三个 Loader
- 模型目录规则心里有数:
diffusion_models、text_encoders、vae各放什么(忘了回看模型放哪里) - 硬盘预留约 16GB:扩散模型 int8 版 6.76GB + 文本编码器 8.71GB + VAE 0.64GB(想开提示词增强再加 8.82GB)
- ComfyUI 更新到 v0.37 以上(Turbo 模板要 v0.39+,当前稳定版 v0.43.2 没问题;不会更新看排错总览)
- 网络能连 Hugging Face;连不稳走 ModelScope 国内源(第 2 步给地址)
- 显存参考:int8 权重约 6.76GB,编辑大图时显存占用随参考图数量和分辨率上涨,吃紧就去显存不足找解法
核心思路
为什么 2.1 能一个模型干两件事? 文生图和指令编辑在底层共享同一套扩散过程,区别只在条件输入:文生图只喂提示词,编辑把参考图「拼接」进文本编码器的输入序列——Qwen3-VL 编码器本来就是多模态的,图片和文字一起读。所以 2.1 不再需要单独训练一个 Edit 分支,同一份权重直接切换任务,编辑模板只是把 LoadImage 接进了 Text Encode 节点的图片槽。
Qwen-Image-2.1 工作流骨架(文生图模板,全包在一个「Text to Image (Qwen Image 2.1)」子图节点里):
ResolutionSelector(比例 + 百万像素)──→ 子图:EmptyLatentImage ─→ KSampler ─→ VAEDecode ─→ SaveImage
CLIPLoader(Qwen3-VL 8B)──→ TextEncodeQwenImage21(正向/负向)─→ KSampler
UNETLoader(2.1 扩散模型)─→ QwenImage21Cache(KV 缓存)─→ KSampler
VAELoader(4 通道 VAE)─→ VAEDecode编辑模板把 EmptyLatentImage 换成 TextEncodeQwenImage21 的 latent 输出——这个 latent 的尺寸自动跟随第一张参考图(image_1),画布不用自己算。
五个官方模板,一个模型家族:
| 模板名(模板库搜索词) | 任务 | 步数 | 最低版本 |
|---|---|---|---|
| Qwen Image 2.1:文生图 | 文生图 | 25 步 | v0.37.2 |
| Qwen Image 2.1:图像编辑 | 指令修图 + 多参考 | 25 步 | v0.37.0 |
| 移除背景:Qwen Image 2.1 | 透明底抠图 | 25 步 | v0.37.0 |
| Qwen Image 2.1 Turbo:文生图 | 文生图加速 | 8 步 | v0.39.0 |
| Qwen Image 2.1 Turbo:图像编辑 | 修图加速 | 8 步 | v0.39.0 |
这一代的参数口味和上代不一样,先记住三条再动手:
- cfg 固定 1:官方发布路径就是 cfg 1,此时 ComfyUI 跳过负向条件,负向提示词写了也白写
- 步数 25 起步:官方原始管线约 40-50 步,模板降到 25 步够用;局部小改 4-8 步都成立
- 分辨率用「百万像素」思考:1MP ≈ 1024×1024,2K 方图就是 4MP,别再手算宽高
跟我做
第 1 步:加载官方 Qwen-Image-2.1 工作流模板
为什么:官方模板把模型加载、采样、KV 缓存全包成一个子图节点,你只需要面对十来个暴露出来的参数,不用从零连线。
打开 ComfyUI,左侧 Templates 侧栏搜「Qwen Image 2.1」,文生图选 Qwen Image 2.1:文生图,修图选 Qwen Image 2.1:图像编辑(模板库中文名以你本地为准,搜索词用英文最稳)。
你应该看到:文生图模板画布上只有三个节点——一个 Resolution Selector(比例 + 百万像素)、一个大块头子图节点 Text to Image (Qwen Image 2.1)、一个 Save Image;编辑模板则是 Image Edit (Qwen Image 2.1) 子图带 image_1 到 image_10 一排图片输入槽,外加两个 LoadImage 和一个 Image Compare。缺模型时节点标红、模板会尝试自动下载;国内网络自动下载容易失败,建议按第 2 步手动下载。
- 模板加载成功,画布上出现 Resolution Selector 和子图节点
第 2 步:下载模型三件套并放进对应目录
为什么:2.1 换了新的 Qwen3-VL 文本编码器和 4 通道 VAE,与 Qwen-Image / Qwen-Image-Edit 的模型文件不通用,需要重新下载;但五个官方模板(含 Turbo 和去背景)共用同一套编码器和 VAE,下一次全都能用。
三个必下文件(模板默认加载 int8 版,显存友好):
| 文件 | 目录 | 大小 |
|---|---|---|
qwen_image_2.1_int8_convrot.safetensors | models/diffusion_models/ | 6.76 GB |
qwen3vl_8b_int8_convrot.safetensors | models/text_encoders/ | 8.71 GB |
qwen_image_2.1_vae_bf16.safetensors | models/vae/ | 644.2 MB |
下载地址二选一(目录结构相同,文件在 diffusion_models/、text_encoders/、vae/ 子目录下):
- Hugging Face:
https://huggingface.co/Comfy-Org/Qwen-Image-2.1 - ModelScope 国内源(推荐):
https://modelscope.cn/models/Comfy-Org/Qwen-Image-2.1
放好后回 ComfyUI 刷新,子图节点上的红框消失。
你应该看到:子图节点顶部的模型名下拉框能选中 qwen_image_2.1_int8_convrot,点 Queue(Ctrl+Enter)不再报缺模型错误。
- 三个文件就位,节点无红框,缺模型报错消失
第 3 步:跑通第一次原生 2K 文生图
为什么:2.1 的卖点之一是不用放大模型直接出 2K——分辨率不是手填宽高,而是 Resolution Selector 的「百万像素」目标,先跑通默认值再上 2K。
- 子图节点的 prompt 框写你想画的内容(模板自带的示例提示词很长,可以先用它试跑)
- Resolution Selector 保持默认:
1:1 (Square)+1百万像素(约 1024×1024) - 点 Queue(Ctrl+Enter)
你应该看到:进度条走 25 步(cfg 1、euler、simple),输出图前缀 Qwen_image_2.1。
跑通后改 2K:Resolution Selector 的 megapixels 从 1 改成 4,比例保持 1:1,再跑一次。
你应该看到:输出变成 2048×2048,画面细节和小字明显更扎实——这就是原生 2K,中间没有经过放大模型。
💡 分辨率这么选
- 比例在 Resolution Selector 的 aspect_ratio 里选(1:1、2:3、3:2、3:4、4:3、9:16、16:9、21:9 八档)
- 尺寸用 megapixels 定(0.1–16.0):1MP ≈ 1024×1024,4MP = 2048×2048(2K 方图)
- 官方建议像素值取 32 的倍数;常用目标(1MP、4MP 方图)算出来正好都是
- 别冲 4K:超出 2K 训练尺寸太多,提示词遵循度会下降
- 1MP 出图一次,4MP 出图一次,两次都成功且 4MP 是 2048×2048
第 4 步:一句话指令修图,最多 16 张参考图
为什么:编辑是 2.1 合并进来的能力,参考图按槽位顺序拼进文本编码器,提示词用 <image1>、<image2> 点名——这套写法上代 Edit 线没有,是全新接口。
- 模板库加载 Qwen Image 2.1:图像编辑 模板
- image_1 槽接待编辑的图(LoadImage 节点上传;模板示例是
portrait_model_denim.png人物图) - image_2 起接参考图(示例是
clothing_light_blue_denim_shirt.png服装图),最多可接到 image_16,官方模板暴露了前 10 个槽 - 子图节点的 prompt 写指令,用槽位点名:
Keep the character and pose in <image1> unchanged, put this light blue denim shirt from <image2> on the character, preserve the original facial features, hair, body shape and pose(保持 image_1 里人物的姿态不变,把 image_2 里这件浅蓝牛仔衬衫穿到人物身上,保留原本的脸型、发型、身材和姿态。)
- 点 Queue
你应该看到:输出里人物还是那个人,衣服换成了参考图里的牛仔衬衫;模板还带一个 Image Compare 节点,拖动滑块能对比原图和结果。
💡 编辑画布尺寸的规则(resolution 参数)
resolution是总像素预算,不是宽或高:1024表示把 image_1 按长宽比缩到约 1024×1024 的总像素量(比如 3:4 图会缩到约 896×1184)- 模板默认
0:每张参考图保持自己的像素尺寸(对齐到 32 倍数),3000×4000 的照片画布就是 3008×4000 custom_size关(默认):画布跟随 image_1;开了才用 Resolution Selector 的宽高- 画布越大越慢:官方在 RTX 5090 上实测,3008×4000 约 6 s/it,缩到约 896×1184 只要约 0.3 s/it——修图慢先查 resolution 和参考图尺寸,再想别的
只想改局部? 在 image_1 的 LoadImage 节点上右键 → Open in Mask Editor,用 Paint Pen 在要改的区域涂几笔,保存。涂的笔迹会写回图片本身(不是 mask),提示词里用颜色点名:「change the jacket in the red area」(改红色区域的夹克)。标记要涂在你想改的区域之内,如果标记颜色本身可能出现在成图里,把想要的颜色也写进提示词。
多参考图不止能换装——把设计稿和实物图一起喂进去做商品样机,思路相同,实战见商品样机。
- 两张图换装成功,人物脸和姿态没变
- 试着把 resolution 从 0 改成 1024,观察到出图更快、画布更小
第 5 步:生成透明底图(文生图与修图两条路)
为什么:2.1 的 VAE 是 4 通道的,alpha 直接生成在图里,不用事后抠图——这是电商素材的刚需,也是官方单独出一个「移除背景」模板的原因。
路线 A:文生图直接生成透明底。在文生图模板的 prompt 里套官方模板句式,把中间换成你的主体:
This is an RGBA format image with transparency. [a red sneaker, product photography, side view]. The image has an alpha channel and a transparent background.路线 B:已有图片去背景。模板库加载 移除背景:Qwen Image 2.1 模板,image_1 接你的图,prompt 已经写好:
Remove the background, and output a PNG image两条路都要注意:输出必须存 PNG(模板的 Save Image 已设好 png / 8-bit / sRGB),JPEG 存不了 alpha 通道,存了透明就没了。
透明素材的更多玩法(BiRefNet 本地抠图、Bria 云端抠图、换背景合成)在商品抠图与换背景展开。
你应该看到:出图在深色棋盘格背景上显示透明区域;把文件拖进 PS / GIMP,图层带 alpha 通道。
- 路线 B 跑通:一张实拍图去背景成功,PNG 带 alpha 通道
第 6 步:切 Turbo,8 步出图
为什么:Turbo 是同一模型的蒸馏检查点,固定 8 步调度,出图时间约为 25 步版的三分之一——批量出图、反复抽卡时体感差距巨大。
方式 A(推荐):直接换 Turbo 模板。模板库加载 Qwen Image 2.1 Turbo:文生图 或 Qwen Image 2.1 Turbo:图像编辑,把扩散模型换成 qwen_image_2.1_turbo_int8_convrot.safetensors(6.76 GB,与基座 int8 同大小),采样走固定的 8 步 ManualSigmas 调度,不用也不能改步数。
方式 B:基座模板挂 Turbo LoRA。不想再下 6.76GB 的话,下载官方仓库里的 qwen_image_2.1_turbo_lora_avg_rank_178_bf16.safetensors(Comfy-Org/Qwen-Image-2.1 的 loras/ 目录)放进 models/loras/,在子图里给模型线加一个 LoraLoaderModelOnly 节点加载它,然后把子图节点的 steps 改成 8,sampler/scheduler 保持 euler/simple 不动。
你应该看到:进度条只走 8 步就出图;文字海报这类密集排版任务质量依旧在线(Turbo 模板的示例提示词就是一张「QWEN IMAGE / 2.1 TURBO」双行大字海报,可以先用它验证)。
⚠️ Turbo 的 8 步是「锁死」的
Turbo 模板用 ManualSigmas 节点写死了蒸馏调度(1.0, 0.978453, 0.95418, 0.926626, 0.89508, 0.845148, 0.704534, 0.414568, 0)。想加步数必须连调度一起换,单改步数数字没有意义。基座模型没有这个限制,25 → 40 步随时可调。
- Turbo 出图一次,8 步完成,耗时约为 25 步版的三分之一
检查点 ✅
- 模板加载成功:Resolution Selector + 子图节点 + Save Image,无红框
- 三件套就位:
diffusion_models里的 2.1 扩散模型、text_encoders里的 Qwen3-VL、vae里的 4 通道 VAE - 1:1 + 4MP 直出 2048×2048,没有经过放大节点
- 编辑模板里用
<image1>/<image2>点名参考图,换装成功 - 透明底 PNG 在棋盘格背景上显示透明,文件带 alpha 通道
- Turbo 8 步出图正常
踩坑提醒
❌ 负向提示词写了不起作用
cfg 是 1 时 ComfyUI 直接跳过负向条件计算,negative_prompt 写什么都无效——这是 2.1 官方发布路径的设定,不是 bug。想让负向生效就得抬 cfg:官方给的参考是 cfg 2 会更贴密集文字和小数字,但边缘会过锐;cfg 5 画质明显崩,0.5 直接坏图。抬 cfg 前先固定 seed 对比,一次只动一个值。
❌ 修图慢得像卡死
先查两件事再怪显卡:子图节点的 resolution 是不是 0(每张参考图按原始像素进画布,几张 3000×4000 的图叠起来就是 12MP 起步的采样);参考图是不是又多又大(多图会拉长文本编码序列,KV 缓存压力也更大)。把 resolution 设成 1024,官方实测速度能从约 6 s/it 回到约 0.3 s/it。还慢再动 Qwen Image 2.1 Cache 节点:device 选 cpu(用内存预取,几乎不掉速),或 dtype 选 int8(缓存减半、精度接近 bf16)。
❌ 提示词增强开了之后,出图和 prompt 完全对不上
refine_prompt 开启后,真正喂给图像模型的是增强模型改写后的提示词,不是你写的那句。改写质量取决于 max_length:模板默认 4096,而增强模型的推理块(thinking)很能吃 token——预算被推理耗尽时改写结果会是空字符串,图像模型拿空提示词采样,修图结果等于原图原样返回。官方增强模型的推荐值是 t2i 16256 / i2i 24000。正确顺序:先把 max_length 抬到官方值,再开 thinking_mode,最后开 refine_prompt,并用子图里的 Preview Any 节点看实际生效的提示词。注意等待时间也会相应变长。
❌ 透明图接别的节点报错
2.1 解码出的图带 4 通道(RGB+alpha),很多按 3 通道写的节点(upscale、部分合成节点)拿到会报错,而且报错出现在下游节点上,容易误判成那个节点坏了。解法:在 VAEDecode 后插一个 SplitImageWithAlpha 节点,把 RGB 输出喂给三通道节点,alpha 单独走。两个节点的 mask 约定都是「1 = 透明」,SplitImageWithAlpha 的 mask 输出可以直接接 JoinImageWithAlpha 的 alpha 输入。
进阶技巧(可选)
步数怎么调才不浪费。25 步是「够用」档,不是最优档:官方管线用 40-50 步;改个衣服颜色这种局部小改 4-8 步就成立,比默认快好几倍;手部、手指这类顽固细节大约 30 步收敛,25 → 40 步能减少细节处的 fizz(细节发虚、毛边)。原则:哪里不行调哪里,没问题就别动。
KV 缓存节点(Qwen Image 2.1 Cache)。编辑工作流每步采样都要重算文本+参考图前缀,这个实验性节点把前缀缓存在显存或内存里跳过重算。device:auto(默认,先用空闲显存再用内存)/ gpu / cpu(内存预取,基本不掉速)/ off(每步重算,排错时用来排除缓存嫌疑);dtype:default 无损 / int8 缓存减半精度接近 bf16 / int4 再减半但每步误差约翻倍。模板默认值(auto + default)对大多数配置直接可用。
换 VAE 治棋盘格纹理。照片风格的密集细节区可能出现细密棋盘格纹理,这是 VAE 解码器的产物,加步数治不了。社区作者 madebyollin 微调过同款解码器:texture_fix_vae_for_qwen_image_2.1_bf16.safetensors(非官方文件),放进 models/vae/,在 Load VAE 节点里替换选择即可,代价是重建精度略降。
Lightning 4 步 LoRA。除了官方 Turbo,社区 lightx2v 出过 4 步蒸馏 LoRA(Qwen-Image-2.1-Lightning,非官方):下载 pytorch_lora_weights.safetensors 放进 models/loras/,LoraLoaderModelOnly 挂上,steps 改 4,sampler/scheduler 保持 euler/simple。注意它的调度是按 1024×1024 拟合的,其他输出尺寸匹配度会松。
提示词增强(Prompt Enhancer)的正确打开方式。t2i 和编辑模板内置了可选的提示词改写分支:一个专门的 Qwen 3.5 编码器(t2i 用 ..._pe_t2i...、编辑用 ..._pe_i2i...,各 8.82GB)把你的一句话扩写成一段完整描述。默认关闭;要用就按「第 3 个踩坑」里的顺序开。改写遵循的系统提示词在子图里的 Text (System Prompt) 节点,想改写风格可以编辑它。移除背景模板没有这个分支,别去找。
本课小结
✅ 回看开头的目标,你现在能:
- 加载 Qwen-Image-2.1 工作流的五个官方模板(文生图 / 编辑 / 去背景 / Turbo ×2),补齐三件套跑通
- 用 Resolution Selector 的百万像素出图,4MP 直出原生 2K
- 一句话指令修图,
<image1>…<image16>最多 16 张参考图按槽位点名 - 文生图套 RGBA 模板句式、修图用官方去背景模板,直接出透明底 PNG
- 换 Turbo 检查点或挂 Turbo LoRA,8 步出图
关键参数回顾:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| cfg | 1 | 官方路径;负向提示词此时无效,抬 cfg 才生效 |
| steps | 25(基座)/ 8(Turbo) | 基座可调 4-50;Turbo 锁 8 步固定调度 |
| sampler / scheduler | euler / simple | 全部官方模板一致 |
| megapixels | 1(默认)→ 4(2K 方图) | Resolution Selector 的尺寸目标 |
| resolution(编辑) | 0(默认)或 1024 | 0=跟参考图原尺寸;1024=总像素预算,更快 |
| refine_prompt / thinking | 关 / 关 | 开启前先把 max_length 从 4096 抬到官方值 |
| 缓存 device / dtype | auto / default | 显存紧用 cpu 或 int8 |
下一课预告
Qwen 家族到这就告一段落。下一课换到另一个主流家族:FLUX.1 文生图:dev 与 schnell 本地部署。你会学到:
- FLUX.1 dev 与 schnell 两个版本的定位差异,各自适合什么场景
- 全量 checkpoint 与 fp8 版本的显存取舍
- FLUX 风格的提示词写法(和 Qwen 完全不同的口味)
- 后面 Kontext 一致性修图、Fill 局部重绘都建在这一课的基础上