【AIGC】AI绘画本地部署教程及原理简介(ComfyUI+flux.1)

一、简介

  这篇博客主要介绍一款非常强大的 开源AI绘画(文生图)工具ComfyUI ComfyUI是一个基于节点流程式的AI绘图工具WebUI,它通过将Stable Diffusion的流程拆分成节点,实现了工作流的定制和可复现性。最直观的体现就是,你定义和设置的任何工作流都可以以json文件的格式进行保存,反之其他人创建的好的工作流只要分享出了其json文件,你也可以瞬间导入使用并在此基础上进行修改编辑。


  

二、安装部署

1.ComfyUI安装

  这里直接贴上项目地址https://github.com/comfyanonymous/ComfyUI,下面给的安装方式写的很详细了,这里说一下本人的具体部署步骤。

  • (1)首先安装GPU环境(CPU也可以,没有测试,速度应该较慢),显存最好在8G以上,并配置好cuda和显卡驱动。

  • (2)拉取项目,并创建一个conda虚拟环境,在虚拟环境中安装项目所需要的依赖,即根目录下requirements.txt当中的所有内容。进入根目录 执行pip install -r requirements.txt。这个项目需要torch环境,torch的安装建议按照pytorch官网的安装方式单独进行安装,避免出现版本不匹配问题。

  如果安装无误,在项目根目录下执行 python main.py,即可启动ComfyUI的web服务。

在这里插入图片描述

即在web浏览器中定制模型:
在这里插入图片描述

2.模型配置

flux.1模型

  FLUX.1 是由前 Stability AI 核心成员 Robin Rombach 创立的新公司 Black Forest Labs 开源的 AI 图像生成模型,在图像生成领域引起了广泛关注。Robin Rombach 是扩散模型领域的权威专家,曾领导开发了著名的 Stable Diffusion 模型 。FLUX.1 模型以其卓越的图像质量、高度逼真的人体解剖学表现和先进的提示词遵循能力而著称。目前模型已经开源,可在huggingface或者魔塔社区进行下载。FLUX.1 包含三个版本:Pro版、Dev版和Schnell版,由于本人显存只有6G,所以选择Schnell的fp8轻量化版本。满血版的推荐配置是24G显存。

  魔塔社区模型地址:https://modelscope.cn/models/AI-ModelScope/flux-fp8

  这里只需要下载flux1-schnell-fp8-e4m3fn.safetensors这个模型文件就可以了,下好放到项目根目录的unet文件夹下。

CLIP模型

  clip模型用于对用户输入的prompt进行编码。这里下载
t5xxl_fp8_e4m3fn.safetensors
以及 clip_l .safetensors 两个模型,放在models/clip目录下。

  两个clip模型地址:https://huggingface.co/comfyanonymous/flux_text_encoders/tree/main

VAE模型

  VAE模型提供一个图片编码器和解码器,完成特征马赛克与真实图片的转换。VAE模型放在models/vae目录下。

  VAE模型地址:https://modelscope.cn/models/AI-ModelScope/FLUX.1-schnell/files,下载其中的ae.safetensors文件即可。

LORA模型

   lora模型根据你的实际任务需求选择,也可以不用。我这里用于生成真人写实照片,就用对应的lora真人模型。模型放在models/loras目录下。

  LORA真人模型地址:https://pan.tuio.cc/s/KKYtL


  

三、搭建工作流

1.Quick Start

  如果想要快速搭建一个图片生成工作流,那么只需要将官网提供的图片下载到本地后拖拽至WebUI界面即可立马复刻该图片生成的完整工作流,因为该图片中除了图片信息本身,还包含了完整的工作流信息。地址:https://comfyanonymous.github.io/ComfyUI_examples/flux/

在这里插入图片描述

在这里插入图片描述

  注意,普通图片是不支持这么操作的,只有通过工作流生成的图片包含工作流信息(包含额外的json文件)。

这里对上图中需要修改配置的组件进行简单说明。

  • Load Diffusion Model。用于配置加载生成图片的扩散模型,这里使用的是flux.1。

  • DualCLIPLoader。用于配置clip提示词编码模型,这里是t5xxl_fp8和 clip_l 。

  • LoadVae。用于配置Vae模型,这里是ae.safetensors。

  • Empty Latent Image。用于配置输出图片的分辨率和本次生成图片张数,图中设置的是1024*1024,生成1张图片。

  • CLIP Text Encode (Prompt)。用于填写提示词。

  其他的组件按默认配置就可以。配置完成后,点击右上方的Queue Prompt开始生成图片,图片生成速度因硬件性能而异;6G显存的低配卡,按上述配置生成一张图需要大概6,7分钟

在这里插入图片描述

  生成完会进行显示,可以保存(以下是小模型的效果):

在这里插入图片描述

2.使用Lora

  上面的工作流只用到了基础的扩散模型,如果你有更精细化的图片定制需求,可以将对应的Lora模型配置进工作流。关于LORA的说明可以在 Lora Examples | ComfyUI_examples :看到。

  这里直接贴上真人风格lora的工作流及使用效果。整体工作流与上面的基本一致,只是多了一层lora加载器组件。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


  

四、工作流原理简介

1.扩散模型

  扩散模型是文生图工作流的关键。Stable Diffusion通过大量的图片和文本数据训练,将图片压缩成关键特征的表示,并将文本标签转化为计算机能理解的形式。在这个过程中,它建立了一个内部的、用于存储和处理这些数据的空间latent space(潜在空间)。在这个空间里,图片的特征和文本标签以一种压缩和转化后的形式相互对应,使得模型能够基于文本描述生成或理解图像内容。

2.CLIP和VAE

  为了让用户输入的内容可以进入latent space进行匹配,就需要工具把人类可以理解的文字和图片进行编码,转换为可以在Latent Space中工作的标识符,这样才能在潜在空间Latent Space中进行匹配,文字Prompt在转换的时候需要用到CLIP编码器把Prompt变成Token,图片会通过VAE编码器转化成特征马赛克(也就是噪音),最后再经过计算,Stable diffusion 会按照我们想要的意图生成一个新的特征马赛克,这个时候我们需要用VAE解码器,把这个特征马赛克转换为图片。

3.采样器

  至此已经把输入的提示词转化成为了token,同时还需要输入一个基础的特征马赛克0,文生图的时候,系统就随机生成了一个基础的特征马赛克0,这时候采样器就把Token和基础特征马赛克0通过模型计算出来一个你想要的新的特征马赛克1,其中Token +基础马赛克0,还有一些其他的内容,我们通称为生成的约束条件 conditioning,这个特征马赛克1会和你输入的token继续计算,这个计算会持续很多次,每次就会越来越趋近于计算机认为你需要的token结果到底是什么样的图形,这个过程叫称之为采样,由于经过多次计算之后,特征马赛克1会越来越趋近于真实的图片,所以称之为Denose(去噪音),采样器使用一个算法和一些设置,运行N次计算,最后在Latent Space中得到了一个趋近于你想要的内容的特征马赛克N,这个马赛克N再通过VAE解码器还原成真实的图片,整个文生图的过程就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值