人脸映射是 Deep-Live-Cam 中的一项强大功能,它允许用户在人脸交换过程中精确控制将哪些源人脸应用于特定目标人脸。人脸映射并非将单一源人脸应用于所有检测到的人脸或仅应用于第一个检测到的人脸,而是实现了源人脸与目标人脸之间的一对一映射。
有关一般人脸交换过程的信息,请参阅人脸处理。有关不带人脸映射的图像/视频处理的信息,请参阅图像处理和视频处理。
人脸映射通过允许用户来为面部交换过程增加一层控制,用户可以
此功能在处理包含多个人物的内容时尤其有用,因为它确保了正确的人脸源应用于每个目标人脸。
来源:modules/ui.py260-272 modules/globals.py
要使用人脸映射,请激活主界面中的“映射人脸”开关。此开关位于主窗口的左侧列中,“人脸增强器”选项的下方。
启用后,Deep-Live-Cam 将在点击“开始”或“实时”时分析目标图像或视频,以在继续人脸交换过程之前识别所有存在的人脸。
图示:人脸映射激活流程
来源:modules/ui.py260-272 modules/ui.py399-414
根据您处理的是图像、视频还是网络摄像头,工作流程略有不同。
图示:不同输入类型的人脸映射工作流程
来源:modules/ui.py394-414 modules/ui.py417-485 modules/ui.py963-1206
人脸映射界面在系统分析目标人脸后会显示为一个弹出窗口。它会显示目标中的所有人脸,并允许您为每个人脸选择一个源人脸。
对于图像和视频,系统会自动检测人脸并在映射用户界面中显示它们
对于网络摄像头模式,您需要手动创建映射
图示:人脸映射用户界面类结构
来源:modules/ui.py417-485 modules/ui.py963-1206
人脸映射功能通过多个协同工作的组件实现。
人脸映射数据存储在以下结构中
modules.globals.source_target_map:包含映射信息的字典列表modules.globals.simple_map:在处理过程中使用的简化表示每个映射条目包含
图示:人脸映射数据结构
来源:modules/face_analyser.py41-62 modules/ui.py73-78
人脸映射依赖 InsightFace 库进行人脸检测和特征提取
get_face_analyser():初始化人脸分析模型get_many_faces():检测帧中的所有人脸get_unique_faces_from_target_image():提取目标图像中的人脸以进行映射get_unique_faces_from_target_video():使用聚类分析从视频中提取唯一的人脸系统存储每个映射人脸的视觉数据(裁剪的人脸)和人脸检测元数据(地标、边界框、嵌入)。
来源:modules/face_analyser.py16-40 modules/face_analyser.py76-189
对于视频,Deep-Live-Cam 使用聚类分析来识别所有帧中的唯一人脸
图示:视频人脸聚类过程
来源:modules/cluster_analysis.py7-32 modules/face_analyser.py97-169
启用人脸映射进行处理时,系统将使用以下工作流程
对于图像
对于视频
对于网络摄像头
图示:带映射的人脸交换过程
来源:modules/processors/frame/face_swapper.py101-210
为了获得最佳的人脸映射效果
常见问题和解决方案
| 问题 | 解决方案 |
|---|---|
| “未在目标中找到人脸” | 确保目标图像/视频中的人脸清晰可见 |
| “上次上传的人脸未能检测到” | 尝试使用另一张包含更清晰、正面人脸的源图像 |
| 视频中错误的人脸匹配 | 为有问题的人脸创建更具体的映射 |
| 交换质量差 | 确保源人脸和目标人脸具有相似的朝向和光照条件 |
| 大量人脸处理缓慢 | 考虑禁用“多人脸”选项以加快处理速度 |
来源:modules/ui.py412 modules/ui.py534 modules/ui.py1153 modules/ui.py1205
面部映射与 Deep-Live-Cam 的其他功能协同工作
有关这些配套功能的详细信息,请参阅 面部处理。
来源:modules/ui.py230-254 modules/processors/frame/face_swapper.py70-98