iis网站筛选器被挂马,网站建站 在线制作,广州市住房和城乡建设局阳光家缘,wordpress 远程调用#x1f33a;系列文章推荐#x1f33a; 扩散模型系列文章正在持续的更新#xff0c;更新节奏如下#xff0c;先更新SD模型讲解#xff0c;再更新相关的微调方法文章#xff0c;敬请期待#xff01;#xff01;#xff01;#xff08;本文及其之前的文章均已更新… 系列文章推荐 扩散模型系列文章正在持续的更新更新节奏如下先更新SD模型讲解再更新相关的微调方法文章敬请期待本文及其之前的文章均已更新 SD模型原理 Stable Diffusion概要讲解Stable diffusion详细讲解Stable Diffusion的加噪和去噪详解Diffusion ModelStable Diffusion核心网络结构——VAEStable Diffusion核心网络结构——CLIP Text EncoderStable Diffusion核心网络结构——U-NetStable Diffusion中U-Net的前世今生与核心知识SD模型性能测评Stable Diffusion经典应用场景SDXL的优化工作 微调方法原理 DreamBoothLoRALORA及其变种介绍ControlNetControlNet文章解读Textual Inversion 和 Embedding fine-tuning
Stable Diffusion核心网络结构
摘录来源https://zhuanlan.zhihu.com/p/632809634
目录
Stable Diffusion核心网络结构
SD模型整体架构初识
CLIP Text Encoder模型
微调文本映射
原始CLIP、BLIP SD模型整体架构初识
Stable Diffusion模型整体上是一个End-to-End模型主要由VAE变分自编码器Variational Auto-EncoderU-Net以及CLIP Text Encoder三个核心组件构成。
本文主要介绍CLIP Text EncoderVAE和U-Net请参考
Stable Diffusion核心网络结构——VAEStable Diffusion核心网络结构——U-Net
在FP16精度下Stable Diffusion模型大小2GFP324G其中U-Net大小1.6GVAE模型大小160M以及CLIP Text Encoder模型大小235M约123M参数。其中U-Net结构包含约860M参数FP32精度下大小为3.4G左右。 Stable Diffusion整体架构图 CLIP Text Encoder模型
作为文生图模型Stable Diffusion中的文本编码模块直接决定了语义信息的优良程度从而影响到最后图片生成的质量和与文本的一致性。
在这里多模态领域的神器——CLIPContrastive Language-Image Pre-training跨过了周期从传统深度学习时代进入AIGC时代成为了SD系列模型中文本和图像之间的“桥梁”。并且从某种程度上讲正是因为CLIP模型的前置出现加速推动了AI绘画领域的繁荣。
那么什么是CLIP呢CLIP有哪些优良的性质呢为什么是CLIP呢
首先CLIP模型是一个基于对比学习的多模态模型主要包含Text Encoder和Image Encoder两个模型。其中Text Encoder用来提取文本的特征可以使用NLP中常用的text transformer模型作为Text Encoder而Image Encoder主要用来提取图像的特征可以使用CNN/Vision transformer模型ResNet和ViT等作为Image Encoder。与此同时他直接使用4亿个图片与标签文本对数据集进行训练来学习图片与本文内容的对应关系。
与U-Net的Encoder和Decoder一样CLIP的Text Encoder和Image Encoder也能非常灵活的切换庞大图片与标签文本数据的预训练赋予了CLIP强大的zero-shot分类能力。
灵活的结构简洁的思想让CLIP不仅仅是个模型也给我们一个很好的借鉴往往伟大的产品都是大道至简的。更重要的是CLIP把自然语言领域的抽象概念带到了计算机视觉领域。 CLIP模型训练使用的图片-文本对数据 CLIP在训练时从训练集中随机取出一张图片和标签文本接着CLIP模型的任务主要是通过Text Encoder和Image Encoder分别将标签文本和图片提取embedding向量然后用余弦相似度cosine similarity来比较两个embedding向量的相似性以判断随机抽取的标签文本和图片是否匹配并进行梯度反向传播不断进行优化训练。 CLIP模型训练示意图 上面讲了Batch为1时的情况当我们把训练的Batch提高到 N 时其实整体的训练流程是不变的。只是现在CLIP模型需要将N个标签文本和N个图片的两两组合预测出N^2个可能的文本-图片对的余弦相似性即下图所示的矩阵。这里共有N个正样本即真正匹配的文本和图片矩阵中的对角线元素而剩余的N^2−N个文本-图片对为负样本这时CLIP模型的训练目标就是最大化N个正样本的余弦相似性同时最小化N^2−N个负样本的余弦相似性。 Batch为N时的CLIP训练示意图 完成CLIP的训练后输入配对的图片和标签文本则Text Encoder和Image Encoder可以输出相似的embedding向量计算余弦相似度就可以得到接近1的结果。同时对于不匹配的图片和标签文本输出的embedding向量计算余弦相似度则会接近0。
就这样CLIP成为了计算机视觉和自然语言处理自然语言处理这两大AI方向的“桥梁”从此AI领域的多模态应用有了经典的基石模型。
上面我们讲到CLIP模型主要包含Text Encoder和Image Encoder两个部分在Stable Diffusion中主要使用了Text Encoder部分。CLIP Text Encoder模型将输入的文本Prompt进行编码转换成Text Embeddings文本的语义信息通过U-Net网络的CrossAttention模块嵌入Stable Diffusion中作为Condition条件对生成图像的内容进行一定程度上的控制与引导目前SD模型使用的是CLIP ViT-L/14CLIP ViT-L/14中的Text Encoder模型。
CLIP ViT-L/14 中的Text Encoder是只包含Transformer结构的模型一共由12个CLIPEncoderLayer模块组成模型参数大小是123M具体CLIP Text Encoder模型结构如下图所示。其中特征维度为768token数量是77所以输出的Text Embeddings的维度为77x768。 CLIPEncoderLayer((self_attn): CLIPAttention((k_proj): Linear(in_features768, out_features768, biasTrue)(v_proj): Linear(in_features768, out_features768, biasTrue)(q_proj): Linear(in_features768, out_features768, biasTrue)(out_proj): Linear(in_features768, out_features768, biasTrue))(layer_norm1): LayerNorm((768,), eps1e-05, elementwise_affineTrue)(mlp): CLIPMLP((activation_fn): QuickGELUActivation()(fc1): Linear(in_features768, out_features3072, biasTrue)(fc2): Linear(in_features3072, out_features768, biasTrue))(layer_norm2): LayerNorm((768,), eps1e-05, elementwise_affineTrue)) 下图是Rocky梳理的Stable Diffusion CLIP Text Encoder的完整结构图大家可以感受一下其魅力看着这个完整结构图学习Stable Diffusion CLIP Text Encoder部分相信大家脑海中的思路也会更加清晰 Stable Diffusion CLIP Text Encoder完整结构图 一般来说我们提取CLIP Text Encoder模型最后一层特征作为CrossAttention模块的输入但是开源社区的不断实践为我们总结了如下经验当我们生成二次元内容时可以选择提取CLIP Text Encoder模型倒数第二层特征当我们生成写实场景内容时可以选择提取CLIP Text Encoder模型最后一层的特征。这让Rocky想起了SRGAN以及感知损失其也是提取了VGG网络的中间层特征才达到了最好的效果AI领域的“传承”与共性往往在这些不经意间让人感到人工智能的魅力与美妙。
由于CLIP训练时所采用的最大Token数是77所以在SD模型进行前向推理时当输入Prompt的Token数量超过77时将通过Clip操作拉回77x768而如果Token数不足77则会使用padding操作得到77x768。如果说全卷积网络的设计让图像输入尺寸不再受限那么CLIP的这个设置就让输入的文本长度不再受限可以是空文本。无论是非常长的文本还是空文本最后都将得到一样维度的特征矩阵。
同时在SD模型的训练中一般来说CLIP的整体性能是足够支撑我们的下游细分任务的所以CLIP Text Encoder模型参数是冻结的我们不需要对其重新训练。 【如果我们想要一个新的embeeding词对应新特征向量可以进行Textual Inversion 或 embedding fine-tuning微调】 注意 Textual Inversion 或 embedding fine-tuning 微调的部分并不是 Stable Diffusion 模型中的 CLIP Text Encoder而是训练新的词汇嵌入embedding这些嵌入会被用在 CLIP Text Encoder 的输入层但CLIP Text Encoder 本身的参数是冻结的并不会在这个过程中被调整。 在AIGC时代我们使用语言文字表达的创意与想法可以轻松让Stable Diffusion生成出一幅幅精美绝伦、创意十足、飞速破圈的图片。而这些背后都有CLIP的功劳CLIP不仅仅连接了文本和图像也连接了AI行业与千万个需要生成图片和视频的行业AI绘画的ToC普惠如此之强Rocky认为CLIP就是那个“隐形冠军”。 微调文本映射
Textual Inversion 和 embedding fine-tuning
原始CLIP、BLIP
参考万字长文解读深度学习——多模态模型CLIP、BLIP、ViLT-CSDN博客