☰
Flux.2 Klein BFS 整合包实战:下载、装节点、跑出第一张换脸图,20 分钟够不够?
2026/11/3 2:28:30 网站建设 项目流程

Flux.2 Klein BFS 整合包实战:下载、装节点、跑出第一张换脸图,20 分钟够不够?

2026 年初以来,围绕 FLUX.2 Klein 的换脸工作流在国内社区的热度一路走高:CSDN 上《让等待成为过去式!Klein9B BFS 换脸工作流》等文章反复强调"仅上传两张图像就能完成高质量人脸替换""正确配置 models 路径与缺失节点即可开跑",而 BFS(Best Face Swap)系列 LoRA 在 Hugging Face 上的主仓库已经积累了 11 万+ 次下载与 757 个赞。热度是真的,但"懒人整合包 20 分钟出图"的说法是否站得住,取决于你对下载源、ComfyUI 节点依赖和模型输入契约的理解。

本文直接打开 BFS 仓库的 Flux 2 Klein 分支,从README.md、docs/flux-2-klein.md 和 workflows/Head Swap V1 Flux 2 Klein 4b_9b (base_distill).json.json) 三个层面拆解:整合包与手动部署怎么选、models 路径与节点怎么配、以及实测跑通一张图的完整链路。最后给出一个诚实的 20 分钟时间账。

一、先看清楚:Flux.2 Klein 上的 BFS 到底解决什么问题

BFS 不是单一模型,而是一组跨基础模型的 LoRA 集合。README.md开头的 base_model 声明覆盖了 Qwen Image 2.1、Qwen Image Edit 2509/2511、FLUX.2 klein 4B/9B 及 base 变体、Krea 2 Raw 等,tags同时包含face-swap、head-swap、body-swap。这意味着每个 LoRA 都有自己绑定的基础模型、输入顺序和提示词契约——这也是社区教程反复强调"用匹配的基础模型 + 匹配的工作流"的原因。

Flux 2 Klein 分支的定位很明确:黑森林实验室把 Klein 定义为轻量、快速、质量稳定的图像生成家族,而 BFS 在此基础上用 LoRA 做头部替换微调。仓库给出了 4 个 Klein 权重文件:

文件说明
bfs_head_v1_flux-klein_4b.safetensors4B 版头换 LoRA
bfs_head_v1.1_optional_flux-klein_4b.safetensors4B 版可选增强
bfs_head_v1_flux-klein_9b_step3500_rank128.safetensors9B 版,3500 步 / rank 128
bfs_head_v1_flux-klein_9b_step3750_rank64.safetensors9B 版,3750 步 / rank 64,仓库推荐

社区文章中"效果更好、速度翻倍"的说法对应的是 Klein 9B distill 工作流:工作流 JSON 里SamplerCustomAdvanced+KSamplerSelect(sampler 为lcm)+Flux2Scheduler只跑4 步采样,CFGGuider的 CFG 仅为1.0,配合 fp8 基础模型,单图推理确实可以压到数十秒量级。

二、整合包 vs 手动部署:先算清两者的真实差距

所谓"整合包"在社区语境里通常指两件事:一是别人打包好的、带全部节点与模型的 ComfyUI 便携目录;二是由 ComfyUI 管理大师这类工具一键安装工作流与模型。社区教程里 Klein9B 那篇明确写了两种安装路径:通过管理大师一键部署,或手动下载模型与工作流后自行配置 models 路径。两者差距不在功能,而在时间与出错面:

  • 整合包(管理大师一键部署):节点依赖由工具按工作流清单自动补齐,模型按路径约定下载,适合第一次接触 ComfyUI 的用户,代价是你不知道装了什么、装在了哪里,日后排查要重新审计。
  • 手动部署:你手动把工作流 JSON 拖进 ComfyUI,按缺什么装什么。代价是首次更慢,但你会真正理解下面这张依赖图。

从仓库结构看,BFS 的"整合"成本其实很低:workflows/目录里已经有Head Swap V1 Flux 2 Klein 4b_9b (base_distill).json,LoRA 权重在仓库根目录,模型下载地址直接写在工作流内嵌的 MarkdownNote 里。真正需要你动手的部分只有三块:基础模型权重、第三方节点、路径摆放。

三、ComfyUI 节点与 models 路径配置速查

先看工作流内嵌说明给出的目录约定(9B 分支):

📂 ComfyUI/ ├── 📂 models/ │ ├── 📂 text_encoders/ │ │ └── qwen_3_8b_fp8mixed.safetensors │ ├── 📂 vae/ │ │ └── flux2-vae.safetensors │ └── 📂 diffusion_models/ │ └── flux-2-klein-9b.safetensors

加上 LoRA 节点,完整清单是:

组件模型文件存放目录
Diffusion Modelflux-2-klein-9b.safetensors(9B fp8)models/diffusion_models/
Text Encoderqwen_3_8b_fp8mixed.safetensors(flux2 类型)models/text_encoders/
VAEflux2-vae.safetensorsmodels/vae/
LoRAbfs_head_v1_flux-klein_9b_step3750_rank64.safetensorsmodels/loras/

4B 分支(工作流中的另一个 MarkdownNote 子图)则要求qwen_3_4b.safetensors与flux-2-klein-base-4b-fp8.safetensors,且注明 base 4B 建议 CFG 5.0、Steps 20/30/50,而 distill 4B fp8 可 CFG 1.0、Steps 4。9B 与 4B 不要混用文本编码器。

节点依赖方面,我逐项核对了工作流 JSON 里每个节点的cnr_id,第三方节点只有 4 个:

  • comfyui-kjnodes:ImageResizeKJv2(参考图统一缩放到 512×512)、ImageCropByMask、ImageConcanate
  • comfyui-rmbg:RMBG节点(RMBG-2.0 抠图,为参考脸生成 mask)
  • comfyui-qwenvl:AILab_QwenVL(Qwen3-VL-4B-Instruct 自动描述参考图表情,注入提示词)
  • comfyui-custom-scripts:ShowText|pysssss

其余节点(CLIPLoader、UNETLoader、LoraLoaderModelOnly、Flux2Scheduler、BasicScheduler、SamplerCustomAdvanced、CFGGuider、EmptyFlux2LatentImage等)全部来自 comfy-core,属于 ComfyUI 内置。也就是说:只要你的 ComfyUI 是近期稳定版(JSON 中cnr_id: comfy-core版本号在 0.8.2–0.9.2 之间),缺的就只有上面 4 个第三方包——这正好对应社区文章里"需正确配置缺失节点"那句提醒。

四、实测跑通第一张换脸图的完整步骤

把工作流 JSON 拖入 ComfyUI 画布后,按下面顺序执行:

第 1 步:确认 LoRA 加载器指向正确文件。工作流中LoraLoaderModelOnly节点的默认值是flux2/klein/head_swap_flux-klein_9b_000003750.safetensors,即仓库里的bfs_head_v1_flux-klein_9b_step3750_rank64.safetensors,strength 默认1.0。如果你用的是 4B 版,记得同步换成 4B 权重并切换到 4B 子图(MarkdownNote 4b节点内已附全部下载链接)。

第 2 步:摆对两张输入图——这是最容易翻车的点。docs/flux-2-klein.md 用加粗文字强调:Image 1 = 目标身体图(Body Reference),Image 2 = 参考脸图(Face Reference),禁止反接。工作流 JSON 中两个LoadImage节点的 title 分别就是Body Reference与Face Reference,顺序一目了然。这个"身体在前、脸在后"的倒置输入契约,与 Qwen Edit 系的 Head V3/V4/V5 一脉相承,但和 Face V1/Head V1(脸在前)相反——跨版本复用输入顺序是社区报错的第一大来源。

第 3 步:检查提示词。正向提示词节点内嵌的完整指令为:

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, nose structure of Picture 2. copy the direction of the eye, head rotation, micro expressions from Picture 1, high quality, sharp details, 4k. Describe the expression in Picture 1 and copy it to the new image.

后半句由AILab_QwenVL自动生成的表情描述经StringConcatenate拼接而来;负面提示词是常规的bad quality, noise, blurry, worst quality...清单。如果你不想依赖 QwenVL 节点,也可以去掉拼接,直接使用固定提示词。

第 4 步:核对采样参数。从 JSON 提取的关键值:

参数值
Samplerlcm(KSamplerSelect)
Schedulerbong_tangent(BasicScheduler)
Steps4(Flux2Scheduler/BasicScheduler)
CFG1.0(CFGGuider)
分辨率1024×1024(EmptyFlux2LatentImage)
LoRA Strength1.0

注意RandomNoise节点使用了固定种子(432262096973493),第一次跑建议保持固定种子以复现工作流示例效果,之后再做消融。

第 5 步:点击 Queue。输出经VAEDecode后由SaveImage落盘到 ComfyUI 的output/目录。

仓库的 Klein 系列示例图(见 images/ComfyUI_04745_.png 及同组其余三张)展示的正是这套工作流在真实照片上的头部替换效果,可作为你复现时的质量参照——重点检查发际线边界、肤色衔接、眼神方向与原图一致性这三处 LoRA 最容易露馅的细节。

五、20 分钟够不够?把时间账拆开算

假设你的前提是:已有可用的 ComfyUI(或愿意用整合包便携版)、网速 30–50 MB/s、显存 12GB 以上(9B fp8 全流程可跑,4B 更宽裕)。时间账大致如下:

  1. 下载权重(占比最大):9B fp8 扩散模型 + Qwen3-8B fp8 文本编码器 + VAE,合计约 18–20GB;4B 分支约 8–10GB。带宽满速时 5–12 分钟,走国内镜像或断点续传会更快,但任何一次"下载失败/校验失败"都会把这段预算吃掉。
  2. 安装 4 个第三方节点(2–5 分钟):用 ComfyUI 管理器搜索kjnodes、rmbg、qwenvl、custom-scripts安装并重启,这是整合包帮你省掉的主要步骤。
  3. 路径摆放 + 导入工作流(3 分钟):按第三节目录树放文件,拖入 JSON,把两个LoadImage换成你的素材。
  4. 首次出图(1–3 分钟):4 步采样本身只要数十秒,但首次跑会伴随模型预热、VAE 解码,加上如果显存不够会触发 offload 抖动。

结论是:20 分钟在"网速好 + 镜像可用 + 节点齐全"的理想条件下刚好够,但不是宽裕。真正容易超时的不是出图本身,而是权重下载与节点安装这两个不可控环节。如果你已有大部分权重、只缺 BFS 的 LoRA 和几个节点,20 分钟绰绰有余;如果是全新机器全量下载,建议把预算放宽到 40 分钟。

六、最容易翻车的 5 个坑

  • 输入顺序反了:Body 与 Face 接反,输出会得到"脸身体错位"的缝合怪。判别方法很简单——LoadImage节点的标题写的是Body Reference还是Face Reference。
  • 基础模型家族不匹配:用 Klein 9B 的 LoRA 配 Klein 4B,或用 Qwen Edit 的 V5 LoRA 配 Klein,都会直接出烂图或报维度错误。README.md的 General rules 第一条就是"尽可能用 LoRA 匹配的基础模型"。
  • 文本编码器选错:CLIPLoader必须选flux2类型并加载qwen_3_8b_fp8mixed,错配成旧版 CLIP 会直接报text model does not exist一类的加载错误。
  • 第三方节点缺失:导入工作流后看到大块红色节点,基本就是comfyui-kjnodes/comfyui-rmbg未装。社区"缺失节点"的报错十有八九出自这里。
  • LoRA 强度与分辨率失控:从 1.0 起步没问题,但如果你把ImageResizeKJv2的 512 目标改大、或把 Steps 从 4 提到 20,identity 保留与皮肤融合的平衡会被打破;调参时应一次只动一个变量。

写在最后

BFS 的 Flux 2 Klein 分支验证了一个趋势:换脸正在从"重负载的微调工程"变成"下载 + 装节点 + 按契约接线"的标准化流程。仓库把 LoRA、工作流、提示词、输入顺序全部写成显式契约,正是为了让这个流程可复制。对普通用户,20 分钟是可达成的下限而非保证值;对想深挖的人,仓库里 Qwen Edit 2509/2511、Krea 2、LTX-2 的平行分支(docs/ 下各有独立指南)展示了同一套方法论在四类基础模型上的迁移。

最后提醒一句仓库README.md里的红线:不要使用或传播涉及公众人物、未经同意者肖像的结果。技术门槛越低,这条线越不能放松。

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询