ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

换脸提示词配方:特征保留、姿态匹配、质量引导,三招让 BFS 输出“锁脸“

换脸提示词配方:特征保留、姿态匹配、质量引导,三招让 BFS 输出“锁脸“

换脸提示词配方:特征保留、姿态匹配、质量引导,三招让 BFS 输出"锁脸"

【免费下载链接】BFS-Best-Face-Swap项目地址: https://ai.gitcode.com/hf_mirrors/Alissonerdx/BFS-Best-Face-Swap

用过 BFS(Best Face Swap)系列 LoRA 的人大概都有过这种体验:换出来的脸"像"是像了,但总差一口气——要么皮肤糊成磨皮滤镜,要么眼睛看着别处、头转了个奇怪的角度,要么脸是贴上去的,跟身体的光线环境完全割裂。问题往往不在模型,而在提示词。BFS 是一个覆盖 Qwen Image 2.1 / Edit 2509 / 2511、Flux 2 Klein、Krea 2 乃至实验性 LTX-2 的多家族换脸 LoRA 集合,每个家族的输入顺序、提示词契约甚至 LoRA 生效的模块都不同。本文从仓库里各版本的官方工作流与文档出发,把"锁脸"的提示词拆成三个职责模块,并给出 CFG、采样参数与输入顺序的配套打法。

BFS 提示词的三个职责模块

先看 BFS 在 Qwen Image 2.1 上最完整的一套提示词(出自 docs/qwen-image-2.1.md):

head_swap: start with <image1> as the base image, keeping its lighting, environment, and background. remove the head from <image1> completely and replace it with the head from <image2>, strictly preserving the hair, eye color, nose structure from <image2>. copy the direction of the eye, head rotation, micro expressions from <image1>, high quality, sharp details, 4k

逐句拆开,它实际上被设计成三条明确的分工:

职责一:特征保留(identity preservation)。对应"strictly preserving the hair, eye color, nose structure from<image2>"。这一句锁死的是"脸是谁的":发型、瞳色、鼻梁结构全部以参考图为准,用 strongly、strictly 这类强约束副词压实身份来源,防止模型把参考人脸"混合"进目标脸。

职责二:姿态匹配(pose/expression matching)。对应"copy the direction of the eye, head rotation, micro expressions from<image1>"。这一句锁死的是"脸怎么摆":视线方向、头部旋转、微表情全部复制自目标图,与特征保留形成"身份来自 A、姿态来自 B"的双通道约束,从根源上避免"换了脸但眼神飘了、脖子扭了"的错位感。

职责三:质量引导(quality steering)。对应"high quality, sharp details, 4k"以及开头的"keeping its lighting, environment, and background"。这一句约束的是"融合得干不干净":强调保持光照、环境与背景,避免换头之后肤色断层、背景被重绘;追加质量词则引导模型在采样中倾向高频细节而非平滑磨皮。

值得注意的细节是,BFS 的 Qwen Edit 2509 时代提示词还很粗糙("face swap face from Image 1 to Image 2. swap only the face, match the skin tone"),到 V3/V4/V5 与 Qwen 2.1、Flux Klein 时代才沉淀出这套"base image 保环境 + replace head 换头 + preserving 锁身份 + copy 锁姿态 + quality 提细节"的完整配方(见 docs/qwen-image-edit.md 与 docs/flux-2-klein.md)。这不是文案美化,而是与模型机制对齐的结果。

特征保留与姿态匹配的写法范例

输入顺序:谁当"特征源",谁当"姿态源"

提示词写得再好,输入顺序错了一切白搭。BFS 各家族对输入顺序的契约并不统一,这是最容易踩的坑:

家族/版本Image 1Image 2说明
Qwen Image 2.1 Head V1/V1.1目标/基图参考头姿态、光线来自 Image 1,身份来自 Image 2
Qwen Edit Face V1、Head V1/V2参考脸目标身体旧契约,身份在前
Qwen Edit Head V3/V4/V5目标身体参考脸刻意反转的 body-first 契约,不可沿用旧顺序
Flux 2 Klein 全系目标身体参考脸body-first,反转即出错
Krea 2 Head/Body基图参考头/人见 docs/krea-2.md

翻转输入后,模型会把"参考脸"当作目标,把"目标身体"当参考,结果就是换脸对象整个对调。README 里专门强调"several BFS head releases intentionally use body first and reference face second",这并非笔误,而是 V3 之后的刻意设计。

写法的分寸:约束副词决定"锁"的力度

对比两个典型配方可以看到 BFS 的约束写作法:

Qwen Edit V3/V4/V5 与 Flux Klein 的标准配方(docs/qwen-image-edit.md、docs/flux-2-klein.md):

head_swap: start with Picture 1 as the base image, keeping its lighting, environment, and background. remove the head from Picture 1 completely and replace it with the head from Picture 2, strictly preserving the hair, eye color, and nose structure of Picture 2. copy the eye direction, head rotation, and micro-expressions from Picture 1. Keep the body, clothing, pose, framing, and background intact.

而 Krea 2 的配方则极简到只有一句"replace the head with the reference head"(docs/krea-2.md)。这背后是有取舍的:Krea 2 的简单工作流把"保持构图/背景"这类指令外包给了节点与 LoRA 本身的编辑能力,而 Qwen/Flux 家族的配方依赖提示词显式声明边界。提示词越详细,可控性越强,但对参考图的要求也越高——如果参考图本身就是小脸、侧脸或遮挡严重的图,再多的 preserving 也无法凭空补出特征。

另一个微妙之处来自 BFS V1.1 的模块级诊断(docs/qwen-image-2.1.md):LoRA 在每个 transformer block 上同时改动 attention(to_q/to_k/to_v/to_out.0)与 MLP(img_mlp.gate_up/img_mlp.out)两类模块,而实验表明——attention 路径负责从参考头搬运身份信息,MLP 路径则承载"头部旋转、视线方向、表情"这些姿态语义。V1.1 移除后半网络 16 个img_mlp.gate_up模块后皮肤微细节提升约三分之一,代价是表情传递变弱;而 V1.1 alternative 把整个 MLP 路径缩到 35% 幅度,则在保留细节的同时保住了更强的表情复制(代价是头位误差约增加 1 度)。这从机制上印证了提示词"身份归 Image 2、姿态归 Image 1"的分工并非修辞,而是模型内部双路径架构的外在反映。

常见翻车点与修法

  • 脸"贴"在身体上、角度不自然:姿态约束词缺失或太弱。补上"copy the head rotation, eye direction from<image1>";若是 Qwen Edit V3 之前的旧权重,先检查输入顺序是否被反转。
  • 肤色断层、背景被重绘:缺环境约束。补"keeping its lighting, environment, and background",必要时把质量引导词换成与目标图一致的"match the skin tone"(Face V1 时代的老配方里就有这一句)。
  • 皮肤过塑、细节丢失:优先升级到 V1.1 / alternative 这类纹理优化版本,而不是靠提示词硬救;提示词里的"sharp details, 4k"能起作用的前提是 LoRA 的 MLP 路径没有把皮肤压平。

提示词之外:CFG 与采样参数的配合

提示词定方向,采样参数定力度。BFS 的 Qwen 家族工作流在参数上留了清晰的梯度,可以从仓库的 workflow JSON 里直接读到:

  • Qwen Image 2.1 Head Swap 工作流(workflows/Head Swap V1 Qwen 2.1 Workflow.json):KSampler 采用steps=8, cfg=1, sampler=deis_2m, scheduler=simple, denoise=1,并可选挂一个 8 步加速 LoRA。
  • Qwen Edit V3 工作流(带 Lightning LoRA 版)内置了一张官方参数参考表:官方模型50 steps / CFG 4.0,fp8 量化模型20 steps / CFG 2.5,fp8 + 4 步 Lightning LoRA 则降到4 steps / CFG 1.0。
  • Qwen Edit 2511 V5 工作流(workflows/Head Swap 2511 - V5 Simple Workflow.json):BasicScheduler 以simple调度、默认20步,CFGGuider 的 CFG 取2.5。
  • Krea 2 Body Swap 工作流:10 steps / cfg 1 / euler / simple,且 body swap 的 LoRA 强度从0.5起步(头换则在 1.0 附近)。

把这些串起来,规律很清晰:提示词越强约束,CFG 越要低。换脸本质是"参照两张图做局部编辑",而不是"自由生成",过高的 CFG 会放大对提示词的过度服从,导致背景被重绘、姿势被改写;所以 BFS 的工作流普遍把 CFG 压在 1.0–2.5 的低区间,用低引导换取对两张输入图的忠实度。步数则与模型量化/加速 LoRA 联动:全精度官方模型用 50 步吃满细节,fp8 用 20 步是性价比点,挂 Lightning 加速后 4 步就能出图,此时 CFG 必须降到 1.0 才不会过饱和。

LoRA 强度同样遵循"先 1.0 再微调"的原则(README 与各家族文档一致):从 1.0 出发,先看身份保持是否达标,再看发际线、肤色融合与表情传递,逐项调整。分辨率方面,Qwen Image 2.1 支持原生高分辨率生成,工作流默认从适中分辨率起步并支持 32 的倍数自定义尺寸——换头场景下更大的输出尺寸有助于保住面部细节、减少低分辨率下常见的整体偏色与柔化偏移,但文档也提醒"更高的分辨率不保证完美保留"。

结语

把 BFS 的"锁脸"拆开看,无非是三件事:用强约束副词把身份锁死在参考图上、把姿态锁死在目标图上、用质量词与环境词锁住融合边界;再配合低 CFG、与量化/加速匹配的步数、以及从 1.0 起调的 LoRA 强度。提示词负责表达意图,采样参数负责让意图不过度、不打折。照着 Qwen 2.1 那条完整配方逐句对照自己的工作流,大多数"换了但没锁住"的问题都能在 30 秒内定位到是缺了哪一句、还是参数跑偏了。最后记住仓库 README 的底线:涉及公众人物或未经同意者的结果,不要生成,也不要传播。

【免费下载链接】BFS-Best-Face-Swap项目地址: https://ai.gitcode.com/hf_mirrors/Alissonerdx/BFS-Best-Face-Swap

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进