学习 ComfyUI 的初衷,是想制作一二布布视频作为副业,之前学习了在剪映用表情包制作短视频,由于表情包素材有限,很难做出丰富内容,再加上 AI 短视频兴起,手剪效果效率都远远落后了
学习的最终目标,是输入一段文本,自动生成一二布布视频
技术调研
制作 AI 视频前,先了解下市面上制作 AI 视频的工具
第一类:视频生成大模型服务,如 Sora, Runway, 可灵AI 等,在视频生成网站输入 prompt 便可生成视频,难度低,但费用较高
第二类:本地生成视频的工具,如 ComfyUI, Automatic111, Forge,需要在本地先安装这类客户端,下载模型文件,在本地生成视频,也可使用云端算力;这种方案难度大,费用较低(租远程显卡的费用),使用本地显卡则无费用
考虑到费用问题,选择第二类方案,对比了第二类的几款工具,ComfyUI 的可控性最强、视频生成效果、性能更好,但学习成本高;比较后决定先从 ComfyUI 学起
准备工作
参考:https://docs.comfy.org/get_started/first_generation
- 安装 Comfy UI:https://www.comfy.org/download
- 下载模型(本文用 SD1.5):复制链接下载模型文件,保存到 checkpoints 目录中(Help->Open Folder -> 打开模型文件夹)
下面按照官方教程依此学习
文生图
运行示例
创建文生图工作流

运行:

图片生成在 output 文件夹中
生成自己的图片
运行成功示例后,在模板上只需要修改提示词和图片尺寸,就可以生成我们希望的图片
提示词分为两类:
Positive Prompt:你想看到的
Negative Prompt:你不想看到的
Positive Prompt:
1 | Two little dogs are playing happily on the green lawn, surrounded by blue sky, white clouds, butterflies, and flowers |
Negative Prompt:
1 | text, watermark |

可以看到提示词中的蓝天、白云、鲜花没有生成,可能是模型比较简单
下面介绍上图工作流中各节点的功能
文生图工作流节点
- Load Checkpoint Node:用于加载以下组件
- 图像生成模型
- CLIP:文本编码器,将提示词转换为模型能够理解的向量
- VAE:变分自编码器,将 latent space 转换到像素空间(模型不直接在像素空间工作,而是在一个更小更抽象的【潜空间】里工作)
- Empty Latent Image Node:定义生成图片的尺寸
- CLIP Text Encoder Node:将提示词转换为模型能够理解的向量
- KSampler Node:降噪,在 latent space 输出一个图像
- VAE Decode Node:将 latent space 图像转为像素图像
- Save Image Node:保存图片到 output 文件夹
图生图
将上面的 Empty Latent Image Node 改为【 加载图像 和 VAE 编码的节点】
降噪值(0-1) 越小,生成图像与参考图像之间差异越小

只能说有点抽象,感觉我是来搞笑的
修复(inpaint)
常用场景
- 移除不需要的对象
- 修复 AI 生成的错位错误
- 精调局部元素,如调整面部表情、服饰纹理
运行示例
下载模型 512-inpainting-ema.safetensors
拷贝到 ComfyUI/models/checkpoints 文件夹下

补绘(outpaint)
常用场景
- 图像构图良好,但画布区域太小,扩展画布
- 向原始图像中添加更多元素
运行示例

超分(Upscale)
将低像素图像生成高像素图像
这里使用的模型是 4x-ESRGAN.pth

LoRA
待续
Reference
https://docs.comfy.org/tutorials/basic/text-to-image
https://docs.comfy.org/tutorials/basic/image-to-image
https://docs.comfy.org/tutorials/basic/inpaint
https://docs.comfy.org/tutorials/basic/outpaint