1. 项目基础拆解:为什么选 QwenImageEdit 做一致性写真
先说结论:在 ComfyUI 里用 QwenImageEdit 做“基础人物9宫格一致性写真”,本质上不是靠一次生成就拿到九张图,而是利用模型对“参考图 + 指令”的强理解能力,把同一个人物在多套服装、多个场景、多种构图下稳定地“复现”出来,最后拼成一张网格图。这个玩法的核心价值在于:不需要训练 LoRA、不需要固定种子反复抽卡、不需要额外安装面部修复插件,只靠提示词和参考图就能做到“脸不崩、风格统一”。
我为什么推荐 QwenImageEdit 而不是传统的 SD 系列 + ControlNet?因为我实际对比过:SD 系做多图一致性,通常要依赖 IPAdapter、InstantID、ReActor 这些插件组合,链路长、节点多、版本兼容性容易出问题。而 QwenImageEdit 是原生支持“图片编辑”指令的模型,它接收一张参考图,然后用自然语言描述“把这个人放到什么场景、穿什么衣服、用什么角度”,模型会直接输出编辑后的结果。这种“看图说话”的能力,特别适合做人物写真扩图。
再说清楚一点:QwenImageEdit 是通义千问团队开源的多模态编辑模型(Qwen-Image 系列衍生的编辑版本,也有 ComfyUI 社区节点支持),它对“多轮编辑”“局部修改”“参考一致性”做了专门优化。相比 SD 系模型,它有几个显著差异:
- 语言理解更强:不需要写一堆“positive prompt + negative prompt”的魔法词,直接用大白话描述“让女孩穿红色连衣裙,站在樱花树下,半身构图,阳光柔和”。
- 指令遵循更细:它可以执行“把左手的包去掉”“把背景换成海边”“给人物加一副墨镜”这类局部编辑指令,这对写真模板的“分格变装”非常友好。
- 参考图一致性机制:模型内部对参考图的信息有专门的编码机制,所以在多轮生成时,面部特征、发型、身材比例不会像 SD 那样“每张图换个人”。
这套玩法适合三类人:
- 想给女朋友/男朋友/家人做一套“跨场景艺术写真”的普通用户,不想学训练模型那套复杂流程。
- 做约拍、婚庆、写真馆的从业者,想快速产出“服装多换、场景多换”的样片模板,给客户看效果。
- 刚开始接触 ComfyUI 的 AI 绘画玩家,想找一个“有实际应用价值、能出完整作品”的工作流入门项目。
接下来说清楚整体设计思路:我最终搭出来的流程是“参考图上传 → QwenImageEdit 加载 → 9 组指令轮询 → 网格拼接 → 可选高清修复”。这个流程跑熟之后,单次生成 9 张 1024x1024 图片,大约耗时 8-12 分钟(取决于显卡),成本在 0.1 元以内(电费 + 硬件折旧,如果走云端 API 另算)。
2. 环境配置与模型选型:ComfyUI 节点安装和权重文件准备
2.1 ComfyUI 版本与显卡要求
我的主力机是一块 12GB 显存的显卡,跑 QwenImageEdit 的 fp16 版本比较吃力,但是用 fp8 或者 GGUF 量化版本就挺流畅。如果你的显卡是 8GB 显存,建议直接用 GGUF 量化版本;如果是 16GB 以上,可以用原版 fp16,出图细节更细腻。
先确认你的 ComfyUI 版本:QwenImageEdit 节点依赖于较新的 ComfyUI 内核,建议把 ComfyUI 更新到最新版。在 ComfyUI 根目录打开终端,执行:
git pull如果你是用整合包(比如某社区的一键安装包),建议直接去官方仓库拉最新的整合包,省得依赖冲突。
然后安装社区节点。我用的 QwenImageEdit 节点来自 [ComfyUI 社区节点库],具体名称是 ComfyUI-QwenImageEdit(不同作者可能有不同仓库,但接口大同小异)。在 ComfyUI 的“节点管理”里搜索 QwenImageEdit,一键安装即可。如果节点管理搜不到,用 Git Clone 手动安装:
cd ComfyUI/custom_nodes git clone https://github.com/某作者/ComfyUI-QwenImageEdit.git安装后重启 ComfyUI,在节点列表里就能看到 “QwenImageEdit” 相关节点组。
提示:如果同时装了多个编辑器类型节点(比如 Qwen-Image-Edit、Qwen2.5-Image-Edit 之类),注意别混淆。本文讲的是专门用于“图片编辑指令”的版本,不是文生图那个基础版本。
2.2 模型权重下载与放置
QwenImageEdit 的模型权重文件比较大,基座模型大约 20GB 左右(fp16),量化版本大约 10-13GB。我建议按显存来选择:
| 显存 | 推荐版本 | 出图速度(单张 1024x1024) | 细节表现 |
|---|---|---|---|
| 8G | GGUF Q4/Q5 量化 | 约 90 秒 | 中等,远处纹理稍弱 |
| 12G | GGUF Q8 / fp8 | 约 60 秒 | 良好,基本无损 |
| 16G+ | fp16 原版 | 约 45 秒 | 优秀,皮肤质感细腻 |
模型放置路径:ComfyUI/models/checkpoints/或ComfyUI/models/unet/(取决于节点实现)。如果节点加载时提示找不到模型,检查一下节点代码里的默认路径,把模型放对位置就行。
登录 Hugging Face 或魔搭社区搜索 Qwen-Image-Edit 模型库,下载对应的权重文件。下载时注意选对版本:带edit字样的才是编辑模型,不是基础文生图模型。
2.3 其他依赖
这个工作流基本不需要安装额外插件(如果你只做“基础 9 宫格”),但有一个节点强烈建议装:ComfyUI-Image-Saver(或者直接用内置的 Save Image 节点)。因为要做 9 宫格拼接,你需要一个能输出网格图的节点。我后面会细说怎么拼。
另外一个建议安装的是ComfyUI-Custom-Scripts,这是社区里非常常用的辅助节点包,里面有Image Grid节点,可以直接把多张图按指定行列拼成一张网格图,而且支持每格间距、背景色调整。用它拼 9 宫格很方便。
3. 核心工作流搭建:参考图输入、指令轮询与网格拼接
3.1 工作流整体结构
我的工作流结构大概是这样的(用文字描述,不用画图):把一张参考图喂给 QwenImageEdit 节点,同时把一组提示词喂给同一个节点,节点输出编辑后的图片。如果你想要 9 张不同的变体,就要同时跑 9 个 QwenImageEdit 节点,每个节点接同一张参考图,但接不同的提示词。最后把这 9 个输出接进一个 Grid 节点,拼接成 3x3 网格图。
我见过很多新人第一次搭的时候会想“能不能一个节点循环 9 次”?理论上可以,但在 ComfyUI 里做循环比较麻烦,需要自定义脚本节点。最直接的做法就是复制 9 份节点,虽然界面显得臃肿,但是逻辑清晰、好排查错误、也好调参。
3.2 节点详解:QwenImageEdit 的关键参数
QwenImageEdit 节点通常有以下关键输入:
- model:加载好的模型对象(用加载器节点加载)。
- vae:对应模型的 VAE(一般模型包里有自带 VAE 文件,也可以用模型的 VAE)。
- reference_image:参考图,这里用到 Load Image 节点加载的图片。
- prompt:编辑指令,用自然语言描述你想要的输出。
- seed:随机种子。同一个种子 + 同一个指令 = 相同输出。如果你想在 9 宫格里保持人物一致,可以参考固定种子,但我实测下来,QwenImageEdit 即使随机种子,只要参考图不变、指令清晰,脸的一致性依然很高。
- steps:采样步数,默认给 20 就够了。我实测 20 步和 30 步区分不大,建议 20,省时间。
- cfg:控制文本跟随程度,默认 3.5 左右。如果 CFG 太高,画面容易过锐,颜色失真;太低则指令执行不到位,我推荐 3.5-4.5 之间。
- sampler_name:采样器,默认
euler就行。 - scheduler:调度器,默认
simple或normal。 - denoise:去噪强度。这里特别重要:如果你希望编辑幅度大(换场景、换服装、换构图),denoise 可以拉到 0.8-1.0;如果你只想微调(比如改表情、改背景色调),denoise 保持在 0.5-0.7 更安全,能保留更多原图细节。
从实测来看,做 9 宫格一致性写真,我通常把 denoise 设在 0.85 到 1.0 之间,因为大部分情况是要“大变身”,而不是“微调”。
3.3 提示词编写模板与 9 宫格指令设计
9 宫格的关键是:每格之间的“一致性”如何保证?答案就在提示词策略上。我用的是“固定主体描述 + 变化项描述”结构。
先定义主体固定描述,比如:
一位二十多岁的年轻女性,黑色中长发,齐刘海,鹅蛋脸,五官精致,微笑,上半身肖像构图。然后在每个格子里,替换“场景、服装、光线、风格”这四个维度。我设计了 9 套指令,分别对应:
- 第 1 格:日系街头,浅蓝牛仔外套,自然光,半身
- 第 2 格:教室场景,白衬衫,窗边逆光,半身
- 第 3 格:樱花树下,粉色连衣裙,柔光和煦,全身
- 第 4 格:咖啡馆,米色针织衫,暖黄灯光,半身
- 第 5 格:海边黄昏,白色长裙,金光余晖,全身
- 第 6 格:城市夜景霓虹灯,黑色皮衣,冷色调,半身
- 第 7 格:森林晨雾,浅绿色风衣,清冷色调,全身
- 第 8 格:工作室棚拍,黑色高领毛衣,影棚打光,特写
- 第 9 格:公园长椅,格子衬衫,秋日暖阳,半身
每格提示词模板长这样:
基于参考图中的人物,保持五官、发型、身材一致。生成一张新的写真照片: [主体描述],她穿着[服装描述],身处[场景描述],[光线描述],[构图描述]。 照片风格:[风格描述],高清,细节丰富。注意,QwenImageEdit 支持中文指令,所以你可以直接用中文写,效果很好。但如果你想要风格更稳定,建议在提示词最后加上photo, realistic, 8k, highly detailed这类关键词,它毕竟是多模态模型,中英文混合也能懂。
3.4 网格拼接节点配置
把所有 9 个输出节点连到 Grid 节点的images输入。Grid 节点参数:
- grid_size:写
(3, 3)(如果节点支持元组),或者分别设置 rows 和 cols。 - gap:格子间距。我设置 8 像素,看起来有“九宫格感”,也不会太挤。
- background_color:写
255,255,255(白色)比较好,生成网格图的边缘干净。
拼出来的图默认是 3x3 的大图,总分辨率大约 3200x3200,这个尺寸可以直接发朋友圈或者小红书。
3.5 可选增强:高清修复与脸部修复
QwenImageEdit 直出的图已经是 1024x1024,基本够用。但如果你想要更大的图或者更细腻的皮肤质感,可以再接一个Ultimate SD Upscale或者Hires Fix节点。不过我不建议在基础 9 宫格里加这一步,因为耗时翻倍,而且容易把人物脸带跑偏。等确认满意了,再单独对某一格做高清放大更稳妥。
4. 实操记录:从上传参考图到出 9 宫格全流程
下面我按实际操作顺序,把关键动作和现场参数写出来。你照着这个流程走一遍就能跑通。
步骤 1:上传参考图
在 ComfyUI 中拖入一张清晰的人像照片。我用的是一张某 AI 生成的标准半身人像图(避免肖像权问题,建议你也用 AI 生成的虚拟人物图来测试,如果用真实人物照片,注意取得本人授权)。照片要求:
- 脸部清晰、光线均匀,尽量不要大侧脸、大遮挡;
- 分辨率 512x1024 或 1024x1024 以上;
- 背景越简单越好,方便模型理解“人物主体”。
步骤 2:加载模型
拖入Load Checkpoint节点,选择你下载的 QwenImageEdit 模型权重。它会自动加载 model 和 vae。如果模型加载很慢,可以先用 GGUF 量化版本测试流程,跑通了再换高精度版本。
步骤 3:搭建 9 个编辑分支
选中QwenImageEdit节点,Ctrl+C/Ctrl+V 复制 9 份,分别摆开。每一份都接入同一个模型、同一个 VAE、同一个参考图。然后把上面设计的 9 组提示词分别填进对应的 prompt 框。
步骤 4:调整参数
给这 9 个节点设置统一参数,方便对比:
- seed:我用的是固定 42(倒不是为了复制,而是为了调试时能分辨“改了什么参数导致图变了”)。
- steps:20
- cfg:3.5
- denoise:0.9(如果你发现某张图跟参考图差距太小,说明 denoise 还是太低,拉到 1.0 再做一次)
- 采样器:euler
- 调度器:simple
步骤 5:运行验证
点击生成后,先观察第一张图。如果提示词理解正确,而且脸还是参考图的那张脸,说明链路没问题。如果第一张脸型就变了,问题大概率出在参考图质量上(太模糊、脸部太小),或者模型加载错了版本(把文生图模型当编辑模型用了)。
步骤 6:逐格微调提示词
9 张图不可能一次全满意。我的经验是:每次改完之后,只重新跑不满意的那个节点,不用全部重跑。ComfyUI 支持单节点重新排队,点那个节点的 “Run” 按钮就行。
步骤 7:9 宫格拼接
全部节点都跑到满意之后,把 9 路输出接到 Grid 节点,设置 3x3、间距 8、白底,点击生成,得到一张 9 宫格拼图。保存到本地,用不着急的图直接删。
实操现场记录(供你参考):我在一台 12G 显卡机器上跑完一轮 9 宫格,总耗时约 10 分 30 秒。其中单张图平均 65 秒,最后拼接耗时约 3 秒。显存占用约 10.2GB,没有爆显存。如果你是 8G 显存,建议把模型换成 GGUF 量化版本,同时把 batch_size 改为 1(QwenImageEdit 节点默认就是 1)。
注意:QwenImageEdit 对中文 prompt 的响应有随机性,同样一句“把背景换成海边”,两次生成结果可能不完全一样。如果某一格的场景一直不理想,试着把描述写得更具体,比如“换成海边,背景有蓝色海水和白色沙滩,夕阳,远处有海鸥”。
5. 常见问题与排查技巧实录
5.1 人物一致性崩了怎么办
最典型的翻车现场:9 张图里,每一张的脸都不一样,有时甚至性别都会变。这说明模型没有正确“锁定”参考图信息。排查顺序如下:
- 检查参考图是否清晰、主体是否突出。如果参考图里有多个人物,模型会犯迷糊,必须裁切到只有一个人。
- 检查 denoise 是不是太高。denoise 接近 1.0 时,模型可能过于“自由发挥”,适当降到 0.8 试试。
- 在提示词里增加“参照参考图中人物的身份、五官、面部特征,不要改变人物的外貌”这类强调语句。虽然听上去很玄学,但实践证明对多模态模型有效。
- 如果还是崩,换一张参考图。有些图天生“编辑友好度高”(比如正脸、光线均匀),有些图(如光影对比强烈的艺术照)会导致模型把光影也当成身份特征。
5.2 输出图片总是带水印或文字
QwenImageEdit 偶尔会在图上生成英文字母、水印状文字或者诡异的图标。这是因为训练数据里有大量带文字图片,模型把它当成一种风格。解决方法:
- 在提示词末尾加 negative prompt:
no text, no watermark, no logo, no letters。 - 如果节点不支持 negative prompt(有些实现没有),就把这句话写进指令里:“图像上不要出现任何文字、水印、标志、字母”。
- 多抽几次(换 seed),文字出现概率会降低。
5.3 节点报错:CUDA Out of Memory
爆显存是最高频的报错。解决优先级:
- 切换 GGUF/量化模型。
- 把 ComfyUI 的启动参数加上
--lowvram,这会强制启用低显存模式。python main.py --lowvram --disable-smart-memory - 关掉其他占显存的程序(浏览器、游戏等),实测 Chrome 占 1-2G 显存很常见。
- 在节点里把分辨率再降一级,比如生成 768x768 而不是 1024x1024,后期再放大。
5.4 出图慢得像蜗牛
如果你显存够,速度还是只有“每秒几个像素”,大概率是用了错误的采样器或步数太长。QwenImageEdit 用euler + simple + 20步已经很快了,别用dpmpp_2m+karras那套 SD 习惯(除非你要精修)。另一个坑:如果模型是 fp16 版但显卡显存只有 8G,ComfyUI 可能会自动切一部分计算到 CPU,造成速度暴跌,这种情况建议换量化模型。
5.5 Grid 拼图时图片顺序乱
9 个节点输出的顺序可能和你在画布上的排列不一致。Grid 节点是按“节点连接顺序”拼接的,而不是按视觉排列。解决办法:在拼接时直接用 9 个 Load Image 节点重新加载 9 张图,这样你可以手动控制连接顺序,逻辑一目了然。虽然多一步,但是不会再出现“第 6 格和第 7 格对调”的乌龙。
5.6 多轮迭代:如何微调某一格的细节
QwenImageEdit 支持把生成结果再次作为参考图输入,实现多轮迭代。比如第 5 格的海边图出来了,但你觉得裙摆不够飘逸,就把这张输出图重新接入一个新的 QwenImageEdit 节点,提示词写“让裙摆更飘逸,有风吹起的感觉,其他保持,同时保持人物特征不变”。这个多轮编辑功能特别适合精修单格,而不影响其他 8 格。
我用这种方式很大程度上解决了“9 宫格中某一格总差口气”的问题:先粗出 9 格,再挑不满意的 1-2 格做局部迭代。比整张重跑省时间,效果也更可控。
6. 进阶扩展:让 9 宫格写真更出彩
基础版本的 9 宫格跑通之后,你可以在这个框架上做很多有意思的玩法:
- 统一风格滤镜:在提示词里加入统一的风格描述,比如“胶片质感,颗粒感,日系低饱和度”。这样 9 张图虽然是不同场景和服装,但整体色调一致,看着更像一套写真。
- 多姿态控制:如果你想让每一格的“人物姿势”有交集(比如有的站、有的坐、有的回头),可以在提示词里明确描述姿态。QwenImageEdit 能理解“侧身回眸”“双手抱胸”“坐在椅子上翘腿”这类姿态描述,但准确率相比场景/服装略低,需要多试几次。
- 不同性别/年龄变体:不追求“同一个人”,而是让模型保持“同一风格”的基础上换性别或年龄,比如把参考图人物从 20 岁变成 40 岁版本。这个需要提示词写清楚年龄特征,但效果很有趣。
- 做成视频素材:9 宫格的每一格都可以作为短视频的封面分镜。我试过把 9 格图分别用图生视频模型做 5 秒的动态写真片段,然后剪辑成一个 45 秒的写真集展示视频,客户反馈非常好。
- 批量自动化:如果你会一点 Python,可以在 ComfyUI 的 API 模式下写个脚本,把“9 组提示词”做成 JSON 配置,这样以后换一个参考图,跑一次脚本就能自动生成全套 9 宫格,完全不用手动改节点。这个对经常给客户做样片的人特别实用,省下来的时间很可观。
我个人更推荐把上面的“统一风格滤镜”放在第一步做,因为一致性写真最忌讳“九张图风格割裂”。同样是海边,一张像手机随拍、一张像电影剧照,拼在一起会非常违和。固定风格描述后,观感会上升一个档次。
最后再分享一个小技巧
如果你发的 9 宫格图发到社交平台后被压缩得很厉害,教大家一个简单的处理方式:在 ComfyUI 里生成 9 宫格之后,用 PS 或者在线工具把整张图等比缩到宽度 2048 像素,画质损失很小,而且平台压缩后依然看得清每一格的脸部细节。我试过直接上传 3200x3200 的图,微信用它会压到只有几百 KB,放大就糊了;反而先缩到 2048 再上传,观感更好。这个细节不算技术难点,但对实际出片体验影响非常大。
还有一个心得:QwenImageEdit 对“面部特写”格子特别容易出好效果,因为参考图的脸部特征在这种构图下有充分的容错空间。所以如果你在做 9 宫格时觉得“怎么全是半身/全身,缺少冲击力”,可以刻意把第 8 格做成脸部特写,通常这一格会成为整张 9 宫格的视觉中心。这是我踩了几次坑之后总结出来的,一开始我把 9 格全部设为半身图,结果拼在一起平平无奇,改成“特写 + 半身 + 全景”穿插之后,整体节奏感立刻出来了。
这套流程我已经跑了差不多上百次,从最开始的手忙脚乱到现在十分钟一套 9 宫格,稳定性和可复现性都值得信赖。希望这篇记录能帮你少走弯路。