对于绝大多数普通用户而言,学习成本低、功能一体化的融合产品,能以最快的速度上手AI绘画,享受AI带来的乐趣。
但如果你想靠AI生图技术来赚钱,或者你是个设计师,想获取更高的灵活度和自由度,建议还是学习使用模型与产品分离的产品。
AI不会淘汰人类,AI只会淘汰“不会使用AI”的人类。
先来说一个误区,很多人误以为SD就是SDWebUI,其实是不对的。SD只是一个文生图模型,而SDWebUI是基于SD这项模型技术来进行图像生成的工具。
然而,基于SD来进行图像生成的工具远不止SDWebUI这一个,还有很多其他同类工具,比如Fooocus、WebUIForge、ComfyUI等等。
在这所有的基于SD的同类工具里,ComfyUI的自由度最高,直接看图就明白了:
ComfyUI并不追求简单易用,而是将重点放在了自由度和可拓展性上。它通过模块化的节点设计,让用户能够根据自己的需求,自由组合和调整工作流,实现高度个性化的创作。同时,ComfyUI还支持用户自行开发和拓展节点功能,使其成为一个开放的创作平台。
在AI知识库领域,FastGPT也采用了工作流的设计,有异曲同工之妙。
采用工作流模式,用户可以清晰地看到整个创作流程,并且可以方便地对每个节点进行配置和调整。除此之外,还有很多肉眼可见的优势,比如:
怎么样,想实现AI绘画自由么?跟我一起来学ComfyUI吧。
这一节内容玩过SDWebUI的同学应该很熟悉,一般来说有两种选择:要么装在本地,要么装在云上。
如果你自己的电脑GPU给力,完全可以直接装在本地,0成本,一分钱不用花。
如果你本地的电脑GPU不太给力,可以选择云端服务,云端的配置上限很高,生图速度更快,唯一需要考虑的就是费用问题。
我的电脑是M1Max,用ComfyUI生图的速度也很慢,如果你的配置还不如我的M1Max,就别想在本地跑了。
如果你决定了要将ComfyUI部署在云端,可以试试Sealos最近上线的云主机,Sealos的付费模式是按量付费,用的时候开机,不用的时候关机,关机状态下只收少量的存储费用。如果你不是一天24小时使用ComfyUI,可以试试Sealos的这种模式。
当然,如果你只是短期玩玩,大可以选择某些云厂商所谓的新人优惠,价格确实非常低,但是“老用户与狗不得入内啊”
实际测试下来,我在Sealos上新建了个12C/44G的云主机,GPU选的是NVIDIAA10,存储50G,关机状态下每小时的费用是0.04元。开机状态下每小时的费用是9.24元。
总结一下:
点击桌面的“云主机”:
点击“新建主机”,选择“异构计算”,然后在机型中选择GPU型号,目前最便宜的是T4,但是好像已经售空了,可以选择A10。
下面继续选择操作系统镜像,存储推荐50G以上,因为各种模型要占用存储空间,有条件建议直接100G。公网IP也需要打开,不然无法联网。带宽直接默认1M就够了。最后设置好密码就可以点击右上角的“提交”了。
创建完成后,点击云主机右边的三个点,然后点击“终端”:
接下来正式进入安装流程。
首先需要安装NVIDIA驱动:
aptupdateubuntu-driversinstallnvidia:535安装完驱动后,执行以下命令重启云主机:
systemctlreboot重启之后执行命令nvidia-smi测试驱动是否安装成功:
接着安装NVIDIAContainerToolkit:
aptinstall-ydocker.io配置Docker使用GPU:
nvidia-ctkruntimeconfigure--runtime=dockersystemctlrestartdocker执行以下命令拉取ComfyUI的镜像:
dockerpullregistry.cn-guangzhou.aliyuncs.com/yangchuansheng/comfyui-boot:latest这个镜像比较大,需要多等待一会儿。
镜像拉取完成后,再在当前目录下创建一个download.txt文件,内容如下:
mkdirstoragechmod-Ra+wstorage最后执行以下命令启动容器:
dockerrun--restartalways-d--nethost--namecomfyui--gpusall-p8188:8188-v"$(pwd)"/storage:/home/runner-v"$(pwd)"/download.txt:/home/scripts/download.txt-eCLI_ARGS=""registry.cn-guangzhou.aliyuncs.com/yangchuansheng/comfyui-boot:latest容器启动过程中,会下载各种必要的模型和节点,如果某个模型下载失败,最终容器会重启继续进行下载,直到最后模型全部下载完成,耐心等待即可。
可以通过命令dockerlogs-fcomfyui查看启动日志,最终启动成功日志如下:
在浏览器地址栏中输入<云主机的公网地址>:8188就可以访问ComfyUI的Web界面了。
我们先来装一个必备的节点。点击右下角的“Manager”:
接着点击“InstallCustomNodes”:
在搜索框输入workspace进行搜索,然后点击ComfyUIWorkspaceManager-Comfyspace右边的“Install”按钮进行安装:
安装完成后回到云主机执行命令systemctlrestartdocker重启容器,然后直接刷新浏览器页面,你会发现左上角多了几个按钮:
这个玩意就是用来管理各种工作流和模型的,非常好用。我们先来安装SD最先进的模型SDXL,直接点击左上角的“Models”,然后点击“InstallModels”。
在弹出来的弹窗中输入国内模型下载站的模型下载链接和模型保存目录:
模型下载完成后,关掉弹窗,点击右下角的“Manager”:
然后点击“Restart”重启服务:
关掉弹窗,多点击两次右边的“Refresh”按钮:
现在你再点击下图中我用红框选出来的区域,就会出现你之前下载好的模型了:
接下来就是见证奇迹的时刻,直接点击“Queueprompt”:
顷刻之间,图就画好了,你可以在图片上方点击鼠标右键,然后点击“OpenImage”来查看大图。
我们将图片的高度和宽度改成1024再试试:
最终画出来的图更加高清:
秀完了肌肉,我们再来看看ComfyUI的工作原理。
ComfyUI采用了可视化编程的思路,将StableDiffusion的各个功能模块以“节点”的形式呈现,用户只需将节点用“边”连接起来,就能自定义出一个完整的图像生成流程。
“节点”代表特定的操作或函数,“边”将“节点”的输出连接到另一节点的输入。整个流程有点像一条生产线,原材料(如文本提示)在不同工位(节点)加工处理,最终生成成品(如图像)。
每个节点上的术语看起来可能会很晦涩难懂,不用担心,下面我以系统默认的工作流为例,按照生图的顺序依次来讲解。
首先要在“LoadCheckpoint”节点中选择预训练的SDCheckpoint模型进行加载,单机其中的模型名称即可显示ComfyUI服务器所有可用的模型列表。
一个完整的StableDiffusion模型由以下三个主要部分构成:
LoadCheckpoint节点会返回这三个组件,分别输出到CLIP、MODEL和VAE端口,供下游节点使用。这有点像把一台机器拆解成不同的功能模块。
接下来CLIP会连接到两个CLIPTextEncode节点,这个节点会利用CLIP模型的文本编码器部分,将输入的文本提示转换为一个潜在向量表示,也就是“embedding”。
它会先将提示拆分为一系列token,然后将这些token输入CLIP的文本编码器(该编码器是一个预训练的Transformer语言模型)。编码器会将这些token编译成一个个的词特征向量。此步骤下会输出77个等长的向量,每个向量包含768个维度。这个向量就可以指引后续的图像生成过程了。
我们可以将文本编码过程理解为对食材进行切割、腌制等预处理,让它们可以更好地融入最终的佳肴中。
在本工作流中,上面的CLIPTextEncode节点CONDICTIONG输出连接到KSampler节点的“正输入”,所以它的提示词是正向提示词(所谓正向提示词,就是我想要什么)。下面的CLIPTextEncode节点CONDICTIONG输出连接到KSampler节点的“负输入”,所以它的提示词是反向提示词(所谓反向提示词,就是我不想要什么)。
接下来,这些特征向量会和一张随机图(可以简单理解这是一张布满电子雪花的图,或充满信息噪声的图)一起被转化到一个潜空间(LatentSpace)里。
潜空间图像(latentimage)的尺寸通常小于最终生成图像的大小,但与之成正比。所以调整潜空间图像的宽高就可以控制最终图像的分辨率。潜空间图像的像素值是随机采样自标准正态分布的。
我们可以将潜像类比为一块“画布”,画布的大小决定了最终作品的尺幅。开始时画布上只有随机的色块,但它蕴含了千变万化的可能,等待被创意的火花点燃。
在这里你可以设置最终图像的高度和宽度,也可以设置生成的图片数量(默认是1)。
接下来,我们来到KSampler节点,这是整个工作流程中最关键核心的一个节点。KSampler实现了扩散模型的迭代采样过程,可以将上面的随机潜空间图像根据文本提示词生成最终的图像。
KSampler使用的采样算法和调度器(scheduler)决定了每一步去噪的幅度和方式。不同的采样器在速度和效果上都各有权衡。
在每个采样步骤中,先将潜像输入VAE解码为普通图像,再和CLIP嵌入一起送入UNet。UNet会预测噪声残差,将其从潜像中减去一部分,从而让图像更接近目标的提示语义。这个过程重复多个步骤,每一步去除一些噪声,让图像变得越来越清晰。
所以与其说SD是在“生成”图像,不如说它是在“雕刻”图像。
世间所有的图片都在一张充满噪点的图片里,SD只是将这张图片里不需要的部分都去掉了,剩下的部分就是你想要的图片。
最终来到了VAEDecode节点,这个节点使用VAE的解码器部分将最终的潜像解码为常规的RGB图像。你可以将VAE类比为一个“翻译官”,它在抽象表征空间和具象图像空间之间往复穿梭、翻译。
具体来说,VAE解码器由一系列的转置卷积(transposedconvolution)层组成。它将潜像视作一个低分辨率的特征图,通过上采样(upsampling)和卷积操作,逐步将其解码为高分辨率的图像。在这个过程中,解码器会学习填补细节,将抽象的表征还原为丰富的视觉细节。
怎么样,现在你应该能理解ComfyUI生图的整个过程了吧?
再来看一个稍微有亿点点复杂的工作流,它充分利用了SDXL模型的优势,做了很多调优工作,同时还用上了精炼模型使最终生成的图片细节更加丰富。
如何导入工作流呢?还记得一开始我让你安装的ComfyUIWorkspaceManager节点吗,这时候就派上用场了。点击左上角的文件夹图标: