LivePortrait 工作流 | 面部表情迁移

这个 ComfyUI LivePortrait 工作流程通过集成高效的 LivePortrait 框架使静态肖像图像栩栩如生。它使您能够创建高度逼真的动画视频,完全控制面部表情、头部运动以及眼睛和嘴巴等细节。

想要运行这个应用吗?

  • 帮助您专注于艺术创作,而非红色错误
  • 由猫目社区来维护AIGC安装部署的复杂性
  • 无需手动设置
  • 具有惊艳的视觉效果
  • 平台整合上万张高端显卡,一键启动



应用介绍

LivePortrait 工作流是一种强大的工具,专门用于将静态肖像图像转换为逼真的动画视频。这个工作流基于 LivePortrait 框架,利用先进的技术将源图像的外观与驱动视频中的动作和表情结合起来,从而生成生动的肖像动画。

工作流


什么是 LivePortrait?

LivePortrait 是由快手科技开发的高效肖像动画框架,旨在从单一来源图像合成逼真的视频。它使用来源图像作为外观参考,并从驱动视频、音频、文本或生成中派生运动(面部表情和头部姿势)。

与主流的基于扩散的方法不同,LivePortrait 探索并扩展了基于隐式关键点的框架,以有效平衡计算效率和可控性。它专注于更好的泛化性、可控性和实用效率。即使与扩散方法相比,LivePortrait 也具有高生成质量,同时速度极快——在 RTX 4090 GPU 上使用 PyTorch 每帧约 12.8 毫秒。

更多详情,请访问 LivePortrait

LivePortrait 的工作原理

在高层次上,LivePortrait 以来源图像和驱动视频为输入。它从来源图像中提取外观,从驱动视频中提取运动。这些然后通过扭曲和生成模块结合起来,合成一个保留来源图像身份但遵循驱动视频运动和表情的动画肖像视频。

LivePortrait 的关键组件是:

  1. 外观特征提取器:从来源图像中编码身份和外观信息。
  2. 运动提取器:从驱动视频帧中提取运动特征(面部关键点)。
  3. 扭曲模块:使用提取的运动扭曲来源图像特征,使其与驱动姿势和表情对齐。
  4. 图像生成器:采用扭曲后的特征合成最终的逼真动画帧。
  5. 拼接和重定目标模块:可选地将生成的肖像拼接回原图,并允许控制特定的面部区域,如眼睛和嘴巴。

这些模块设计高效,并协同工作以实现高质量、可控的 LivePortrait 动画。



如何使用 ComfyUI LivePortrait

感谢 kijai 的 ComfyUI-LivePortraitKJ 节点和工作流程,在 ComfyUI 中创建逼真的肖像动画变得更加容易。以下是他的 ComfyUI LivePortrait 工作流程的关键组件和参数的细分。

在 ComfyUI 中使用 LivePortrait

1. 加载 Live Portrait 模型

  • 添加 "DownloadAndLoadLivePortraitModels" 节点
  • 设置精度为 auto 或 fp16 以获得最佳性能

2. 选择 LivePortrait 的人脸检测器

  • 可以在 "LivePortraitLoadCropper" (InsightFace) 和 "LivePortraitLoadMediaPipeCropper" 节点之间选择
  • InsightFace 更准确,但具有非商业许可证,而 MediaPipe 在 CPU 上更快,但准确性较低
  • 两者都输出一个 "cropper",用于检测和裁剪面部

3. 加载和预处理 LivePortrait 的源图像

  • 使用 "Load Image" 节点加载您的源肖像图像
  • 使用 "ImageResize" 节点将其调整为 512x512
  • 将调整大小的图像连接到 "LivePortraitCropper" 节点
  • 还将你选择的人脸检测器的 "cropper" 输出连接到该节点
  • "LivePortraitCropper" 节点中的关键参数

"dsize": 这设置了裁剪面部图像的输出分辨率

  • 默认值为 512,意味着面部将被裁剪到 512x512 像素
  • 更高的值将以更高的分辨率裁剪面部,但处理速度可能较慢
  • 更低的值将更快,但可能会丢失一些细节

"scale": 这控制了面部裁剪的放大程度

  • 默认值为 2.3,较高的值将更接近面部放大,较低的值将包括更多的头部/背景
  • 如果需要调整此值,以便裁剪包含整个面部和一些背景,但不要太多额外空间
  • 良好的面部裁剪对于运动转移的效果非常重要
  • 典型值范围为 1.8 至 2.5,具体取决于源图像的构图

"face_index": 如果图像中检测到多个面部,选择要裁剪的面部

  • 默认值为 0,选择第一个检测到的面部
  • 如果要选择图像中的其他面部,请增加此值
  • 检测到的面部根据 "face_index_order" 设置(默认值为从大到小)排序

"vx_ratio" 和 "vy_ratio"(可选):这些允许你垂直(vy)或水平(vx)偏移裁剪

  • 值范围为 -1 到 1
  • 例如,将 vy 设置为 0.1 将裁剪向上移动 10% 的帧大小
  • 如果自动裁剪稍有偏移,这可以帮助调整

"face_index_order": 设置了选择 face_index 时检测到的面部的排序方式

  • 默认值为 "large-small",按从大到小的面部排序
  • 也可以按从左到右、从上到下等排序
  • 这仅在图像中有多个面部时相关

4. 加载和预处理 LivePortrait 的驱动视频

  • 使用 "VHS_LoadVideo" 节点加载你的输出视频
  • 使用 "frame_load_cap" 调整 视频帧数
  • 使用 "GetImageSizeAndCount" 节点将视频帧调整为 480x480
  • 可以选择使用另一个 "LivePortraitCropper" 节点裁剪驱动视频帧

5. 应用 LivePortrait 的运动转移

  • 添加 "LivePortraitProcess" 节点
  • 将加载的管道、源图像裁剪信息、裁剪后的源图像和驱动帧连接到 "LivePortraitProcess" 节点
  • "LivePortraitProcess" 节点中的关键参数

"lip_zero": 启用时,如果唇部参数低于某个阈值,唇部参数将呗归零

  • 这可以帮助减少不自然的唇部运动并改善唇同步
  • 建议启用此功能,除非你特别希望保留所有唇部运动

"lip_zero_threshold": 启用 "lip_zero" 时设置归零唇部参数的阈值

  • 默认值为 0.03,较高的值将归零更多唇部运动,较低的值将保留更多
  • 如果你希望更改唇部运动的抑制程度,请调整此值

"stitching": 启用时,这将通过拼接过程将动画面部融合回原始图像

  • 这可以帮助在动画面部和背景之间创建更无缝的过渡
  • 建议启用此功能以获得最自然的结果

"delta_multiplier": 这通过一个乘数缩放运动参数

  • 默认值为 1.0,较高的值将夸大运动,较低的值将减少运动
  • 可以用于调整面部运动的整体强度
  • 典型值范围为 0.8 至 1.5,具体取决于所需效果

"mismatch_method": 这设置了工作流程如何处理源帧和驱动帧数量不匹配的情况

  • 选项有 "constant", "cycle", "mirror" 和 "cut"
  • "constant" 将保持在最后一帧,"cycle" 将循环,"mirror" 将前后播放,"cut" 将停止
  • 默认值为 "constant",如果希望源视频比驱动视频长或短时有不同行为,请更改此值

"relative_motion_mode": 这控制了如何将驱动视频的运动转移到源图像

  • 选项有 "relative", "source_video_smoothed", "relative_rotation_only", "single_frame" 和 "off"
  • 默认值为 "relative",使用相对运动转移
  • "off" 将完全禁用运动转移
  • 试验不同的模式,看看哪个模式最适合你的特定使用场景

"driving_smooth_observation_variance": 这控制了使用 "source_video_smoothed" 运动模式时驱动运动的平滑度

  • 较高的值将更平滑地处理运动,较低的值将保留更多原始运动
  • 默认值为 0.000003,如果希望更改传输运动的平滑度,请调整此值

请注意,Insightface 模型已集成在此 ComfyUI LivePortrait 工作流程中,Insightface 模型许可证性质为非商业用途。



总结

LivePortrait 工作流通过综合源图像的外观和驱动视频中的动作,提供了一种高效且可控的方式来创建生动的肖像动画。其模块化设计和灵活的参数设置使得生成的动画既自然又具有高度的定制性。快来猫目(https://maomu.com/)网站体验吧!