从零用 ComfyUI + AnimateDiff 生成 AI 动画:6GB 显卡也能跑
摘要:本文记录在 WSL/Ubuntu 环境下,用 6GB 显存显卡从零搭建 ComfyUI + AnimateDiff + LoRA 角色动画流水线的完整过程。包含安装、基模/运动模型下载、Kohya_ss LoRA 训练、工作流节点搭建,以及画面抖动、角色畸形的修复方案。适合想用消费级显卡跑 AI 视频生成的开发者。
📦 步骤一:环境搭
WSL Ubuntu,Python 3.10+。6GB 显存,不要碰 SDXL,SD 1.5 是唯一合理的选择。
ComfyUI
bash
cd ~
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
pip install -r requirements.txt --break-system-packages
--break-system-packages 是因为 WSL 环境通常没有独立 venv,你需要它来绕过 PEP 668 限制。
ComfyUI Manager(必装)
没有 Manager 你连插件都管不了:
bash
cd ~/ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Manager.git
AnimateDiff 三件套
三个插件缺一不可:
bash
cd ~/ComfyUI/custom_nodes
# 核心动效引擎
git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved.git
# 视频加载和输出
git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.git
# 姿势/深度控制(ControlNet 预处理节点)
git clone https://github.com/Fannovel16/comfyui_controlnet_aux.git
pip install -r comfyui_controlnet_aux/requirements.txt --break-system-packages
📦 步骤二:模型下载
SD 1.5 基础模型
SD 1.5 是 6GB 显卡的最佳选择------SDXL 显存撑不住,Flux 更别想。
bash
cd ~/ComfyUI/models/checkpoints
wget https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors
pruned-emaonly 版本约 4GB,比完整版小一半,出图质量基本一致。
AnimateDiff 运动模型 --- 踩坑警告
bash
cd ~/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models
wget https://hf-mirror.com/guoyww/animatediff/resolve/main/mm_sd_v15_v2.ckpt
⚠️ 这里有个坑 :从 hf-mirror 下载时可能得到两个文件------mm_sd_v15_v2.ckpt(142MB,残缺)和 mm_sd_v15_v2.ckpt.1(1.7GB,完整)。142MB 那个是下载中断的残留,加载会直接报错。
bash
# 检查文件大小,如果 ckpt 只有 142MB:
ls -lh mm_sd_v15_v2.ckpt*
# 替换为完整文件
rm mm_sd_v15_v2.ckpt
mv mm_sd_v15_v2.ckpt.1 mm_sd_v15_v2.ckpt
📦 步骤三:Kohya_ss 训练 LoRA
你要让角色稳定出镜,光靠 prompt 不够,必须训 LoRA。
安装
bash
cd ~
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
./setup.sh
启动后浏览器打开 http://127.0.0.1:7860。
训练配置
在 WebUI 里改这几个关键参数:
| 标签页 | 设置项 | 值 |
|---|---|---|
| Dreambooth/LoRA | Training type | LoRA |
| Folders | Image folder | 你的训练图片目录 |
| Folders | Output folder | ~/lora_output/ |
| Folders | Model folder | ~/ComfyUI/models/checkpoints/ |
| Parameters (Basic) | LoRA type | Standard |
| Parameters (Basic) | Epochs | 10 |
| Parameters (Advanced) | Network Rank | 32 |
训练图片建议 10-15 张,包含不同角度、不同光照的角色面部特写。训练完成后把 my_character.safetensors 放到 ~/ComfyUI/models/loras/。
🚀 步骤四:搭建 AnimateDiff 工作流
启动 ComfyUI:
bash
cd ~/ComfyUI
python main.py --listen 0.0.0.0 --port 8188
浏览器打开 http://localhost:8188,清空画布,按以下顺序右键加节点。
4-1. 加载模型 + LoRA
loaders → Load Checkpoint:选v1-5-pruned-emaonly.safetensorsloaders → Load LoRA:- 把 Checkpoint 的 MODEL → LoRA 的 model
- 把 Checkpoint 的 CLIP → LoRA 的 clip
- LoRA 文件选
my_character.safetensors,strength_model设0.8
4-2. CLIP 文本编码
加两个 conditioning → CLIP Text Encode 节点,CLIP 都从 Load LoRA 接。
正面 prompt:
1girl, a girl sitting at desk in dark office at night, computer screen light on face, short black hair, white shirt, tired expression, cinematic lighting, solo
负面 prompt:
long hair, blonde, curly hair, 2girls, multiple people, ugly, deformed, blurry, low quality
4-3. 潜空间图像
AnimateDiff → ADE_EmptyLatentImageLarge:
width: 512,height: 512,batch_size: 24
batch_size 就是你要生成的帧数。24 帧 × 8fps = 3 秒视频。
4-4. AnimateDiff 运动模型
AnimateDiff → ADE_AnimateDiffLoaderGen1:
- model 从 Load LoRA 接
model_name选mm_sd_v15_v2.safetensorsbeta_schedule保持autoselect
4-5. 采样器
sampling → KSampler,这是整个流程的枢纽:
| 连线来源 | 连到 KSampler |
|---|---|
| AnimateDiff Loader MODEL | model |
| 正面 CLIP CONDITIONING | positive |
| 负面 CLIP CONDITIONING | negative |
| ADE_EmptyLatentImageLarge LATENT | latent_image |
参数:seed=randomize, steps=20, cfg=7, sampler=euler, scheduler=simple, denoise=1
4-6. 解码 + 输出
vae → VAE Decode:KSampler LATENT → VAE Decode samples ;Checkpoint VAE → VAE Decode vaeVideoHelperSuite → VHS VideoCombine:VAE Decode IMAGE → VideoCombine imagesframe_rate: 8,format:image/gif(或video/h264-mp4),loop_count: 0,save_output: 勾上
image → Preview Image:VideoCombine IMAGE → Preview Image images
全部连完,Ctrl + Enter 开跑。输出文件默认存到 ~/ComfyUI/output/。
💡 想直接输出到 Windows 桌面?在 WSL 下做一个软链接:
bash
mkdir -p /mnt/c/Users/20205/Desktop/ComfyUI-output
rm -rf ~/ComfyUI/output
ln -s /mnt/c/Users/20205/Desktop/ComfyUI-output ~/ComfyUI/output
之后每次生成,GIF/MP4 直接出现在桌面 ComfyUI-output 文件夹。
💡 避坑指南
坑 1:运动模型文件残缺
现象 :AnimateDiff Loader 加载 mm_sd_v15_v2.ckpt 时报错,或者生成全黑/全噪点。
原因 :从 hf-mirror.com 下载大文件时可能中断,残留一个 142MB 的不完整文件。而完整文件被保存为 mm_sd_v15_v2.ckpt.1。
解决 :ls -lh 检查文件大小,小于 1GB 就是残缺的。删除小文件,把 .ckpt.1 重命名为 .ckpt。
坑 2:画面帧之间跳跃、扭曲
现象:生成的 GIF/MP4 中人物偶尔变形,帧与帧之间过渡不自然,出现"融化"效果。
原因:AnimateDiff 默认的上下文窗口不够大,相邻帧之间的运动连续性不足。
解决 :右键画布,添加 AnimateDiff → ADE_ContextOptions:
context_length:16context_stride:1context_overlap:4
把这个节点的 CONTEXT_OPTIONS 输出连到 AnimateDiff Loader 的 context_options 输入。这会让模型以 16 帧为上下文窗口、相邻窗口重叠 4 帧,大幅提升帧间一致性。
坑 3:LoRA 角色的脸反复崩坏
现象:加了 LoRA 但角色面部仍然不稳定,有时像本人有时完全变样,尤其运动幅度大的帧。
原因 :只设了 strength_model 没设 strength_clip。CLIP 强度控制的是文本导向------LoRA 对 prompt 的影响力。默认 strength_clip 可能低于 strength_model,导致角色特征被 prompt 淹没。
解决 :把 Load LoRA 的 strength_clip 调到和 strength_model 一样:
strength_model: 0.8
strength_clip: 0.8 # 改这个
如果还不行,降运动幅度:添加 AnimateDiff → ADE_AnimateDiffSettings,设 motion_scale: 0.7,输出连到 Loader 的 ad_settings。越低越稳(像静态图),0.5-1.0 之间找你的平衡点。
总结
这套方案的核心思路是:SD 1.5 + LoRA 角色绑定 + AnimateDiff 低运动幅度 + 上下文窗口。6GB 显存跑 SDXL 都吃力,更别说 SVD 或 AnimateDiff v3------SD 1.5 是唯一能在消费级硬件上稳定产出 512×512 动画的路线。LoRA 用来锁定角色一致性,ContextOptions 和 motion_scale 两个参数是画面质量的最后一道防线。