ComfyUI-FirstOrderMM 插件:让照片动起来的神奇工具
1. 插件简介
插件原地址: https://github.com/FuouM/ComfyUI-FirstOrderMM
这个插件就像是给静态照片施魔法的工具!它能让你把一张静态的人像照片变成会动的视频。简单来说,就是你给它一张人脸照片,再给它一个驱动视频(比如一个人在摇头、眨眼、说话的视频),它就能让照片里的人按照驱动视频的动作来动起来。
能带来什么效果:
- 让静态人像照片动起来,仿佛真的在说话
- 制作面部表情动画,比如眨眼、微笑、皱眉等
- 创造虚拟人物视频内容
- 实现面部动作迁移,让A的表情动作出现在B的脸上
这个插件支持多种不同的算法模型,每种都有自己的特点和用途。
2. 如何安装
基础安装步骤:
- 打开你的 ComfyUI 安装目录
- 找到
custom_nodes文件夹 - 在文件夹里打开命令行(按住Shift右键选择"在此处打开命令窗口")
- 输入以下命令:
git clone https://github.com/FuouM/ComfyUI-FirstOrderMM.git - 安装依赖包:
pip install -r requirements.txt
可选安装(增强功能):
如果你想使用"找最佳帧"功能,还需要安装:
pip install face-alignment
模型文件下载:
你需要下载对应的模型文件放到 checkpoints 文件夹里。具体的模型下载地址在插件的GitHub页面都有详细说明。
3. 节点详解
3.1 FOMM 节点(第一代运动模型)
这是基础的面部动画节点,就像是最经典的魔法师,虽然不是最新的,但是效果稳定可靠。
3.1.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
| :— | :— | :— | :— | :— | :— | :— |
| 相对运动 | relative_movement | True/False | True | 让动画保持原照片的脸型比例,不会把脸拉变形 | 使用相对关键点位移,继承视频对象的比例 | 想让明星照片动起来但还是那张脸,就开启;想完全模仿驱动视频的脸型就关闭 |
| 相对雅可比 | relative_jacobian | True/False | True | 防止脸部严重变形,让动画更自然 | 只在相对运动开启时生效,避免面部重度变形 | 如果发现生成的脸很吓人很扭曲,一定要开启这个 |
| 适应动作幅度 | adapt_movement_scale | True/False | True | 让源照片的脸适应驱动视频的动作幅度 | 如果关闭,会严重扭曲源脸以匹配驱动脸 | 开启后动作会更自然,关闭后可能脸会变得很夸张 |
| 寻找最佳帧 | find_best_frame | True/False | False | 自动找到驱动视频中最像源照片的那一帧作为起始点 | 寻找最匹配源图像的驱动帧,将批次分成两半 | 如果效果不理想可以试试开启,但可能会让结果变得不稳定 |
| 混合比例 | blend_scale | 0.0-2.0 | 1.0 | 控制图像混合的程度,作者也不确定具体作用 | 混合比例参数,保持默认值效果最好 | 一般不用动,保持1.0就行 |
| 使用源分割 | use_source_seg | True/False | False | 选择用源图像还是目标图像的分割信息 | 是否使用源图像的分割而不是目标的分割 | 如果目标分割区域有问题可以试试开启 |
| 硬边缘 | hard_edges | True/False | False | 让分割边缘变得锐利而不是柔和 | 是否使硬边缘而不是羽化边缘 | 想要更清晰的边缘就开启,想要更自然的融合就关闭 |
| 使用面部解析 | use_face_parser | True/False | False | 清理背景噪声,让脸部更干净 | 对于基于分割的模型,帮助清理残留背景 | 如果生成的图像背景有杂质,可以试试开启 |
| 可视化透明度 | viz_alpha | 0.0-1.0 | 1.0 | 控制分割可视化的透明度 | 可视化中分割的不透明度 | 用于调试查看分割效果,一般用户不需要调整 |
3.2 Part Swap 节点(部分交换模型)
这个节点就像是一个更聪明的魔法师,它能更好地理解人脸的不同部位,让动画效果更加精细。
3.2.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
| :— | :— | :— | :— | :— | :— | :— |
| 预测模式 | predict_mode | relative/standard/avd | relative | 选择不同的预测算法,就像选择不同的魔法咒语 | 可以是relative、standard或avd模式 | relative最稳定,standard变化更大,avd效果好但可能抖动 |
| 寻找最佳帧 | find_best_frame | True/False | False | 和FOMM一样,自动找最匹配的起始帧 | 与FOMM相同的最佳帧寻找功能 | 效果不满意时可以试试开启 |
3.3 Articulated 节点(关节动画模型)
这个节点就像是专业的动画师,特别擅长处理复杂的人体动作和姿态变化。
3.3.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
| :— | :— | :— | :— | :— | :— | :— |
| 模型名称 | model_name | vox/celebvhq | vox | 选择训练好的模型,就像选择不同的画师风格 | 可选择vox或celebvhq模型 | vox适合一般场景,celebvhq适合高质量人脸 |
| 使用相对模式 | use_relative | True/False | True | 使用相对还是绝对坐标模式 | 是否使用相对模式而不是绝对模式 | 相对模式更稳定,绝对模式变化更大 |
| 相对运动 | relative_movement | True/False | True | 保持原脸型比例的相对运动 | 相对关键点位移 | 和FOMM的相对运动类似 |
| 相对雅可比 | relative_jacobian | True/False | True | 防止脸部过度变形 | 相对雅可比矩阵 | 和FOMM的相对雅可比类似 |
| 适应动作幅度 | adapt_movement_scale | True/False | True | 根据关键点调整动作幅度 | 基于关键点凸包适应运动尺度 | 让动作更自然适配源图像 |
| 寻找最佳帧 | find_best_frame | True/False | False | 自动寻找最佳起始帧 | 与FOMM相同的功能 | 不满意时可以试试 |
3.4 Spline 节点(薄板样条模型)
这个节点就像是一个精密的雕刻师,能够更细致地控制面部的每个细节变化。
3.4.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
| :— | :— | :— | :— | :— | :— | :— |
| 模型名称 | model_name | vox/celebvhq | vox | 选择预训练模型 | 在vox和celebvhq数据集上训练的模型 | vox通用,celebvhq更适合高质量人脸 |
| 使用相对模式 | use_relative | True/False | True | 使用相对还是绝对关键点坐标 | 使用相对或绝对关键点坐标 | 相对模式更稳定自然 |
| 适应缩放 | adapt_scale | True/False | True | 基于关键点自动调整缩放 | 基于关键点凸包适应运动尺度 | 让动作幅度更合理 |
| 寻找最佳帧 | find_best_frame | True/False | False | 自动寻找最佳匹配帧 | 与其他模型相同的功能 | 效果不理想时尝试开启 |
| 最大像素数 | max_num_pixels | 整数 | 默认值 | 控制同时处理的像素数量,避免显存不足 | 并行处理的像素数量 | 如果显存不够就调小这个值 |
3.5 MRFA 节点(运动细化模型)
这个节点就像是一个专业的修图师,能够对动画进行细致的优化和调整。
3.5.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
| :— | :— | :— | :— | :— | :— | :— |
| 模型名称 | model_name | vox/celebvhq | vox | 选择预训练模型 | 在不同数据集上训练的模型 | 根据你的图像类型选择合适的模型 |
| 使用相对模式 | use_relative | True/False | True | 使用相对坐标模式 | 是否使用相对模式 | 相对模式通常效果更好 |
| 相对运动 | relative_movement | True/False | True | 保持原图像比例的相对运动 | 相对关键点位移 | 保持脸型不变形 |
| 相对雅可比 | relative_jacobian | True/False | True | 防止面部严重变形 | 相对雅可比矩阵 | 让动画更自然 |
| 适应动作幅度 | adapt_movement_scale | True/False | True | 自动调整动作幅度 | 适应运动尺度 | 让动作更协调 |
3.6 FSRT 节点(面部场景表示模型)
这个节点就像是最新一代的AI魔法师,运行时间最长但效果最好,能够处理最复杂的面部动画。
3.6.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
| :— | :— | :— | :— | :— | :— | :— |
| 模型名称 | model_name | vox256/vox256_2Source | vox256 | 选择模型版本 | 在vox256和vox256+celebhq数据集上训练 | vox256通用,vox256_2Source质量更高 |
| 使用相对模式 | use_relative | True/False | True | 使用相对还是绝对关键点坐标 | 使用相对或绝对关键点坐标 | 相对模式更稳定 |
| 适应缩放 | adapt_scale | True/False | True | 基于关键点自动调整缩放 | 基于关键点凸包适应运动尺度 | 让动作幅度更合理 |
| 寻找最佳帧 | find_best_frame | True/False | False | 自动寻找最佳匹配帧 | 寻找最匹配的驱动帧 | 不满意时可以试试 |
| 最大像素数 | max_num_pixels | 整数 | 默认值 | 控制并行处理的像素数量 | 并行处理的像素数量 | 显存不足时调小 |
4. 使用技巧和建议
4.1 选择合适的模型
- FOMM: 最基础但稳定,适合新手入门
- Part Swap: 适合需要精细控制的场景
- Articulated: 适合处理复杂动作
- Spline: 细节处理能力强
- MRFA: 动画优化效果好
- FSRT: 最新技术,效果最好但耗时最长
4.2 参数调优建议
- 新手建议: 所有相对模式参数都开启(relative_movement、relative_jacobian、adapt_movement_scale)
- 显存不足: 调小max_num_pixels参数
- 效果不理想: 尝试开启find_best_frame
- 边缘问题: 调整hard_edges和use_source_seg参数
4.3 输入素材要求
- 源图像: 清晰的正面人脸照片效果最好
- 驱动视频: 动作清晰,光线充足的视频
- 分辨率: 建议256x256或512x512
5. 常见问题解答
Q1: 为什么生成的视频很模糊?
A: 可能是源图像分辨率太低,或者选择的模型不适合。建议使用高分辨率的源图像,并尝试不同的模型。
Q2: 生成的脸部严重变形怎么办?
A: 确保开启relative_movement和relative_jacobian参数,这两个参数可以防止脸部过度变形。
Q3: 显存不足怎么办?
A: 调小max_num_pixels参数,或者使用更小的输入图像尺寸。
Q4: 不同模型的效果差别很大吗?
A: 是的,每个模型都有自己的特点。FOMM最稳定,FSRT效果最好但最慢,建议都试试看哪个最适合你的需求。
Q5: 如何获得最好的效果?
A: 使用高质量的源图像和驱动视频,选择合适的模型,并耐心调试参数。通常相对模式参数都开启会有比较好的效果。
6. 总结
ComfyUI-FirstOrderMM是一个功能强大的人脸动画插件,它提供了多种不同的算法选择,能够满足从简单到复杂的各种需求。虽然参数较多,但只要理解了每个参数的基本作用,就能够制作出令人满意的动画效果。
建议新手从FOMM节点开始,熟悉基本操作后再尝试其他更高级的模型。记住,好的效果需要好的素材和耐心的调试,不要急于求成。
这个插件最大的魅力在于它能让静态的照片"活"起来,无论是制作有趣的表情包,还是创作虚拟人物内容,都能带来意想不到的效果。随着技术的不断发展,相信这类工具会越来越好用,为我们的创作带来更多可能性。