Stable Diffusion XL(未待完续)

打印 上一主题 下一主题

主题 651|帖子 651|积分 1953

模型介绍

Stable Diffusion XL 是一种基于人工智能的图像生成模型,由Stability AI开发。它是Stable Diffusion系列模型中的一员,专门设计用来生成更高质量的图像。这个模型在原有的Stable Diffusion模型的基础上进行了扩展和改进,以支持更大的输出图像尺寸和更细致的图像细节。
先发布Stable Diffusion XL 0.9测试版本,基于用户的使用体验和图片生成的反馈情况,针对性增加数据集和使用RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)技术优化训练后,推出了Stable Diffusion XL 1.0正式版。
比起Stable Diffusion 1.x-2.x,Stable Diffusion XL的参数目增加到了66亿(Base模型35亿+Refiner模型31亿),而且先后发布了模型布局完全类似的0.9和1.0两个版本。Stable Diffusion XL 1.0在0.9版本上使用更多训练集+RLHF来优化生成图像的色彩、对比度、光线以及阴影方面,使得生成图像的构图比0.9版本更加鲜明精确。
模型布局

Stable Diffusion XL是一个二阶段的级联扩散模型(Latent Diffusion Model),包括Base模型和Refiner模型。其中Base模型的主要工作和Stable Diffusion 1.x-2.x同等,具备文生图(txt2img)、图生图(img2img)、图像inpainting等能力。在Base模型之后,级联了Refiner模型,对Base模型生成的图像Latent特征进行精细化提拔,其本质上是在做图生图的工作。
SDXL Base模型由U-Net、VAE以及CLIP Text Encoder(两个)三个模块组成,SDXL Refiner模型同样由U-Net、VAE和CLIP Text Encoder(一个)三个模块组成。

SDXL网络布局图

VAE模型

VAE模型(变分自编码器,Variational Auto-Encoder)是一个经典的生成式模型,具有简便稳定的Encoder-Decoder架构,以及能够高效提取数据Latent特征和Latent特征像素级重修的关键能力。
当输入是图片时,Stable Diffusion XL和Stable Diffusion一样,首先会使用VAE的Encoder布局将输入图像转换为Latent特征,然后U-Net不断对Latent特征进行优化,最后使用VAE的Decoder布局将Latent特征重修出像素级图像。除了提取Latent特征和图像的像素级重修外,VAE还可以改进生成图像中的高频细节,小物体特征和整体图像色彩
当Stable Diffusion XL的输入是文字时,这时我们不须要VAE的Encoder布局,只须要Decoder进行图像重修。VAE的灵活运用,让Stable Diffusion系列增加了几分优雅。
SDXL VAE Encoder部分包罗了三个DownBlock模块、一个ResNetBlock模块以及一个MidBlock模块,将输入图像压缩到Latent空间,转换成为Gaussian Distribution
而VAE Decoder部分正好相反,其输入Latent空间特征,并重修成为像素级图像作为输出。其包罗了三个UpBlock模块、一个ResNetBlock模块以及一个MidBlock模块。
在损失函数方面,使用了久经考验的生成领域“交叉熵”—感知损失(perceptual loss)以及L1回归损失来约束VAE的训练过程。
原生Stable Diffusion XL VAE接纳FP16精度时会出现数值溢出成NaNs的情况,导致重修的图像是一个黑图,所以必须使用FP32精度进行推理重修。

SDXL VAE布局图

U-Net

Stable Diffusion XL中的Text Condition信息由两个Text Encoder提供(OpenCLIP ViT-bigG和OpenAI CLIP ViT-L),通过Cross Attention组件嵌入,作为K Matrix和V Matrix。与此同时,图片的Latent Feature作为Q Matrix。
但是各人知道Text Condition是三维的,而Latent Feature是四维的,那它们是怎么进行Attention机制的呢?
实在在每次进行Attention机制前,我们须要将Latent Feature从[batch_size,channels,height,width]转换到[batch_size,height*width,channels] ,如许就酿成了三维特征,就能够和Text Condition做CrossAttention利用。
Text Condition如何跟latent Feature大小保持同等呢?因为latent embedding不同位置的H和W是不一样的,但是Text Condition是从文本中提取的,其H和W是固定的。这里在CorssAttention模块中有一个非常奇妙的点,那就是在不同特征做Attention利用前,使用Linear层将不同的特征的尺寸大小对齐。
Text Encoder

Stable Diffusion XL与之前的系列相比使用了两个CLIP Text Encoder,分别是OpenCLIP ViT-bigG(694M)和OpenAI CLIP ViT-L/14(123.65M),从而大大增强了Stable Diffusion XL对文本的提取和明白能力,同时提高了输入文本和生成图片的同等性。
Refiner模型

Refiner模型和Base模型一样是基于Latent的扩散模型,也接纳了Encoder-Decoder布局,和U-Net兼容同一个VAE模型。不外在Text Encoder部分,Refiner模型只使用了OpenCLIP ViT-bigG的Text Encoder,同样提取了倒数第二层特征以及进行了pooled text embedding的嵌入。
Refiner模型主要做了图像生成图像(img2img)的工作,其具备很强的迁移兼容能力,可以作为Stable Diffusion、Midjourney、DALL-E、GAN、VAE等生成式模型的级联组件,成为AI绘画领域的一个强力后处置惩罚工具。
模型训练

图像尺寸条件化

Stable Diffusion XL为了在办理数据集利用率问题的同时不引入噪声伪影,将U-Net(Base)模型与原始图像分辨率相干联,核心头脑是将输入图像的原始高度和宽度作为额外的条件嵌入U-Net模型中,表示为 
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表