【版权严正声明】
本文系作者 [编程界的小学生] 原创,并拥有完整、独立的著作权。
未经本人 书面授权 ,任何单位、平台或个人, 严禁 以任何形式(包括但不限于转载、复制、摘编、修改、链接、转贴、建立镜像等)使用本文的全部或部分内容。
任何无视本声明的侵权行为,本人将依据《中华人民共和国著作权法》等相关法律法规,采取一切必要的法律手段,追究其侵权责任,要求其 立即停止侵权、赔礼道歉、消除影响,并赔偿因此造成的一切经济损失及维权成本(包括但不限于律师费、诉讼费、公证费等)。
侵权必究,切勿以身试法!
1. 插件简介
插件地址: https://github.com/kijai/ComfyUI-LivePortraitKJ
这个插件就像一个神奇的换脸魔法师!它能让静态照片里的人物"活"起来,跟着视频里的人做表情和动作。简单来说:
你有一张照片(比如你朋友的自拍)
你有一段视频(比如你做鬼脸的视频)
插件就能让照片里的朋友跟着你做鬼脸!
主要功能:
2. 如何安装
方法一:通过ComfyUI管理器安装(推荐)
打开ComfyUI
点击"Manager"按钮
搜索"LivePortraitKJ"
点击安装
方法二:手动安装
打开ComfyUI的安装文件夹
进入custom_nodes文件夹
在这里打开命令行,输入:
git clone https://github.com/kijai/ComfyUI-LivePortraitKJ.git
重启ComfyUI
注意: 插件会自动下载需要的模型文件,第一次使用时会比较慢。
3. 节点详细解析
本插件总共包含9个节点,本教程将逐一详细解析所有节点。
3.1 DownloadAndLoadLivePortraitModels 节点
这个节点是干嘛的? 这就像一个"模型管家",负责下载和加载所有需要的AI模型。就像你要做菜前先准备所有食材一样,这个节点帮你准备好所有的"AI食材"。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
precision | precision | fp16/fp32/auto | auto | 就像画画时选择粗笔还是细笔,影响效果和速度 | 控制模型计算精度,fp16更快但可能不够准确,fp32更准确但更慢 | 一般选auto让系统自动决定,显卡好选fp16,显卡差选fp32 |
mode | mode | human/animal | human | 选择要处理人脸还是动物脸 | 决定加载人类面部模型还是动物面部模型 | 处理人就选human,处理猫狗等动物选animal |
3.2 LivePortraitProcess 节点
这个节点是干嘛的? 这是整个插件的"大脑",负责把照片和视频结合起来,让照片里的人跟着视频做动作。就像一个导演,指挥演员(照片)按照剧本(视频)来表演。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
pipeline | pipeline | LIVEPORTRAITPIPE | - | 接收上一个节点的模型数据 | 从模型加载节点接收的处理管道 | 直接连接DownloadAndLoadLivePortraitModels节点的输出 |
crop_info | crop_info | CROPINFO | - | 接收裁剪信息,告诉系统脸在哪里 | 包含面部检测和裁剪的相关信息 | 连接Cropper节点的输出 |
source_image | source_image | IMAGE | - | 要被"操控"的照片 | 源图像,即要进行面部驱动的目标图像 | 上传一张清晰的人脸照片 |
driving_images | driving_images | IMAGE | - | "指挥官"视频帧,告诉照片怎么动 | 驱动图像序列,提供面部动作和表情 | 上传视频帧或多张表情照片 |
lip_zero | lip_zero | true/false | false | 是否让嘴巴保持不动 | 是否将嘴部运动归零 | 想让人物不说话时开启 |
lip_zero_threshold | lip_zero_threshold | 0.001-4.0 | 0.03 | 嘴巴动作的敏感度调节 | 嘴部运动检测的阈值 | 数值越小越敏感,越容易检测到嘴部动作 |
stitching | stitching | true/false | true | 是否进行边缘融合,让效果更自然 | 是否启用图像拼接功能 | 建议开启,让换脸效果更自然 |
delta_multiplier | delta_multiplier | -100.0-100.0 | 1.0 | 动作幅度放大器 | 运动变化的倍数调节 | 想要夸张表情设置大于1,想要微妙表情设置小于1 |
mismatch_method | mismatch_method | constant/cycle/mirror/cut | constant | 当照片数量和视频帧数不匹配时的处理方式 | 处理源图像和驱动图像数量不匹配的策略 | constant重复最后一张,cycle循环播放,mirror镜像播放 |
relative_motion_mode | relative_motion_mode | relative/source_video_smoothed/relative_rotation_only/single_frame/off | relative | 动作跟踪模式 | 相对运动模式的选择 | relative最自然,single_frame适合单张照片 |
driving_smooth_observation_variance | driving_smooth_observation_variance | 1e-11-1e-2 | 3e-6 | 动作平滑度调节 | 驱动序列平滑处理的观测方差 | 数值越小动作越平滑,但可能丢失细节 |
opt_retargeting_info | opt_retargeting_info | RETARGETINGINFO | None | 可选的精细控制信息 | 可选的重定向信息,用于精确控制 | 连接Retargeting节点来精细控制眼睛和嘴巴 |
expression_friendly | expression_friendly | true/false | false | 表情友好模式,让表情更自然 | 启用表情友好处理 | 处理夸张表情时建议开启 |
expression_friendly_multiplier | expression_friendly_multiplier | 0.01-100.0 | 1.0 | 表情友好程度调节 | 表情友好模式的强度倍数 | 配合expression_friendly使用 |
3.3 LivePortraitComposite 节点
这个节点是干嘛的? 这就像一个"合成师",把处理好的脸部贴回到原始照片上。就像P图时把处理好的脸贴回到完整的照片上,让整张图看起来自然。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
source_image | source_image | IMAGE | - | 原始完整照片 | 原始源图像 | 上传完整的照片,不只是脸部 |
cropped_image | cropped_image | IMAGE | - | 处理后的脸部图像 | 经过处理的裁剪图像 | 连接LivePortraitProcess节点的输出 |
liveportrait_out | liveportrait_out | LP_OUT | - | 处理过程的详细信息 | LivePortrait处理的输出信息 | 连接LivePortraitProcess节点的第二个输出 |
mask | mask | MASK | None | 可选的遮罩,控制哪些区域要合成 | 可选的遮罩图像 | 不提供会使用默认遮罩,想精确控制可以自定义 |
3.4 LivePortraitLoadCropper 节点
这个节点是干嘛的? 这是一个"脸部侦探",专门负责在照片中找到人脸并把它框出来。就像你用相机拍照时自动对焦到人脸一样。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
onnx_device | onnx_device | CPU/CUDA/ROCM/CoreML | CPU | 选择用什么硬件来找脸 | ONNX模型运行的设备 | 有好显卡选CUDA,Mac选CoreML,其他选CPU |
keep_model_loaded | keep_model_loaded | true/false | true | 是否保持模型在内存中,影响速度 | 是否在内存中保持模型加载状态 | 开启更快但占内存,关闭省内存但慢 |
detection_threshold | detection_threshold | 0.05-1.0 | 0.5 | 脸部检测的严格程度 | 面部检测的置信度阈值 | 数值越高要求越严格,检测到的脸越少但更准确 |
这个节点是干嘛的? 这是另一种"脸部侦探",使用谷歌的MediaPipe技术来找脸。就像有两个不同品牌的人脸识别系统,各有优缺点。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
landmarkrunner_onnx_device | landmarkrunner_onnx_device | CPU/CUDA/ROCM/CoreML/torch_gpu | CPU | 选择用什么硬件来分析脸部特征点 | 面部关键点检测器运行的设备 | torch_gpu是新选项,可以用GPU加速 |
keep_model_loaded | keep_model_loaded | true/false | true | 是否保持模型在内存中 | 是否在内存中保持模型加载状态 | 同上一个节点 |
3.6 LivePortraitLoadFaceAlignmentCropper 节点
这个节点是干嘛的? 这是第三种"脸部侦探",特别擅长找小脸和远距离的脸。就像有专门找小目标的放大镜。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
face_detector | face_detector | blazeface/blazeface_back_camera/sfd | blazeface_back_camera | 选择脸部检测器类型 | 面部检测器的类型选择 | blazeface_back_camera对小脸效果最好 |
landmarkrunner_device | landmarkrunner_device | CPU/CUDA/ROCM/CoreML/torch_gpu | torch_gpu | 特征点检测用什么硬件 | 面部关键点检测器运行设备 | torch_gpu最快 |
face_detector_device | face_detector_device | cuda/cpu/mps | cuda | 脸部检测用什么硬件 | 面部检测器运行设备 | 有N卡选cuda,Mac选mps |
face_detector_dtype | face_detector_dtype | fp16/bf16/fp32 | fp16 | 检测精度选择 | 面部检测器的数据类型 | fp16最快,fp32最准确 |
keep_model_loaded | keep_model_loaded | true/false | true | 是否保持模型在内存中 | 是否在内存中保持模型加载状态 | 同前面节点 |
3.7 LivePortraitCropper 节点
这个节点是干嘛的? 这是"脸部裁剪师",把找到的脸从照片中切出来,并调整到合适的大小和位置。就像用剪刀把照片中的脸剪下来,然后放到标准相框里。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
pipeline | pipeline | LIVEPORTRAITPIPE | - | 接收模型管道 | LivePortrait处理管道 | 连接模型加载节点 |
cropper | cropper | LPCROPPER | - | 接收脸部检测器 | 面部裁剪器对象 | 连接任一Cropper加载节点 |
source_image | source_image | IMAGE | - | 要处理的照片 | 源图像 | 上传照片 |
dsize | dsize | 64-2048 | 512 | 裁剪出来的脸部图片大小 | 裁剪图像的尺寸 | 512是标准大小,太小效果差,太大占内存 |
scale | scale | 1.0-4.0 | 2.3 | 脸部区域的放大倍数 | 裁剪区域的缩放比例 | 数值越大包含的背景越多 |
vx_ratio | vx_ratio | -1.0-1.0 | 0.0 | 水平方向的偏移调节 | 水平方向的偏移比例 | 负数向左偏移,正数向右偏移 |
vy_ratio | vy_ratio | -1.0-1.0 | -0.125 | 垂直方向的偏移调节 | 垂直方向的偏移比例 | 负数向上偏移,正数向下偏移 |
face_index | face_index | 0-100 | 0 | 当有多张脸时选择第几张 | 面部索引选择 | 0是第一张脸,1是第二张脸 |
face_index_order | face_index_order | large-small/left-right等 | large-small | 多张脸的排序方式 | 面部索引的排序方式 | large-small按大小排序,left-right按左右排序 |
rotate | rotate | true/false | true | 是否自动旋转脸部到正向 | 是否启用面部旋转校正 | 建议开启,让歪着的脸变正 |
3.8 LivePortraitRetargeting 节点
这个节点是干嘛的? 这是"精细调节师",专门负责精确控制眼睛和嘴巴的动作。就像给演员化妆时,专门调整眼影和口红的浓淡。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
driving_crop_info | driving_crop_info | CROPINFO | - | 驱动视频的脸部信息 | 驱动图像的裁剪信息 | 连接处理驱动视频的Cropper节点输出 |
eye_retargeting | eye_retargeting | true/false | false | 是否启用眼部精细控制 | 是否启用眼部重定向 | 想精确控制眼神和眨眼时开启 |
eyes_retargeting_multiplier | eyes_retargeting_multiplier | 0.01-10.0 | 1.0 | 眼部动作的强度调节 | 眼部重定向的倍数 | 大于1眼部动作更夸张,小于1更微妙 |
lip_retargeting | lip_retargeting | true/false | false | 是否启用嘴部精细控制 | 是否启用嘴部重定向 | 想精确控制说话和表情时开启 |
lip_retargeting_multiplier | lip_retargeting_multiplier | 0.01-10.0 | 1.0 | 嘴部动作的强度调节 | 嘴部重定向的倍数 | 大于1嘴部动作更夸张,小于1更微妙 |
3.9 KeypointsToImage 节点
这个节点是干嘛的? 这是"特征点可视化器",把检测到的脸部特征点画出来,让你看到系统是怎么理解这张脸的。就像在脸上画点点,标出眼睛、鼻子、嘴巴的位置。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
crop_info | crop_info | CROPINFO | - | 脸部特征点信息 | 包含面部关键点的裁剪信息 | 连接Cropper节点的输出 |
draw_lines | draw_lines | true/false | false | 是否用线条连接特征点 | 是否绘制连接关键点的线条 | 开启后能看到脸部轮廓线,更直观 |
4. 使用技巧和建议
4.1 选择合适的脸部检测器
InsightFace(LivePortraitLoadCropper):效果最好,但仅限非商业使用
MediaPipe(LivePortraitLoadMediaPipeCropper):商业友好,CPU上运行快
FaceAlignment(LivePortraitLoadFaceAlignmentCropper):最适合小脸和远距离人脸
4.2 参数调优建议
新手推荐设置:所有参数保持默认值,先看效果
追求质量:precision选fp32,stitching开启
追求速度:precision选fp16,keep_model_loaded开启
处理夸张表情:开启expression_friendly,调高delta_multiplier
4.3 常见工作流程
加载模型(DownloadAndLoadLivePortraitModels)
加载脸部检测器(选择一个LoadCropper节点)
处理源图像(LivePortraitCropper)
处理驱动视频(再用一个LivePortraitCropper)
执行换脸(LivePortraitProcess)
合成最终图像(LivePortraitComposite)
5. 常见问题解答
Q1:为什么第一次运行很慢?
A:插件需要下载模型文件(约几GB),下载完成后就会很快了。
Q2:出现"No face detected"错误怎么办?
A:
Q3:效果不自然怎么办?
A:
Q4:内存不够用怎么办?
A:
将precision设为fp16
关闭keep_model_loaded
减小dsize参数
Q5:Mac用户注意事项
A:
优先选择CoreML或mps设备
如果出现NaN错误,系统会自动切换到CPU
6. 总结
ComfyUI-LivePortraitKJ插件是一个功能强大的人脸驱动工具,通过9个专业节点的组合,可以实现从简单的表情迁移到复杂的视频换脸效果。
节点总数统计:
本插件共包含 9个节点
本教程已详细解析 9个节点
覆盖率:100%
每个节点都有其特定的功能和用途,合理组合使用可以获得最佳效果。建议新手从默认参数开始,逐步调整参数来理解每个功能的作用。
记住:这个插件就像一套专业的化妆工具,需要一些练习才能熟练掌握,但一旦上手,就能创造出令人惊艳的效果!