ComfyUI:搭积木一样构建专属于自己的AIGC工作流(保姆级教程)

简介: 通过本篇文章,你可以了解并实践通过【ComfyUI】构建自己的【文生图】和【文生动图】工作流。

一、省流版简介

通过本篇文章,你可以了解并实践通过【ComfyUI】构建自己的【文生图】和【文生动图】工作流,本文所有操作环境和硬件都基于公司所发工作电脑,模型都基于网络开源,无需自己训练调参。(不过如果你有更强悍的电脑,自己有自己的模型就更好了)。同时我也会给出我自己简单搭建的【workflow】给大家,方便大家快速使用。

 

本文所使用电脑配置如下:

 


二、安装

1. 前置工具安装(仅以公司Mac电脑M系列芯片为例)

需要:

带 Apple silicon 或者 AMD GPUs 的Mac 电脑。

MacOS版本 12.3及以上。

Python 3.7 或更高版本(实测若想使用一些最新的AIGC能力,如文生视频或GIF,建议安装Python 3.12)。

Xcode command-line tools: xcode-select --install


1.1. PyTorch安装


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.")

如果安装正确,会有如下输出:

 

2. ComfyUI安装

使用 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:

 

但是现在,你还没有配套部署任何的模型,所以此时是跑不起来的。

3. 模型下载&导入

我自己在用两个模型下载的网站,两个都被墙了,需要大家自行科学上网:


HuggingFace:https://huggingface.co/


civitai:https://civitai.com/models


个人体验下来,HuggingFace更权威更偏学术一些,civital下载更快更偏娱乐一些(civital上有很多有趣的模型,玩起来还是很不错)。


模型的话,一般会存在两种后缀格式:


  • safetensors:这种模型一般用的是 numpy 格式保存,这就意味着它只保存了张量数据,没有任何代码,加载这类文件会更安全和更快。
  • ckpt:这种文件是序列化过的,这意味着它们可能会包含一些恶意代码,加载这类模型就可能会带来安全风险。


在下载完模型后,我们需要将模型导入到 ComfyUI 的 models 目录下,这样 ComfyUI 才能够加载到对应的模型。

 



三、使用

1. Comfy界面详解和基础使用

1.1. 节点Node

ComfyUI是通过一个个Node,加上Node与Node之间的链接,完成输入输出,并最终串联起整个AI生成的工作流(workflow)。


以【Clip Text Encode(Prompt)】节点为例:

 

其左侧端点是 Input(输入)端,右侧是 Output(输出)端,节点里还会有一些配置项,这些配置项我会称其为 Parameter(参数),参数是可编辑和调整的。通过将连线输入或输出到不同Node,可以串起不同的工作流。

1.2. 基础节点简介

1.2.1. Load Checkpoint

 

【Load Checkpoint】,顾名思义,就是加载模型用的。从节点的右边输出端点可以看出,Checkpoint 包含了三个部分:MODEL、CLIP 还有 VAE,这三部分其实就是Stable Diffusion 的模型运行的三大步骤,可以说这个节点是所有 Workflow 的起点。


三大步骤:

  • 首先,用户输入的 Prompt 会被一个叫 Text Encoder(文本编译器)的东西编译成一个个的词特征向量。此步骤下会输出多个等长的向量,每个向量包含 N 个维度,各位可以简单将其理解为「将文本转化为机器能识别的多组数字」。
  • 接着,这些特征向量会和一张随机图(可以简单理解这是一张布满电子雪花的图,或充满信息噪声的图),一起放到 Image Information Creator 里。在这一步,机器会将这些特征向量和随机图先转化到一个 Latent Space(潜空间)里,然后根据这些特征向量,将随机图「降噪」为一个「中间产物」。你可以简单理解,此时的「中间产物」是人类看不懂的「图」,是一堆数字,但此时这个中间产物所呈现的信息已经是机器算法可以理解语意的了。
  • 最后,这个中间产物会被 Image Decoder(图片解码器)解码成一张真正的图片。

 

类似于降噪然后蚀刻的过程,可以参考 Midjourney 图片生成的过程:由暗变清晰:

 

 

 

1.2.2. CLIP Text Encode(Prompt) Node

 

CLIP Text Enocde 节点,CLIP 全称是 Contrastive Language-Image Pre-training,即对比文本图像预训练。这个节点主要是输入 Prompt。一般会有两个这样的节点,一个是正向的 Prompt,列你希望在图片中看到的内容;另一个是负向的 Prompt,列你不希望在图片中出现的内容。


一般说来,写 Stable Diffusion 的 prompt 有几个原则:


  • Prompt 并不是越长越好,尽量保持在 75 个 token(或约 60 个字)以内。
  • 使用逗号分隔。Stable Diffusion 并不懂语法,所以你需要将画面中的关键词罗列出来,并用逗号分隔。
  • 越重要的词放在靠前的位置。比如你想要生成一张美丽的风景图,那么你可以将 beautiful scenery nature 放在最前面。


另外,还有个小技巧,你可以输入 (keyword:weight) 方式来控制关键词的权重,比如 (hight building: 1.2 ) 就意味着 hight building 的权重变高,如果填写的权重数小于 1,则意味着这个词的权重会变低,生成的图与这个词更不相关。


1.2.3. Empty Latent Image Node

这是【潜空间】图像节点。如果你需要调整最终生成的图片的大小,就需要调整 width(宽)、height(高)这两个值。而 batch_size 则是设置每次运行时生成的图片数量,比如你将这个设置成了 4,就意味着每次会生成 4 张图。


1.2.4. Save Image Node

完成图片生成后,对着图片点击右键,会看到「Save Image」的选项,点击此按钮就可以下载生成好的图片。节点里的输入框,则是设置图片名称的前缀。比如默认是 ComfyUI,那就意味着你保存的图片的文件名是 ComfyUI 开头,后面跟着一串数字。


1.2.5. KSampler Node

 

KSampler 包含以下参数:

  • seed:这个是随机种子,它主要用于控制潜空间的初始噪声。如果你想重复生成一模一样的图片。就需要用到这个随机种子。需要注意种子和 Prompt 都要相同,才能生成一模一样的图。
  • control_after_generate:每次生成完图片后,上面的 seed 数字都会变化,而这个配置项,则是设置这个变化规则:randomize(随机)、increment(递增 1)、decrement(递减 1)、fixed(固定)。
  • step:采样的步数。一般步数越大,效果越好,但也跟使用的模型和采样器有关。https://sunlin-ai.github.io/2022/06/01/Classifier-Free-Diffusion.html
  • cfg:全称 Classifier Free Guidance,可以参考这篇介绍:[论文理解] Classifier-Free Diffusion Guidance:
  • sampler_name:采样器名称。你可以通过这个来设置采样器算法。
  • scheduler:调度器主要是控制每个步骤中去噪的过程。你可以通过它选择不同的调度算法,有些算法是选择每一步减去相同数量的噪声,有些则是每一步都尽可能去掉多的噪声。
  • denoise:表示要增加多少初始噪声,1 表示全部。一般文生图你都可以默认将其设置成 1。

1.3. 连线

连线是具有规则的:


  • 同类相连:只有同类才能相互连接起来,比如 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 点连,最后出两张图。

其实更好的做法是实操起来,报错提示还是蛮清晰的,根据错误去改进自己的工作流。

1.4. 工作流WorkFlow的保存和加载

 

2. 进阶使用

2.1. 引入LoRA

总结基于Stable Diffusion进行图片生成的过程,就是【降噪】,在降噪的过程中,还有一个重要的环节就是【Noise Predictor】。


Noise Predictor 是如何工作的呢?简单理解就是进行了一系列的运算,运算所使用到的算法被称为 UNet 算法。UNet 的算法大概是这样的:

 

左侧是输入,右侧是输出,数据输入后会经过一些列的运算,图中的长条的柱子就是一步运算。我们可以通过改变柱子里的参数权重,从而改变输出结果,最终改变生成图片的效果。但改变每根柱子里的结果相对比较复杂。

于是研究人员就开始寻找一种更简单的方法,最终他们发现,如果将参数注入到每一层函数中,也能达到改变图片的效果,这个方法就是 LoRA(Low-Rank Adaptation)。


LoRA 是在不破坏任何一层函数,而是将参数注入到原有的每一层中。这样的好处是不破坏原有的模型,即插即用,并且模型的大小也比较小。可视化的效果如下:

 

用类比来理解,可以将 LoRA 视为类似相机「滤镜」。

LoRA模型下载好后,放置在如下的目录里:

 

2.2. 插件的安装和Custom Node的使用。

强大的ComfyUI不仅能支持文生图、图生图,还可以通过插件和Custom Node的引入,实现文生视频等复杂工作流。


2.2.1. 安装插件

我自己的使用过程中,安装了一些比较实用的插件,也推荐给大家。

首先cd到 custom_nodes 目录下,然后执行以下命令:

git clone https://github.com/ltdrdata/ComfyUI-Manager git clone https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translation.gitgit clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved

然后重新加载 ComfyUI的Web界面,会发现右侧的模块多了几个功能,此时就代表插件生效了:

 

这个时候直接点击【Manager】,即可对ComfyUI进行可视化操作管理:

 

在这个界面下,可以进行Custom Node的安装升级,以及模型的下载等。

 

2.3. 文生动图

文生动图推荐一个插件:

 

也可以自己手动下载安装:

ComfyUI-AnimateDiff-Evolved:https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved

大致工作流如下:

 

插件需要的模型,则安放在插件自己的目录下:

 

我这台电脑在batch_size 过高时候会爆栈,如果你的电脑性能更强劲的话,可以生产更好看的动图:

 



四、效果展示&工作流分享

1. 效果展示:文生图

 

 

2. 效果展示:文生动图

 

我的工作电脑只有 16 G内存,所以只能生成一些帧率不高效果一般的动图,大家可以换高性能电脑试试。

3. 工作流分享

3.1 文生图工作流:

text-2-img-workflow:https://bxbc.oss-cn-shanghai.aliyuncs.com/aigc/resource/comfyui/workflow/base-workflow-with-lora-v2.json

3.2 文生动图工作流:

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技术进步带来的方便。





来源  |  阿里云开发者公众号

作者  |  毕熙(风桐)

相关文章
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
金鸡百花电影节AIGC电影《三岔口》:构建于想象之上的现实世界
金鸡百花电影节AIGC电影《三岔口》:构建于想象之上的现实世界
|
2月前
|
人工智能 自然语言处理 搜索推荐
师资培训|AIGC教学评估体系构建与教学策略优化-某教育科技集团
近日,TsingtaoAI为某教育科技集团交付AIGC赋能教师教学创新课程,本课程围绕国内外最新AIGC技术的发展现状与具体应用场景,深入探讨如何借助智能分析、多模态交互和自动化数据处理,为教学过程“插上”数字化翅膀。课程不仅聚焦于工具与平台的实操演练,还呈现了丰富的本土高校成功案例与落地方法,让参加者充分掌握从课堂管理、作业布置、考试测评到学生个性化指导的全流程智能化改进思路。
104 12
|
4月前
|
算法 Serverless
通过函数计算部署ComfyUI以实现一个AIGC图像生成系统
快来报名参与ComfyUI活动,体验一键部署模型,生成粘土风格作品赢取体脂秤。活动时间从即日起至2024年12月13日24:00:00,每个工作日限量50个,先到先得!访问活动页面了解更多详情。
218 54
|
4月前
|
弹性计算 算法 搜索推荐
活动实践 | 通过函数计算部署ComfyUI以实现一个AIGC图像生成系统
ComfyUI是基于节点工作流稳定扩散算法的新一代WebUI,支持高质量图像生成。用户可通过阿里云函数计算快速部署ComfyUI应用模板,实现个性化定制与高效服务。首次生成图像因冷启动需稍长时间,之后将显著加速。此外,ComfyUI允许自定义模型和插件,满足多样化创作需求。
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)(一)
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)
488 0
|
8月前
|
数据采集 自然语言处理 算法
AIGC使用问题之GPT-3的数据集是如何构建的
AIGC使用问题之GPT-3的数据集是如何构建的
|
8月前
|
机器学习/深度学习 数据采集 人工智能
「AIGC」Stable Diffusion教程详解
**Stable Diffusion教程摘要:** Stable Diffusion是AI绘画工具,利用GAN学习艺术家风格。基础教程涵盖软件介绍、配置需求(NVIDIA GPU、Windows 10/11)、安装及基础操作,如模型切换、VAE使用、采样步数调整等。AI作画原理涉及U-net、Diffusion模型、文本映射(如CLIP)和条件生成。Stable Diffusion运用Latent Diffusion Model从潜在空间生成高清图像,开源且在艺术创作中广泛应用。
263 0
|
10月前
|
人工智能 自然语言处理 前端开发
【AIGC】通过人工智能总结PDF文档摘要服务的构建
【5月更文挑战第9天】 使用Python和预训练的AI模型,结合Gradio前端框架,创建了一个文本及PDF摘要聊天机器人。通过加载"FalconsAI/text_summarization"模型,实现文本和PDF的预处理,包括PDF合并与文本提取。聊天机器人接收用户输入,判断是文本还是PDF,然后进行相应的摘要生成。用户可以通过运行`app.py`启动机器人,访问`localhost:7860`与之交互,快速获取内容摘要。这个工具旨在帮助忙碌的人们高效获取信息。
591 2
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
【AIGC】基于大语言模型构建多语种聊天机器人(基于Bloom大语言模型)
【5月更文挑战第8天】基于大语言模型Bloom构建多语种聊天机器人
202 1
|
10月前
|
存储 人工智能 API
【AIGC】基于检索增强技术(RAG)构建大语言模型(LLM)应用程序
【5月更文挑战第7天】基于检索增强技术(RAG)构建大语言模型(LLM)应用程序实践
521 1

热门文章

最新文章