ComfyUI-ADMotionDirector 插件保姆级教程
1. 插件简介
插件地址: https://github.com/kijai/ComfyUI-ADMotionDirector
这个插件是一个超级强大的动作训练工具!就像是给你的 AI 请了一个专业的动作导演,能够教会 AI 学习特定的动作模式。想象一下,你想让 AI 学会某个特定的舞蹈动作、手势或者表情变化,这个插件就能帮你实现。
主要功能:
- 训练自定义动作模式(就像教 AI 学跳舞)
- 创建专属的动作文件(LoRA),可以重复使用
- 支持多种模型格式加载
- 提供验证功能,随时查看训练效果
- 可以组合多个动作文件
能带来什么效果:
- 让 AI 学会你想要的特定动作
- 创建个性化的动作库
- 制作更精准的动画效果
- 实现动作的精细控制
2. 如何安装
方法一:通过 ComfyUI Manager 安装(推荐)
- 打开 ComfyUI
- 点击右下角的 "Manager" 按钮
- 在搜索框输入 "ADMotionDirector"
- 找到 "ComfyUI-ADMotionDirector" 点击安装
- 重启 ComfyUI
方法二:手动安装
- 打开终端或命令提示符
- 进入你的 ComfyUI 安装目录下的
custom_nodes文件夹 - 运行命令:
git clone https://github.com/kijai/ComfyUI-ADMotionDirector.git - 进入插件文件夹:
cd ComfyUI-ADMotionDirector - 安装依赖:
pip install -r requirements.txt - 重启 ComfyUI
依赖要求
- PyTorch 2.1.1 或更高版本
- CUDA 12.1 支持
- 足够的显卡内存(建议 8GB 以上)
3. 节点详细解析
3.1 ADMD_InitializeTraining 节点
这是训练初始化节点,就像是开始训练前的准备工作,设置所有必要的参数和环境。
3.1.1 节点功能
这个节点的作用就像是一个"训练教练",负责设置训练计划、准备训练材料,为后续的动作学习做好一切准备工作。
3.1.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 默认值 | 取值范围 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|---|---|
| pipeline | pipeline | PIPELINE | 无 | 管道对象 | 从加载器获取 | 这是整个训练的"流水线",就像工厂的生产线 | 包含所有必要模型的管道对象 | 连接模型加载器的输出 |
| lora_name | lora_name | STRING | motiondirectorlora | 任意文本 | 描述性名称 | 给你训练的动作起个名字,就像给舞蹈起名 | LoRA文件的保存名称 | "跳舞动作"、"挥手动作" |
| images | images | IMAGE | 无 | 图片序列 | 动作示例图片 | 用来教AI学习的示例图片,就像舞蹈教学视频 | 训练用的图像序列数据 | 上传一组展示动作的连续图片 |
| prompt | prompt | STRING | 空 | 任意文本 | 动作描述 | 用文字描述你想要的动作,就像给演员说戏 | 文本提示词,描述期望的动作内容 | "女孩在跳舞"、"手在挥动" |
| max_train_steps | max_train_steps | INT | 300 | 0-100000 | 200-500 | 训练多少轮,就像练习多少遍,越多越熟练但越慢 | 最大训练步数 | 简单动作用200,复杂动作用500 |
| learning_rate | learning_rate | FLOAT | 5e-4 | 0-10000 | 1e-4到5e-4 | 学习速度,就像学车时的油门大小,太快容易出错 | 时间维度的学习率 | 新手用1e-4,有经验用5e-4 |
| learning_rate_spatial | learning_rate_spatial | FLOAT | 1e-4 | 0-10000 | 5e-5到1e-4 | 空间学习速度,控制画面细节的学习快慢 | 空间维度的学习率 | 一般比时间学习率小一些 |
| lora_rank | lora_rank | INT | 64 | 8-4096 | 32-128 | 学习能力大小,就像大脑容量,越大能学越复杂的动作 | LoRA的秩,控制模型复杂度 | 简单动作用32,复杂动作用128 |
| seed | seed | INT | 0 | 0-最大整数 | 随机数 | 随机种子,就像掷骰子的起始点,相同数字结果相似 | 随机种子,控制训练的随机性 | 想要可重复结果就固定一个数字 |
| optimization_method | optimization_method | 选择 | Lion | Lion/AdamW/prodigy | Lion | 优化方法,就像选择不同的学习方式 | 优化器类型,影响训练效果和速度 | Lion适合大多数情况 |
| include_resnet | include_resnet | BOOLEAN | False | True/False | False | 是否包含更多细节学习,开启后能学更精细的动作 | 是否包含ResNet模块进行训练 | 需要精细动作时开启 |
3.1.3 输出说明
| 输出名 | 输出类型 | 说明 |
|---|---|---|
| sanitycheck | IMAGE | 训练数据预览,就像看看教学材料是否正确 |
| admd_pipeline | ADMDPIPELINE | 准备好的训练管道,包含所有训练设置 |
| lora_info | LORAINFO | 动作文件信息,记录训练的详细参数 |
3.2 ADMD_DiffusersLoader 节点
这是 Diffusers 格式模型加载器,就像是从仓库里取出专业的 AI 模型来使用。
3.2.1 节点功能
这个节点就像是一个"模型管理员",负责从 Diffusers 格式的模型库中加载需要的 AI 模型,为训练做准备。
3.2.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 默认值 | 取值范围 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|---|---|
| additional_models | additional_models | ADDITIONAL_MODELS | 无 | 模型对象 | 从模型选择器获取 | 额外需要的模型,就像请助手帮忙 | 附加模型配置,包含动作模型等 | 连接模型选择器的输出 |
| download_default | download_default | BOOLEAN | False | True/False | True | 是否自动下载默认模型,就像自动安装软件 | 是否下载默认的SD1.5模型 | 第一次使用建议开启 |
| scheduler | scheduler | 选择 | DDIMScheduler | DDIMScheduler/DDPMScheduler | DDIMScheduler | 调度器类型,就像选择不同的工作节奏 | 噪声调度器类型,影响生成质量 | DDIM适合大多数情况 |
| use_xformers | use_xformers | BOOLEAN | False | True/False | True | 内存优化开关,就像开启省电模式 | 是否使用xformers优化内存使用 | 显卡内存不够时开启 |
| model | model | 选择 | 空 | 可用模型列表 | stable-diffusion-v1-5 | 选择基础模型,就像选择画家的风格 | 选择要使用的Diffusers模型 | 推荐使用SD1.5 |
3.2.3 输出说明
| 输出名 | 输出类型 | 说明 |
|---|---|---|
| pipeline | PIPELINE | 加载好的模型管道,包含所有必要组件 |
3.3 ADMD_CheckpointLoader 节点
这是检查点模型加载器,就像是从传统的模型文件中加载 AI 模型。
3.3.1 节点功能
这个节点就像是一个"文件管理器",能够读取传统的 .ckpt 或 .safetensors 格式的模型文件,并转换成可以训练的格式。
3.3.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 默认值 | 取值范围 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|---|---|
| additional_models | additional_models | ADDITIONAL_MODELS | 无 | 模型对象 | 从模型选择器获取 | 额外需要的模型,就像请助手帮忙 | 附加模型配置,包含动作模型等 | 连接模型选择器的输出 |
| ckpt_name | ckpt_name | 选择 | 无 | 检查点文件列表 | 你的模型文件 | 选择要加载的模型文件,就像选择要打开的文档 | 检查点模型文件名 | 选择你下载的模型文件 |
| scheduler | scheduler | 选择 | DDIMScheduler | DDIMScheduler/DDPMScheduler | DDIMScheduler | 调度器类型,就像选择不同的工作节奏 | 噪声调度器类型,影响生成质量 | DDIM适合大多数情况 |
| use_xformers | use_xformers | BOOLEAN | False | True/False | True | 内存优化开关,就像开启省电模式 | 是否使用xformers优化内存使用 | 显卡内存不够时开启 |
3.3.3 输出说明
| 输出名 | 输出类型 | 说明 |
|---|---|---|
| pipeline | PIPELINE | 加载好的模型管道,包含所有必要组件 |
3.4 ADMD_ComfyModelLoader 节点
这是 ComfyUI 原生模型加载器,能够使用 ComfyUI 已经加载的模型。
3.4.1 节点功能
这个节点就像是一个"资源共享器",能够利用 ComfyUI 中已经加载的模型,避免重复加载,节省内存。
3.4.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 默认值 | 取值范围 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|---|---|
| model | model | MODEL | 无 | 模型对象 | 从模型加载器获取 | 主要的AI模型,就像画家的大脑 | ComfyUI的MODEL对象 | 连接Load Checkpoint节点 |
| clip | clip | CLIP | 无 | CLIP对象 | 从模型加载器获取 | 文字理解模型,就像翻译官 | ComfyUI的CLIP对象 | 连接Load Checkpoint节点 |
| vae | vae | VAE | 无 | VAE对象 | 从模型加载器获取 | 图像编码器,就像图片压缩工具 | ComfyUI的VAE对象 | 连接Load Checkpoint节点 |
| motion_model | motion_model | MOTION_MODEL_ADE | 无 | 动作模型对象 | 从动作模型加载器获取 | 动作理解模型,专门处理动作 | AnimateDiff的动作模型 | 连接AnimateDiff加载器 |
| scheduler | scheduler | 选择 | DDIMScheduler | DDIMScheduler/DDPMScheduler | DDIMScheduler | 调度器类型,就像选择不同的工作节奏 | 噪声调度器类型,影响生成质量 | DDIM适合大多数情况 |
| use_xformers | use_xformers | BOOLEAN | False | True/False | True | 内存优化开关,就像开启省电模式 | 是否使用xformers优化内存使用 | 显卡内存不够时开启 |
3.4.3 输出说明
| 输出名 | 输出类型 | 说明 |
|---|---|---|
| pipeline | PIPELINE | 加载好的模型管道,包含所有必要组件 |
3.5 ADMD_AdditionalModelSelect 节点
这是附加模型选择器,用于选择训练需要的额外模型文件。
3.5.1 节点功能
这个节点就像是一个"工具箱管理员",帮你选择训练时需要的额外工具,比如动作模型和适配器。
3.5.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 默认值 | 取值范围 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|---|---|
| motion_module | motion_module | 选择 | 无 | 动作模型文件列表 | 你的动作模型 | 选择动作理解模型,就像选择舞蹈老师 | AnimateDiff动作模块文件 | 选择下载的动作模型文件 |
| use_adapter_lora | use_adapter_lora | BOOLEAN | True | True/False | True | 是否使用适配器,就像是否需要助教 | 是否使用LoRA适配器 | 有适配器文件时开启 |
| optional_adapter_lora | optional_adapter_lora | 选择 | 空 | LoRA文件列表 | 你的适配器文件 | 选择适配器文件,就像选择专业助手 | 可选的LoRA适配器文件 | 选择相关的LoRA文件 |
3.5.3 输出说明
| 输出名 | 输出类型 | 说明 |
|---|---|---|
| additional_models | ADDITIONAL_MODELS | 选择好的附加模型配置 |
3.6 ADMD_ValidationSettings 节点
这是验证设置节点,用于配置训练过程中的测试参数。
3.6.1 节点功能
这个节点就像是一个"考试监考官",设置如何在训练过程中测试AI学习的效果。
3.6.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 默认值 | 取值范围 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|---|---|
| seed | seed | INT | 0 | 0-最大整数 | 固定数字 | 随机种子,确保测试结果可重复 | 验证时使用的随机种子 | 用固定数字保证结果一致 |
| inference_steps | inference_steps | INT | 25 | 0-256 | 20-50 | 生成步数,就像画画的笔触次数,越多越精细 | 推理时的采样步数 | 快速测试用20,精细测试用50 |
| guidance_scale | guidance_scale | FLOAT | 8 | 0-32 | 6-12 | 引导强度,就像老师指导的严格程度 | CFG引导缩放系数 | 想要更贴近描述用10-12 |
| spatial_scale | spatial_scale | FLOAT | 0.5 | 0-1 | 0.3-0.8 | 空间效果强度,控制画面细节的影响程度 | 空间LoRA的缩放系数 | 细节重要用0.8,自然效果用0.5 |
| validation_prompt | validation_prompt | STRING | 空 | 任意文本 | 测试描述 | 测试时用的描述,就像考试题目 | 验证时使用的提示词 | "测试跳舞动作"、"验证挥手效果" |
3.6.3 输出说明
| 输出名 | 输出类型 | 说明 |
|---|---|---|
| validation_settings | VALIDATION_SETTINGS | 验证配置信息 |
3.7 ADMD_LoadLora 节点
这是 LoRA 加载器,用于加载已经训练好的动作文件。
3.7.1 节点功能
这个节点就像是一个"技能加载器",能够加载之前训练好的动作技能,让AI重新学会这些动作。
3.7.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 默认值 | 取值范围 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|---|---|
| lora_path | lora_path | STRING | 空 | 文件路径 | 你的LoRA文件路径 | 动作文件的位置,就像技能书的存放地址 | LoRA文件的相对路径 | "2024-01-01/12-30-45/跳舞动作" |
| strength | strength | FLOAT | 1.0 | 0-10 | 0.5-1.5 | 动作强度,就像音量大小,控制效果明显程度 | LoRA的应用强度 | 想要明显效果用1.0-1.5 |
| prev_motion_lora | prev_motion_lora | MOTION_LORA | 无 | 动作LoRA对象 | 之前的LoRA | 之前已加载的动作,可以叠加多个技能 | 前一个动作LoRA对象 | 连接其他LoRA加载器 |
3.7.3 输出说明
| 输出名 | 输出类型 | 说明 |
|---|---|---|
| motion_lora | MOTION_LORA | 加载好的动作LoRA对象 |
3.8 ADMD_SaveLora 节点
这是 LoRA 保存器,用于保存训练完成的动作文件。
3.8.1 节点功能
这个节点就像是一个"技能保存器",把AI学会的动作技能保存成文件,以后可以重复使用。
3.8.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 默认值 | 取值范围 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|---|---|
| admd_pipeline | admd_pipeline | ADMDPIPELINE | 无 | 训练管道对象 | 训练完成的管道 | 训练好的AI系统,包含学会的技能 | 完成训练的管道对象 | 连接训练节点的输出 |
| lora_info | lora_info | LORAINFO | 无 | LoRA信息对象 | 训练信息 | 训练的详细信息,就像学习档案 | LoRA的配置信息 | 连接初始化节点的输出 |
3.8.3 输出说明
| 输出名 | 输出类型 | 说明 |
|---|---|---|
| lora_path | STRING | 保存的LoRA文件路径 |
| admd_pipeline | ADMDPIPELINE | 更新后的训练管道 |
3.9 ADMD_TrainLora 节点
这是 LoRA 训练器,执行实际的动作学习训练过程。
3.9.1 节点功能
这个节点就像是一个"训练教练",负责实际执行训练过程,让AI通过反复练习学会指定的动作。
3.9.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 默认值 | 取值范围 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|---|---|
| admd_pipeline | admd_pipeline | ADMDPIPELINE | 无 | 训练管道对象 | 初始化的管道 | 准备好的训练系统,包含所有设置 | 初始化完成的训练管道 | 连接初始化节点的输出 |
| steps | steps | INT | 100 | 0-10000 | 50-300 | 训练步数,就像练习次数,越多学得越好 | 本次训练的步数 | 快速测试用50,正式训练用200+ |
| trigger_input | trigger_input | VHS_FILENAMES | 无 | 文件名对象 | 可选 | 触发输入,用于控制执行顺序 | 用于控制节点执行顺序的输入 | 连接其他节点确保执行顺序 |
| opt_images_override | opt_images_override | IMAGE | 无 | 图片对象 | 可选 | 替换训练图片,就像换教学材料 | 可选的图像覆盖输入 | 想要用不同图片训练时使用 |
3.9.3 输出说明
| 输出名 | 输出类型 | 说明 |
|---|---|---|
| admd_pipeline | ADMDPIPELINE | 训练后的管道对象 |
3.10 ADMD_ValidationSampler 节点
这是验证采样器,用于测试训练效果。
3.10.1 节点功能
这个节点就像是一个"考试官",在训练过程中或训练完成后测试AI学习的效果,生成测试样本。
3.10.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 默认值 | 取值范围 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|---|---|
| validation_settings | validation_settings | VALIDATION_SETTINGS | 无 | 验证设置对象 | 验证配置 | 测试的具体设置,就像考试规则 | 验证采样的配置参数 | 连接验证设置节点 |
| admd_pipeline | admd_pipeline | ADMDPIPELINE | 无 | 训练管道对象 | 训练后的管道 | 训练好的AI系统,用来生成测试结果 | 完成训练的管道对象 | 连接训练节点的输出 |
3.10.3 输出说明
| 输出名 | 输出类型 | 说明 |
|---|---|---|
| admd_pipeline | ADMDPIPELINE | 验证后的管道对象 |
| images | IMAGE | 生成的验证图像 |
3.11 ADMD_MakeBatchList 节点
这是批次列表制作器,用于组合多组训练图片。
3.11.1 节点功能
这个节点就像是一个"资料整理员",能够把多组图片整理成一个训练包,让AI能够学习更多样的动作变化。
3.11.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 默认值 | 取值范围 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|---|---|
| images | images | IMAGE | 无 | 图片对象 | 第一组图片 | 第一组训练图片,就像第一套教学材料 | 第一个图像批次 | 上传第一组动作序列图片 |
| images2 | images2 | IMAGE | 无 | 图片对象 | 第二组图片 | 第二组训练图片,就像第二套教学材料 | 第二个图像批次 | 上传第二组动作序列图片 |
3.11.3 输出说明
| 输出名 | 输出类型 | 说明 |
|---|---|---|
| image_batch_list | IMAGE | 组合后的图片批次列表 |
4. 使用技巧和建议
4.1 训练数据准备技巧
- 图片质量很重要:使用高清、清晰的图片序列
- 动作连贯性:确保图片之间的动作是连续的
- 数量适中:一般8-16张图片组成一个动作序列
- 背景一致:尽量保持背景相对稳定
4.2 参数调节建议
- 新手设置:learning_rate=1e-4, steps=200, lora_rank=64
- 追求质量:增加训练步数到500+,提高lora_rank到128
- 快速测试:减少步数到50-100,降低lora_rank到32
- 显卡内存不足:开启use_xformers,降低lora_rank
4.3 训练流程建议
- 先用少量步数快速测试
- 检查验证结果是否符合预期
- 调整参数后进行正式训练
- 定期保存训练结果
- 测试不同强度的效果
4.4 常见应用场景
- 人物动作训练:学习特定的手势、表情、姿态
- 物体运动训练:学习物体的旋转、移动模式
- 风格动作训练:学习特定艺术风格的动作表现
- 组合动作训练:结合多个简单动作形成复杂动作
5. 常见问题解答
5.1 安装相关问题
Q: 安装后提示缺少依赖怎么办?
A: 确保安装了requirements.txt中的所有依赖,特别是PyTorch版本要求。
Q: 提示CUDA版本不兼容怎么办?
A: 检查你的CUDA版本,建议使用CUDA 12.1或更高版本。
Q: 显卡内存不够用怎么办?
A: 开启use_xformers选项,降低lora_rank参数,减少训练步数。
5.2 训练相关问题
Q: 训练很慢怎么办?
A: 使用Lion优化器,开启xformers优化,适当降低训练步数。
Q: 训练结果不理想怎么办?
A: 检查训练数据质量,调整学习率,增加训练步数,尝试不同的lora_rank。
Q: 如何判断训练是否成功?
A: 通过验证采样器定期检查生成效果,观察损失值是否下降。
5.3 使用相关问题
Q: 如何使用训练好的LoRA?
A: 保存后的LoRA可以在ComfyUI-AnimateDiff-Evolved插件中使用。
Q: 可以组合多个LoRA吗?
A: 可以,使用ADMD_LoadLora节点可以叠加多个LoRA效果。
Q: 如何调整LoRA的强度?
A: 在加载LoRA时调整strength参数,范围通常在0.5-1.5之间。
6. 进阶使用技巧
6.1 工作流搭建
- 建议按照:模型加载 → 初始化训练 → 训练 → 验证 → 保存的顺序
- 可以设置多个验证点检查训练进度
- 使用批次列表节点可以训练更复杂的动作
6.2 质量优化
- 使用高质量的训练数据
- 合理设置学习率避免过拟合
- 定期验证避免训练过度
- 保存多个检查点便于回滚
6.3 创意应用
- 训练特定角色的动作风格
- 创建动作库供后续使用
- 结合不同的基础模型训练
- 探索不同参数组合的效果
7. 总结
ComfyUI-ADMotionDirector是一个功能强大的动作训练插件,它就像是给AI请了一个专业的动作导演。通过这个插件,你可以:
- 训练AI学会特定的动作模式
- 创建可重复使用的动作文件
- 精确控制动作的表现效果
- 组合多种动作创造复杂效果
记住,好的训练效果需要:
- 高质量的训练数据
- 合适的参数设置
- 足够的训练时间
- 耐心的调试过程
希望这个教程能帮助你掌握这个强大的动作训练工具,创作出令人惊艳的动画效果!