FaceFusion 换脸实战指南:参数推荐值与排障速查
【免费下载链接】facefusionIndustry leading face manipulation platform项目地址: https://gitcode.com/GitHub_Trending/fa/facefusion
FaceFusion 是一个开源的人脸操控平台,核心功能是把一张源人脸换进图片或视频,并处理增强、掩膜边界问题。本文面向第一次使用的读者,给出换脸、人脸增强、面部掩膜三块可直接照抄的参数推荐值,以及「症状→成因→处理」的排障清单。
装完就能跑:三条命令启动 Web 界面
准备一个 Python 3 环境(需要 ffmpeg 在系统路径可用),然后:
git clone https://gitcode.com/GitHub_Trending/fa/facefusion cd facefusion pip install -r requirements.txt python facefusion.py run启动后会自动拉起 Gradio 网页界面,终端会打印访问地址。首次运行或首次切换模型时,程序会自动下载对应模型文件,不用手动去下。界面里调过的参数会持久化到项目根目录的 facefusion.ini,重启不丢。
第一次拿到结果:界面与最小输入要求
界面分四块:SOURCE(源)、TARGET(目标)、PROCESSORS(处理流程)、OUTPUT(输出)。第一次跑只需满足三个条件:
- 源图必须是一张只含一张脸的图片——代码里换脸模块会检测「是否恰好一张脸」,多人图会直接报错退出;
- 目标可以是图片(jpg/png 等)或视频(mp4/mov/mkv 等);
- 处理流程勾选
face_swapper,输出目录填一个存在的文件夹,点 Run。
跑完后到 Output 区域点下载,或在预览窗口看中间帧。命令行党可以直接用headless-run,跳过界面:
python facefusion.py headless-run -s source.jpg -t target.mp4 -o output/注意-o后面是目录,扩展名必须和目标一致,否则会被拒绝。
逐个功能定参数
换脸模块:决定脸换得像不像、糊不糊
先解决什么:换脸是整条流水线的起点,源脸被缩放塞进模型输入分辨率,换完的脸普遍偏糊、边缘生硬。不把这步调好,后面增强和掩膜都是在补救模糊。
在哪调:处理流程勾选face_swapper后出现三个控件:模型、pixel boost(输入分辨率)、weight。实现在 facefusion/processors/modules/face_swapper/。
推荐值:
- 模型先选
inswapper_128,稳定、速度快;追求纹理细节换hyperswap_1a_256(这也是代码里的默认值)。 - pixel boost 默认
128x128,目标视频是 1080p 以上时升到512x512。低于默认意味着脸在模型里只有 128 像素,五官细节必然丢失;升到 1024 计算量涨好几倍,除非出片否则不值。 - weight 建议设在 0.5-0.7。低于 0.5 会残留太多目标脸的五官特征,看起来像「两张脸叠印」;高于 0.9 源脸的肤色、脸型会原样搬过来,和身体、光影接不上。
怎么验收:放大预览帧对比源图与结果的下颌线走向和肤色。出现双边缘(脸的轮廓有两条线)、明显色偏或「贴纸感」,先把 weight 压回 0.5,再去看掩膜的 blur。
增强模块:把糊脸补清晰
先解决什么:换完的脸分辨率不足、毛孔和发丝发糊。增强模块用人脸修复模型做超分和细节重建,不做这步,1080p 以上出片脸部会明显虚。
在哪调:处理流程勾选face_enhancer,出现模型、blend、weight 三个控件。
推荐值:
- 模型选
gfpgan_1.4(代码默认值),通用性最好;codeformer修复感更重,适合烂画质救场。 - blend 建议设在 70-90。blend 是增强帧与原始帧的混合比例:低于 70 提升肉眼几乎看不出;高于 90 皮肤会被过度平滑,出现油亮的「塑料感」。
- weight 保持 0.5 附近即可,它控制增强模型对结果的信任度,日常不用动。
怎么验收:放大看眼睛、嘴唇、发际线这三个高对比区。皮肤纹理清晰但不反光就是合格;一旦脸部出现磨皮味或高光变糊,把 blend 往回压到 70,而不是继续加。
掩膜模块:把边界揉自然
先解决什么:掩膜决定「只替换脸的哪一块」以及边缘羽化程度。边界锯齿、耳朵头发残留、背景元素泄漏,基本都是这里的问题。核心实现在 facefusion/face_masker.py,blur 通过高斯模糊对掩膜边缘做柔化。
在哪调:界面 Face Masker 区域,含掩膜类型、遮挡模型(face_occluder_model)、blur 滑块、四边 padding。
推荐值:
face_mask_types同时勾选box和occlusion。只勾 box 是最省事的默认,但方盒边缘会在发际线、耳朵处露出硬边;加上 occlusion 用分割模型把脸抠准。face_mask_blur设 0.5-1.0(默认 0.3)。低于 0.3 边缘基本是硬切,放大看会有锯齿;拉到 1.0 附近边缘过度发虚,脸和背景交界发雾。face_occluder_model从xseg_1起步(默认值),边界不稳再升xseg_2。- 目标里有多人且选错时,人脸选择默认就是 reference 模式,
reference_face_distance建议 0.2-0.4:低于 0.2 只认几乎同位置的脸,转头就丢;高于 0.5 会误框旁边的人。
怎么验收:检查脸与背景的交界,要无锯齿、无光晕;再看原图的头发、耳朵、衣领有没有被替换进输出。有泄漏就升遮挡模型,有光晕就调高 blur。
照抄即用:三套场景组合
| 用途 | 推荐组合 | 为什么这么搭 |
|---|---|---|
| 短视频快出 | inswapper_128(pixel boost 256x256)+gfpgan_1.4blend 80,blur 0.5,output_video_preset用veryfast、quality 80 | 128 模型 + 快编码,几分钟出片,画质够平台投放 |
| 精修出片 | hyperswap_1a_256(pixel boost 512x512)+gfpgan_1.4blend 70-90,blur 0.5-1.0,quality 85-90,preset 降到fast | 256 输入模型纹理更细,高一点编码质量保皮肤细节 |
| 批量长视频 | xseg_1掩膜 +video_memory_strategy设strict,thread count 取 CPU 核数 50-75% | strict 策略每阶段释放模型内存,长视频不爆显存,优先保吞吐 |
进阶选项:档位与执行环境
遮挡模型分档:xseg_1最快,预览和批量够用;xseg_2精度与速度折中,日常精修选它;xseg_3精度最高,出片级再用;选many会把三个模型都跑一遍取交集,边界最稳但最慢,只给关键素材。
执行后端在execution_providers配置:NVIDIA 卡优先tensorrt(首次构建引擎缓存慢,之后走缓存明显加速),其次cuda;Windows 上directml是稳妥选择,没有 GPU 就落到cpu。execution_thread_count范围 1-32,一般设为物理核数的 50-75%,开满反而因上下文切换变慢。处理 10 分钟以上长视频时把video_memory_strategy设为strict(代码默认即 strict),它会在每个处理阶段清空推理池,代价是阶段间重复加载模型。
不对劲时查这里
- 视频里人脸闪跳、忽而这张脸忽而那张脸→ 跟踪置信度不够或多人场景选错脸 → 把
face_tracker_score从 0 提到 0.05-0.2,或保持 reference 选择模式并微调reference_face_distance - 边界锯齿、原头发或背景泄漏进结果→ 掩膜没盖全或羽化不足 →
box+occlusion双开,face_mask_blur提到 0.5-1.0,遮挡模型升到xseg_2或xseg_3 - 换完的脸发塑料、皮肤发亮→ blend 过高导致过度修复 →
face_enhancer_blend压到 70,或换gpen_bfr_512对比效果 - 脸部细节糊、放大全是马赛克→ 模型输入分辨率太低 →
face_swapper_pixel_boost升到512x512再跑 - 长视频跑到一半显存溢出→ 帧缓冲占满显存 →
video_memory_strategy改strict,同时确认 preset 别选veryslow这类慢编码
收尾
按「先跑通换脸 → 再叠增强 → 最后抠掩膜边界」的顺序练手,每一层只动一个参数,用预览帧验证后再进下一层。调好的组合写进 facefusion.ini 存成预设,下次直接加载。
【免费下载链接】facefusionIndustry leading face manipulation platform项目地址: https://gitcode.com/GitHub_Trending/fa/facefusion
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考