Flux.2 Klein BFS 整合包实战下载、装节点、跑出第一张换脸图20 分钟够不够2026 年初以来围绕 FLUX.2 Klein 的换脸工作流在国内社区的热度一路走高CSDN 上《让等待成为过去式Klein9B BFS 换脸工作流》等文章反复强调仅上传两张图像就能完成高质量人脸替换正确配置 models 路径与缺失节点即可开跑而 BFSBest 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 版头换 LoRAbfs_head_v1.1_optional_flux-klein_4b.safetensors4B 版可选增强bfs_head_v1_flux-klein_9b_step3500_rank128.safetensors9B 版3500 步 / rank 128bfs_head_v1_flux-klein_9b_step3750_rank64.safetensors9B 版3750 步 / rank 64仓库推荐社区文章中效果更好、速度翻倍的说法对应的是 Klein 9B distill 工作流工作流 JSON 里SamplerCustomAdvancedKSamplerSelectsampler 为lcmFlux2Scheduler只跑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).jsonLoRA 权重在仓库根目录模型下载地址直接写在工作流内嵌的 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.safetensors9B fp8models/diffusion_models/Text Encoderqwen_3_8b_fp8mixed.safetensorsflux2 类型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-kjnodesImageResizeKJv2参考图统一缩放到 512×512、ImageCropByMask、ImageConcanatecomfyui-rmbgRMBG节点RMBG-2.0 抠图为参考脸生成 maskcomfyui-qwenvlAILab_QwenVLQwen3-VL-4B-Instruct 自动描述参考图表情注入提示词comfyui-custom-scriptsShowText|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.safetensorsstrength 默认1.0。如果你用的是 4B 版记得同步换成 4B 权重并切换到 4B 子图MarkdownNote 4b节点内已附全部下载链接。第 2 步摆对两张输入图——这是最容易翻车的点。docs/flux-2-klein.md 用加粗文字强调Image 1 目标身体图Body ReferenceImage 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 提取的关键值参数值SamplerlcmKSamplerSelectSchedulerbong_tangentBasicSchedulerSteps4Flux2Scheduler/BasicSchedulerCFG1.0CFGGuider分辨率1024×1024EmptyFlux2LatentImageLoRA 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 更宽裕。时间账大致如下下载权重占比最大9B fp8 扩散模型 Qwen3-8B fp8 文本编码器 VAE合计约 18–20GB4B 分支约 8–10GB。带宽满速时 5–12 分钟走国内镜像或断点续传会更快但任何一次下载失败/校验失败都会把这段预算吃掉。安装 4 个第三方节点2–5 分钟用 ComfyUI 管理器搜索kjnodes、rmbg、qwenvl、custom-scripts安装并重启这是整合包帮你省掉的主要步骤。路径摆放 导入工作流3 分钟按第三节目录树放文件拖入 JSON把两个LoadImage换成你的素材。首次出图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 提到 20identity 保留与皮肤融合的平衡会被打破调参时应一次只动一个变量。写在最后BFS 的 Flux 2 Klein 分支验证了一个趋势换脸正在从重负载的微调工程变成下载 装节点 按契约接线的标准化流程。仓库把 LoRA、工作流、提示词、输入顺序全部写成显式契约正是为了让这个流程可复制。对普通用户20 分钟是可达成的下限而非保证值对想深挖的人仓库里 Qwen Edit 2509/2511、Krea 2、LTX-2 的平行分支docs/ 下各有独立指南展示了同一套方法论在四类基础模型上的迁移。最后提醒一句仓库README.md里的红线不要使用或传播涉及公众人物、未经同意者肖像的结果。技术门槛越低这条线越不能放松。创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考