FaceFusionSharp OnnxRuntime版 视频换脸

💡 原文中文,约7200字,阅读约需18分钟。
📝

内容提要

这篇文章介绍了C#版Facefusion项目,可以将用户的脸与世界融为一体。项目包括人脸检测、关键点获取、特征值获取、替换和增强等功能。文章提供了代码和使用说明。

🔎

延伸解读

模型分工与处理流程

文章中的代码显示,换脸流程由五个ONNX模型串联完成:Yolov8Face负责检测人脸,Face68Landmarks提取68个关键点,FaceEmbdding获取源脸特征,SwapFace执行替换,FaceEnhance增强画质。每个模型对应独立文件,在窗体加载时初始化。这种模块化设计让读者能清晰理解各环节作用,也便于单独调试或替换模型。

视频处理与实时预览机制

程序通过OpenCV的VideoCapture逐帧读取目标视频,对每帧检测人脸并替换,再水平拼接原图与结果图进行对比显示。用户可勾选是否保存处理后的视频,保存时使用VideoWriter输出为out.mp4。预览窗口支持按ESC退出,处理过程在独立线程中运行,避免界面卡死。

使用限制与注意事项

代码中明确只处理单张人脸:若源头像检测到多张脸,默认使用第一张并提示;目标视频中若某帧未检测到人脸则跳过该帧。此外,源头像必须包含人脸,否则无法继续。这些限制意味着该示例适用于单人脸场景,复杂多脸视频需自行扩展逻辑。

❓

Q&A

FaceFusionSharp项目的主要功能是什么?

FaceFusionSharp项目的主要功能包括人脸检测、关键点获取、特征值获取、替换和增强。

如何选择头像和目标视频进行处理?

用户可以通过点击按钮选择头像和目标视频,程序会读取并显示所选文件。

FaceFusionSharp使用了哪些模型?

该项目使用了Yolov8Face、Face68Landmarks、FaceEmbdding、SwapFace和FaceEnhance等模型。

处理后的视频可以保存吗?

用户可以选择是否保存处理后的视频,程序提供了相应的选项。

如何处理头像中的多张人脸?

如果头像中检测到多张人脸,程序默认使用第一张人脸进行处理。

FaceFusionSharp项目是用什么语言开发的?

FaceFusionSharp项目是用C#语言开发的。

🏷️

标签

➡️

继续阅读