网站建设怎么改首页的标题,上海网站备案公司,石家庄网站建设外包公司,长沙蒲公英网络技术有限公司文章目录 一、概述二、Stable Diffusion v1 v22.1 简介2.2 LAION-5B数据集2.3 CLIP条件控制模型2.4 模型训练 三、Stable Diffusion 发展3.1 图形界面3.1.1 Web UI3.1.2 Comfy UI 3.2 微调方法3.1 Lora 3.3 控制模型3.3.1 ControlNet 四、其他文生图模型4.1 DALL-E24.2 I… 文章目录 一、概述二、Stable Diffusion v1 v22.1 简介2.2 LAION-5B数据集2.3 CLIP条件控制模型2.4 模型训练 三、Stable Diffusion 发展3.1 图形界面3.1.1 Web UI3.1.2 Comfy UI 3.2 微调方法3.1 Lora 3.3 控制模型3.3.1 ControlNet 四、其他文生图模型4.1 DALL-E24.2 Imagen4.3 Midjurney 五、部署使用 一、概述
Stable diffusion是一种潜在的文本到图像的扩散模型。基于之前的大量工作如DDPM、LDM的提出并且在Stability AI的算力支持和LAION的海量数据支持下Stable diffusion才得以成功。
Stable diffusion能够在来自LAION- 5B数据库子集的512x512图像上训练潜在扩散模型。与谷歌的Imagen类似这个模型使用一个冻结的CLIP vitl /14文本编码器来根据文本提示调整模型。
Stable diffusion拥有860M的UNet和123M的文本编码器该模型相对轻量级可以运行在具有至少10GB VRAM的GPU上。具体可以参考https://huggingface.co/CompVis/stable-diffusion 二、Stable Diffusion v1 v2
2.1 简介
Stable Diffusion v1指的是模型架构的特定配置它使用下采样因子8的自动编码器带有860M UNet和CLIP vitl /14文本编码器用于扩散模型。该模型在256x256图像上进行预训练然后在512x512图像上进行微调。
SD v1 是在LDM的基础上建立的与LDM的主要区别在于
将原来的条件机制改成用强大的CLIP模型采用更大的数据集LAION- 5B进行训练
关于训练程序和数据的详细信息以及模型的预期用途可以参考https://github.com/CompVis/stable-diffusion/blob/main/Stable_Diffusion_v1_Model_Card.md。 模型获取地址https://huggingface.co/CompVis
2.2 LAION-5B数据集
LAION-5B 包含 58.5 亿个 CLIP 过滤的图像-文本对的数据集比 LAION-400M 大 14 倍是世界第一大规模、多模态的文本图像数据集共80T数据并提供了色情图片过滤、水印图片过滤、高分辨率图片、美学图片等子集和模型供不同方向研究。
LAION-5B通过CommonCrawl获取文本和图片OpenAI的CLIP计算后获取图像和文本的相似性并删除相似度低于设定阈值的图文对英文阈值0.28其余阈值0.26500亿图片保留了不到60亿最后形成58.5亿个图文对包括23.2亿的英语22.6亿的100语言及12.7亿的未知语言。
LAION-5B 进一步扩展了语言视觉模型的开放数据集规模使得更多研究者能够参与到多模态领域中。并且为了推动研究提供了多个子集用于训练各种规模的模型也可以通过web界面检索构建子集训练。已有多个模型和论文证明了基于LAION子集训练的模型能够取得良好甚至SOTA的效果。
LAION-5B数据集官网https://laion.ai/blog/laion-5b/
2.3 CLIP条件控制模型 SD采用CLIP text encoder来对输入text提取text embeddings具体的是采用目前OpenAI所开源的最大CLIP模型clip-vit-large-patch14这个CLIP的text encoder是一个transformer模型只有encoder模块层数为12特征维度为768模型参数大小是123M。对于输入text送入CLIP text encoder后得到最后的hidden states即最后一个transformer block得到的特征其特征维度大小为77x76877是token的数量这个细粒度的text embeddings将以cross attention的方式送入UNet中。 值得注意的是这里的tokenizer最大长度为77CLIP训练时所采用的设置当输入text的tokens数量超过77后将进行截断如果不足则进行paddings这样将保证无论输入任何长度的文本甚至是空文本都得到77x768大小的特征。 在训练SD的过程中CLIP text encoder模型是冻结的。在早期的工作中比如OpenAI的GLIDE和latent diffusion中的LDM均采用一个随机初始化的tranformer模型来提取text的特征但是最新的工作都是采用预训练好的text model。 比如谷歌的Imagen采用纯文本模型T5 encoder来提出文本特征而SD则采用CLIP text encoder预训练好的模型往往已经在大规模数据集上进行了训练它们要比直接采用一个从零训练好的模型要好。 2.4 模型训练
SD的训练是采用了32台8卡的A100机器32 x 8 x A100_40GB GPUs单卡的训练batch size为2并采用gradient accumulation其中gradient accumulation steps2那么训练的总batch size就是32x8x2x22048。
训练优化器采用AdamW训练采用warmup在初始10,000步后学习速率升到0.0001后面保持不变。至于训练时间文档上只说了用了150,000小时这个应该是A100卡时如果按照256卡A100来算的话那么大约需要训练25天左右。
SD提供了不同版本的模型其训练过程如下
SD v1.1在laion2B-en数据集上以256x256大小训练237,000步上面我们已经说了laion2B-en数据集中256以上的样本量共1324M然后在laion5B的高分辨率数据集以512x512尺寸训练194,000步这里的高分辨率数据集是图像尺寸在1024x1024以上共170M样本。SD v1.2以SD v1.1为初始权重在improved_aesthetics_5plus数据集上以512x512尺寸训练515,000步数这个improved_aesthetics_5plus数据集上laion2B-en数据集中美学评分在5分以上的子集共约600M样本注意这里过滤了含有水印的图片pwatermark0.5)以及图片尺寸在512x512以下的样本。SD v1.3以SD v1.2为初始权重在improved_aesthetics_5plus数据集上继续以512x512尺寸训练195,000步数不过这里采用了CFG以10%的概率随机drop掉text。SD v1.4以SD v1.2为初始权重在improved_aesthetics_5plus数据集上采用CFG以512x512尺寸训练225,000步数。SD v1.5以SD v1.2为初始权重在improved_aesthetics_5plus数据集上采用CFG以512x512尺寸训练595,000步数。
其实可以看到SD v1.3、SD v1.4和SD v1.5其实是以SD v1.2为起点在improved_aesthetics_5plus数据集上采用CFG训练过程中的不同checkpoints目前最常用的版本是SD v1.4和SD v1.5。
三、Stable Diffusion 发展
SDv2在SDv1的基础上引入了更强大的图文编码器如OpenCLIP性能进一步得到提升随着图形界面的出现微调方法的发布控制模型的提出Stable Diffusion逐渐进入了SDvXL时代。 3.1 图形界面
3.1.1 Web UI
Stable Diffusion Web UI 是一个基于 Stable Diffusion 的基础应用利用 gradio 模块搭建出的交互程序可以在低代码 GUI 中立即访问 Stable Diffusion。
Stable Diffusion Web UI 提供了多种功能如 txt2img、img2img、inpaint 等还包含了许多模型融合改进、图片质量修复等附加升级。通过调节不同参数可以生成不同效果用户可以根据自己的需要和喜好进行创作。
除此之外可以通过Stable Diffusion Web UI 训练我们自己的模型它提供了多种训练方式通过掌握训练方法可以自己制作模型。
具体介绍可参考Stable Diffusion Web UI
3.1.2 Comfy UI
ComfyUI 是一个基于节点流程式的stable diffusion AI 绘图工具WebUI 通过将stable diffusion的流程拆分成节点实现了更加精准的工作流定制和完善的可复现性。但节点式的工作流也提高了一部分使用门槛。
同时因为内部生成流程做了优化生成图片时的速度相较于webui又10%~25%的提升根据不同显卡提升幅度不同生成大图片的时候不会爆显存只是图片太大时会因为切块运算的导致图片碎裂个人测试在8G显存下直接生成2360x1440分辨率没有问题往上有几率切碎
ComfyUI中简单的loraHighresfix流程 具体介绍可参考Stable Diffusion Comfy UI
3.2 微调方法
3.1 Lora
LoRA英文全称Low-Rank Adaptation of Large Language Models直译为大语言模型的低阶适应这是微软的研究人员为了解决大语言模型微调而开发的一项技术。比如GPT-3有1750亿参数为了让它能干特定领域的活儿需要做微调但是如果直接对GPT-3做微调成本太高太麻烦了。
LoRA的做法是冻结预训练好的模型权重参数然后在每个TransformerTransforme就是GPT的那个T块里注入可训练的层由于不需要对模型的权重参数重新计算梯度所以大大减少了需要训练的计算量。研究发现LoRA的微调质量与全模型微调相当我愿称之为神器。
要做个比喻的话就好比是大模型的一个小模型或者说是一个插件。LoRA本来是给大语言模型准备的但把它用在cross-attention layers交叉关注层也能影响用文字生成图片的效果。最早的Stable Diffusion模型其实不支持LoRa的后来才加入了对LoRa的支持。
参考链接https://huggingface.co/blog/lora
3.3 控制模型
3.3.1 ControlNet
ControlNet 是用来控制SD模型的一种神经网络模型是SD的一种扩展模型。通过这种扩展模型可以 引入更多条件来干预图像生成过程比如能够将参考图像的构图compositions 或者人体姿势迁移到目标图像。
比如使用canny边缘检测 来控制图像生成 四、其他文生图模型
4.1 DALL-E2
2022年OpenAI发表了《Hierarchical Text-Conditional Image Generation with CLIP Latents》这篇论文这正是DALL-E2的由来。DALL-E2并不是一蹴而就而是基于OpenAI最近数年已有的工作成果包括DALL-E、CLIP、GLIDE等。
DALL-E2 的基本原理和SD一样都是源于最初的扩散概率模型DDPM与之不同发是SD继承了LDM的思想在潜在空间中进行扩散学习而DALL-E2是在像素空间中进行扩散学习所以其计算复杂度较高。 4.2 Imagen
Imagen 于 2022 年 5 月由谷歌发布Imagen 使用 T5-XXL 通用大型语言模型作为文本编码器通过扩散模型实现文本到低分辨率图像的生成最后将低分辨率图像进行两次超分得到高分辨率图像。
4.3 Midjurney
midjourney是一个AI绘画工具其源码是未公开的算法整体是基于stable diffusion在稳定扩散算法的基础上进行了改进。Midjourney 的优势在于
更高的图像质量Midjourney 能够生成更高质量的图像这得益于其引入了一个新的中间状态表示使得模型更好地学习图像的细节和结构。更好的控制能力Midjourney 的中间状态表示使得其可以对图像生成过程进行更精细的控制包括颜色、纹理等方面。更快的训练速度Midjourney 的训练速度相对较快这得益于其采用了一种新的训练策略能够更好地平衡生成图像的质量和训练速度。
五、部署使用 后续持续更新
相关参考
文生图模型之Stable Diffusion2 万字带你了解 Stable Diffusion 发展史从DDPM到DALL-E2和Stable Diffusion——扩散模型相关论文阅读Stable Diffusion ComfyUI 入门感受stable diffusion LORA模型训练最全最详细教程