微信扫码
添加专属顾问
我要投稿
探索AIGC工作流的搭建秘籍,从零开始构建个性化的文生图和文生动图流程。 核心内容: 1. ComfyUI工具介绍与工作流概念 2. 基于公司工作电脑的安装步骤详解 3. PyTorch框架安装与AIGC能力实现指南
一、省流版简介
通过本篇文章,你可以了解并实践通过【ComfyUI】构建自己的【文生图】和【文生动图】工作流,本文所有操作环境和硬件都基于公司所发工作电脑,模型都基于网络开源,无需自己训练调参。(不过如果你有更强悍的电脑,自己有自己的模型就更好了)。同时我也会给出我自己简单搭建的【workflow】给大家,方便大家快速使用。
二、安装
需要:
Xcode command-line tools: xcode-select --install
PyTorch 是一种用于构建深度学习模型的功能完备框架,是一种通常用于图像识别和语言处理等应用程序的机器学习。使用 Python 编写,因此对于大多数机器学习开发者而言,学习和使用起来相对简单。PyTorch 的独特之处在于,它完全支持 GPU,并且使用反向模式自动微分技术,因此可以动态修改计算图形。这使其成为快速实验和原型设计的常用选择。
我是使用conda来进行安装的,没有conda的可以先进行安装:
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.shsh Miniconda3-latest-MacOSX-arm64.sh
然后通过conda工具来安装pytorch:
conda install pytorch torchvision torchaudio -c pytorch-nightly
最后运行一个python脚本来判断:
import torchif torch.backends.mps.is_available(): mps_device = torch.device("mps") x = torch.ones(1, device=mps_device) print (x)else: print ("MPS device not found.")
如果安装正确,会有如下输出:
使用 git 命令下载代码库到本地:
git clone git@github.com:comfyanonymous/ComfyUI.git
然后cd到仓库主目录,安装依赖:
pip install -r requirements.txt
然后运行程序,检测下载安装是否正常:
python main.py
可以看到如果安装正常,会提示你服务已经部署在了本地地址:http://127.0.0.1:8188
请求本地地址,即可访问ComfyUI:
但是现在,你还没有配套部署任何的模型,所以此时是跑不起来的。
我自己在用两个模型下载的网站,两个都被墙了,需要大家自行科学上网:
HuggingFace:https://huggingface.co/
civitai:https://civitai.com/models
个人体验下来,HuggingFace更权威更偏学术一些,civital下载更快更偏娱乐一些(civital上有很多有趣的模型,玩起来还是很不错)。
模型的话,一般会存在两种后缀格式:
safetensors:这种模型一般用的是 numpy 格式保存,这就意味着它只保存了张量数据,没有任何代码,加载这类文件会更安全和更快。
ckpt:这种文件是序列化过的,这意味着它们可能会包含一些恶意代码,加载这类模型就可能会带来安全风险。
在下载完模型后,我们需要将模型导入到 ComfyUI 的 models 目录下,这样 ComfyUI 才能够加载到对应的模型。
三、使用
1. Comfy界面详解和基础使用
ComfyUI是通过一个个Node,加上Node与Node之间的链接,完成输入输出,并最终串联起整个AI生成的工作流(workflow)。
以【Clip Text Encode(Prompt)】节点为例:
其左侧端点是 Input(输入)端,右侧是 Output(输出)端,节点里还会有一些配置项,这些配置项我会称其为 Parameter(参数),参数是可编辑和调整的。通过将连线输入或输出到不同Node,可以串起不同的工作流。
【Load Checkpoint】,顾名思义,就是加载模型用的。从节点的右边输出端点可以看出,Checkpoint 包含了三个部分:MODEL、CLIP 还有 VAE,这三部分其实就是Stable Diffusion 的模型运行的三大步骤,可以说这个节点是所有 Workflow 的起点。
三大步骤:
首先,用户输入的 Prompt 会被一个叫 Text Encoder(文本编译器)的东西编译成一个个的词特征向量。此步骤下会输出多个等长的向量,每个向量包含 N 个维度,各位可以简单将其理解为「将文本转化为机器能识别的多组数字」。
接着,这些特征向量会和一张随机图(可以简单理解这是一张布满电子雪花的图,或充满信息噪声的图),一起放到 Image Information Creator 里。在这一步,机器会将这些特征向量和随机图先转化到一个 Latent Space(潜空间)里,然后根据这些特征向量,将随机图「降噪」为一个「中间产物」。你可以简单理解,此时的「中间产物」是人类看不懂的「图」,是一堆数字,但此时这个中间产物所呈现的信息已经是机器算法可以理解语意的了。
最后,这个中间产物会被 Image Decoder(图片解码器)解码成一张真正的图片。
类似于降噪然后蚀刻的过程,可以参考 Midjourney 图片生成的过程:由暗变清晰:
CLIP Text Enocde 节点,CLIP 全称是 Contrastive Language-Image Pre-training,即对比文本图像预训练。这个节点主要是输入 Prompt。一般会有两个这样的节点,一个是正向的 Prompt,列你希望在图片中看到的内容;另一个是负向的 Prompt,列你不希望在图片中出现的内容。
一般说来,写 Stable Diffusion 的 prompt 有几个原则:
越重要的词放在靠前的位置。比如你想要生成一张美丽的风景图,那么你可以将 beautiful scenery nature 放在最前面。
另外,还有个小技巧,你可以输入 (keyword:weight) 方式来控制关键词的权重,比如 (hight building: 1.2 ) 就意味着 hight building 的权重变高,如果填写的权重数小于 1,则意味着这个词的权重会变低,生成的图与这个词更不相关。
这是【潜空间】图像节点。如果你需要调整最终生成的图片的大小,就需要调整 width(宽)、height(高)这两个值。而 batch_size 则是设置每次运行时生成的图片数量,比如你将这个设置成了 4,就意味着每次会生成 4 张图。
完成图片生成后,对着图片点击右键,会看到「Save Image」的选项,点击此按钮就可以下载生成好的图片。节点里的输入框,则是设置图片名称的前缀。比如默认是 ComfyUI,那就意味着你保存的图片的文件名是 ComfyUI 开头,后面跟着一串数字。
KSampler 包含以下参数:
seed:这个是随机种子,它主要用于控制潜空间的初始噪声。如果你想重复生成一模一样的图片。就需要用到这个随机种子。需要注意种子和 Prompt 都要相同,才能生成一模一样的图。
control_after_generate:每次生成完图片后,上面的 seed 数字都会变化,而这个配置项,则是设置这个变化规则:randomize(随机)、increment(递增 1)、decrement(递减 1)、fixed(固定)。
step:采样的步数。一般步数越大,效果越好,但也跟使用的模型和采样器有关。
cfg:全称 Classifier Free Guidance,可以参考这篇介绍:[论文理解] Classifier-Free Diffusion Guidance:https://sunlin-ai.github.io/2022/06/01/Classifier-Free-Diffusion.html
sampler_name:采样器名称。你可以通过这个来设置采样器算法。
scheduler:调度器主要是控制每个步骤中去噪的过程。你可以通过它选择不同的调度算法,有些算法是选择每一步减去相同数量的噪声,有些则是每一步都尽可能去掉多的噪声。
denoise:表示要增加多少初始噪声,1 表示全部。一般文生图你都可以默认将其设置成 1。
连线是具有规则的:
同类相连:只有同类才能相互连接起来,比如 KSampler 左侧的 model 端点,就只能跟另一个 MODEL 输出点相连。或者跟具象点说,只有同颜色的端点能相连,如果你将 CLIP Text Encode 右边橙色的点,连到 KSampler 的紫色点 model 上是不可能的。因为他们类型不一样。橙色点只能跟橙色点连。另外,还有一个技巧,当你点击端点并拉出一条线的时候,只有那些能连接的线会高亮出来,不能连的会变暗。
左进右出:比如 KSampler 左边的 model、positive、negative、latent_image 都是是输入端,输出端是右边的 LATENT。你可以将其理解为一个函数,左边输入数字,右边是输出。那也就意味着你不能将一个节点右边的输出端,连到另一节点右边的输出端。
一进多出:一个输入端只能和另一个节点的输出端相连,没法和多个输出端相连。比如上图中的 KSampler 的 positive 端点,只能和一个 CLIP Text Encode 相连,没法同时连多个。但一个输出端,能和多个输入端相连。还是上面那个例子,一个 CLIP Text Encode 可以和多个 KSampler 相连,比如可以和 KSampler A 的 positive 端连,也可以和 KSampler B 的 negative 点连,最后出两张图。
其实更好的做法是实操起来,报错提示还是蛮清晰的,根据错误去改进自己的工作流。
2. 进阶使用
总结基于Stable Diffusion进行图片生成的过程,就是【降噪】,在降噪的过程中,还有一个重要的环节就是【Noise Predictor】。
Noise Predictor 是如何工作的呢?简单理解就是进行了一系列的运算,运算所使用到的算法被称为 UNet 算法。UNet 的算法大概是这样的:
左侧是输入,右侧是输出,数据输入后会经过一些列的运算,图中的长条的柱子就是一步运算。我们可以通过改变柱子里的参数权重,从而改变输出结果,最终改变生成图片的效果。但改变每根柱子里的结果相对比较复杂。
于是研究人员就开始寻找一种更简单的方法,最终他们发现,如果将参数注入到每一层函数中,也能达到改变图片的效果,这个方法就是 LoRA(Low-Rank Adaptation)。
LoRA 是在不破坏任何一层函数,而是将参数注入到原有的每一层中。这样的好处是不破坏原有的模型,即插即用,并且模型的大小也比较小。可视化的效果如下:
用类比来理解,可以将 LoRA 视为类似相机「滤镜」。
LoRA模型下载好后,放置在如下的目录里:
强大的ComfyUI不仅能支持文生图、图生图,还可以通过插件和Custom Node的引入,实现文生视频等复杂工作流。
我自己的使用过程中,安装了一些比较实用的插件,也推荐给大家。
首先cd到 custom_nodes 目录下,然后执行以下命令:
git clone https://github.com/ltdrdata/ComfyUI-Manager
git clone https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translation.git
git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved
然后重新加载 ComfyUI的Web界面,会发现右侧的模块多了几个功能,此时就代表插件生效了:
这个时候直接点击【Manager】,即可对ComfyUI进行可视化操作管理:
在这个界面下,可以进行Custom Node的安装升级,以及模型的下载等。
文生动图推荐一个插件:
也可以自己手动下载安装:
ComfyUI-AnimateDiff-Evolved:https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved
大致工作流如下:
插件需要的模型,则安放在插件自己的目录下:
我这台电脑在batch_size 过高时候会爆栈,如果你的电脑性能更强劲的话,可以生产更好看的动图:
四、效果展示&工作流分享
1. 效果展示:文生图
2. 效果展示:文生动图
我的工作电脑只有 16 G内存,所以只能生成一些帧率不高效果一般的动图,大家可以换高性能电脑试试。
3. 工作流分享
text-2-img-workflow:https://bxbc.oss-cn-shanghai.aliyuncs.com/aigc/resource/comfyui/workflow/base-workflow-with-lora-v2.json
text-2-gif-workflow:https://bxbc.oss-cn-shanghai.aliyuncs.com/aigc/resource/comfyui/workflow/share-text2gif.json
五、一些总结
1. 关于环境
使用comfyUI或者跑一些demo的时候,建议用conda创建一个虚拟环境,这样你在进行一些python包安装的时候,会很大程度上去避免解决包冲突问题,这会让你少一些烦躁。
2. 关于使用插件遇到问题
在AIGC时代,更能体会到开源精神的可贵。当我使用文生动图插件【ComfyUI-AnimateDiff-Evolved】:https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved时,刚开始老是跑不出一张有效的动图,自己排查问题无果后,我去作者的git仓库下提了 issue,没想到很快获得了解答。作者近期更新了自己的代码来适配 Mac pytorch 的 bug,还是很感动有这样的开源贡献者。因为问题得到了解决,我也得以完成了这篇ata最后的拼图,在此感谢作者。
3. 关于AI
很庆幸我们这样的工作,能够在第一线去体验AI给我们带来的惊喜和成果,也相信随着AI技术的发展,能让每个人都慢慢享受到AI技术进步带来的方便。
全面安全保障:等级保护合规解决方案
阿里云安全整合云平台等保测评经验和云安全产品优势,联合等保咨询、等保测评机构等合作资源,提供一站式等保测评服务,覆盖等保定级、备案、建设整改及测评阶段,助您快速通过等保测评。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-03-09
LLM运行框架对比:ollama与vllm浅析
2025-03-09
真·企业级方案!MindSQL开源:四种训练方式+私有数据+RAG+生产高并发
2025-03-09
智能体的互联网时代来临,相当于http协议的MCP协议让智能体与数据源无缝连接
2025-03-09
Manus背后的核心技术:如何通过MCP简化AI集成
2025-03-08
5 个人、3 小时,开源复刻 Manus?
2025-03-08
AI 技术应用落地与投资机遇|线性观点
2025-03-08
解锁Dify:开源智能体的魔法棒,开启AI应用新旅程
2025-03-07
数字人的 DeepSeek 时代来了
2025-01-01
2024-07-25
2024-05-06
2025-01-21
2024-09-20
2024-07-20
2024-06-12
2024-08-13
2024-07-11
2024-12-26
2025-03-08
2025-03-03
2025-03-02
2025-03-01
2025-02-26
2025-02-23
2025-02-18
2025-02-15