FaceFusion 保姆级教程:本地部署视频换脸,10 分钟跑通第一次换脸
【免费下载链接】facefusionIndustry leading face manipulation platform项目地址: https://gitcode.com/GitHub_Trending/fa/facefusion
FaceFusion 是可本地部署的视频换脸开源项目:给一张源脸照片加一段目标视频,它把视频里的人脸替换成源脸,还能顺带做增强、年龄修改。适合会基础命令行的人,最低环境是 Python 3.10 以上加 ffmpeg,有 NVIDIA 显卡更好,纯 CPU 也能跑。
10 分钟跑通第一次换脸
结论:四步命令,看到输出 mp4 且第一帧脸变了就算部署成功。FaceFusion 的本质是一条处理器流水线——每一帧先过人脸检测,再依次进你勾选的模块,最后合成输出,所以"跑通"意味着检测和交换两个环节都通了。
依次执行(install.py 启动时会自己检查 Python 版本,并自动下载全部模型权重,不用手动找文件):
git clone https://gitcode.com/GitHub_Trending/fa/facefusion cd facefusion python -m pip install -r requirements.txt python install.pyinstall.py跑完后,终端滚完下载进度、无红色报错即为成功。然后跑第一次换脸:
python facefusion.py run \ --source-path 照片.jpg \ --target-path 视频.mp4 \ --output-path 输出.mp4看到输出.mp4生成、人脸已经是源脸,部署完成。
换脸模型怎么选:先跑通用 inswapper_128
inswapper_128是默认款,快、稳,第一次跑务必选它。完整模型清单在 face_swapper 的 choices.py:blendswap_256、ghost_1_256、hyperswap_1a_256、simswap_256、uniface_256等都属于更大的交换模型,人脸细节更足,但显存占用和处理时间明显上升。
建议路径:先用inswapper_128确认流程无误,觉得细节不够再换大模型。指定模型加一个参数即可:
python facefusion.py run \ --source-path 照片.jpg \ --target-path 视频.mp4 \ --processors face_swapper \ --face-swapper-model blendswap_256 \ --output-path 输出.mp4显存小于 8G 的机器,大模型搭配512x512以上的工作分辨率很容易爆显存,换模型前先想好这一档怎么退(见后文)。
把功能串成流水线:换脸 + 增强 + 年龄修改
多个能力靠--processors逗号分隔串起来,执行顺序就是你写的顺序。增强解决"脸清不清",年龄修改解决"脸像多大":age_modifier的--age-modifier-direction取值 -100 到 100,30变年轻、-30变年长。注意它是"整体偏移",不重排五官,幅度超过 50 后往往会开始不自然。
一条"换脸 + 增强 + 轻微变年轻"的最小流水线:
python facefusion.py run \ --processors face_swapper,face_enhancer,age_modifier \ --face-swapper-model inswapper_128 \ --face-enhancer-model gfpgan_1.4 \ --age-modifier-direction 30 \ --source-path 照片.jpg \ --target-path 视频.mp4 \ --output-path 输出.mp4增强模型里gfpgan_1.4是常用起点,codeformer、restoreformer_plus_plus也在可选清单里,可按需替换。
最值得动的 5 个参数:附推荐值
调参主战场是 facefusion.ini,ini 里的每个键都有对应命令行参数,改 ini 或传 CLI 效果相同。
- face_swapper_pixel_boost:交换模型的工作分辨率 → 128x128 到 1024x1024 六档 → 推荐 256x256 起步 → 提到 512x512 细节更锐但速度约降一半,1024x1024 显存压力大
- face_detector_score:人脸检测置信度阈值(0~1)→ 推荐 0.5~0.7 → 调高会漏掉侧面、遮挡的小脸,调低到 0.3 会把背景里的"鬼脸"也框进来
- face_mask_blur:换脸边缘羽化程度(0~1)→ 推荐 0.2~0.4 → 低于 0.1 边缘生硬像贴片,高于 0.5 额头边界发糊
- video_memory_strategy:内存占用策略 → strict / moderate / tolerant 三档 → 1080p 以上建议 strict → tolerant 最快但吃显存,strict 会反复重载帧
- output_video_preset:ffmpeg 编码速度档位 → ultrafast 到 veryslow 共 9 档 → 交付用 medium、快速预览用 fast → 同画质下越慢文件越小
🔧 改完参数后,长视频别直接跑全片,用--target-frame-amount 100只处理前 100 帧验证效果,成本最低。
显存爆了怎么退档
结论:按"策略 → 分辨率 → 帧范围"三级退,每退一级跑一次短片段确认。
- 先把
video_memory_strategy切到strict(或加参数--video-memory-strategy strict),这是收益最大的一步; - 还爆就把
face_swapper_pixel_boost退回256x256(--face-swapper-pixel-boost 256x256); - 长视频处理到一半卡死,先用
--target-frame-amount 200只跑部分帧测试,定位是某段画面还是整体超限。
CPU 机器另有一档:execution_providers改成cpu,execution_thread_count设到物理核心数附近即可,别盲目开满。
脸飘、贴片感、输出糊:排查清单
现象 1:一跑就提示模型文件缺失原因:install.py没跑完或下载中断,模型缓存不全。 解法:重跑python install.py,或执行python facefusion.py force-download强制补齐。
现象 2:人脸边缘有"贴上去"的感觉原因:检测框贴边、mask 羽化不足。 解法:face_detector_margin从 0 提到 20,face_mask_blur提到 0.3。
现象 3:整段视频脸在飘、中途换脸原因:跟踪阈值太松,远处或模糊的脸也被锁定。 解法:face_tracker_score从 0.5 降到 0.3。
现象 4:输出视频比原片糊原因:output_video_quality或output_video_scale被调低了。 解法:quality 保持 90 以上、scale 用 1.0,并先确认源视频本身分辨率够。
改代码或模型配置前想验证行为,tests/ 目录里每个模块都有对应的test_cli_*.py用例,跑一遍能立刻发现回归。
完整动作链:git clone→python install.py下模型 →run命令跑通第一次换脸 → 用face_swapper_pixel_boost、face_mask_blur、video_memory_strategy三个参数找画质与显存的平衡 → 出错按上面四条清单对号入座。这条链走顺之后,剩下的事就是换更重的交换模型、拼更长的处理器流水线了。
【免费下载链接】facefusionIndustry leading face manipulation platform项目地址: https://gitcode.com/GitHub_Trending/fa/facefusion
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考