从零用 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

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 你连插件都管不了:

cd ~/ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Manager.git

AnimateDiff 三件套

三个插件缺一不可:

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 更别想。

cd ~/ComfyUI/models/checkpoints
wget https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors

pruned-emaonly 版本约 4GB,比完整版小一半,出图质量基本一致。

AnimateDiff 运动模型 — 踩坑警告

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 那个是下载中断的残留,加载会直接报错。

# 检查文件大小,如果 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。

安装

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:

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.safetensors
  • loaders → Load LoRA
    • 把 Checkpoint 的 MODEL → LoRA 的 model
    • 把 Checkpoint 的 CLIP → LoRA 的 clip
    • LoRA 文件选 my_character.safetensorsstrength_model0.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_namemm_sd_v15_v2.safetensors
  • beta_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 vae
  • VideoHelperSuite → VHS VideoCombine:VAE Decode IMAGE → VideoCombine images
    • frame_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 下做一个软链接:

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: 16
  • context_stride: 1
  • context_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 两个参数是画面质量的最后一道防线。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐