赞
踩
如何在保证生成质量的前提下降低DM的训练和推理成本
作者发现,之前的DM把大量计算浪费在一些难以察觉的图像细节当中,因此提出Encode-Decode结构,利用Encode提取图像的语义信息latent,latent的尺寸远小于原图(一般4-8倍综合效果较好),然后再利用DM去做生成,最后将生成结果输出给decode恢复成图像形态。
利用文本生成图片,进一步衍生到inpainting功能
tokenizer最大长度为77(CLIP训练时所采用的设置),当输入text的tokens数量超过77后,将进行截断,如果不足则进行paddings,这样将保证无论输入任何长度的文本(甚至是空文本)都得到77x768大小的特征
问题:当输出超长prompt会分段处理?每段的权重如何处理?
text condition将通过CrossAttention模块嵌入进来,此时Attention的query是UNet的中间特征,而key和value则是text embeddings。
第一种形式:
第二种形式:
改进文生图效果
PS:模型将更多的参数放在低维度的UNet中,以减少运算量
增加坐标尺寸作为输入,充分利用低分辨率数据的同时,避免低分辨率图片带来的模型,且可减少局部图生成的问题,训练时采用不同分辨率混合训练
offset-noise
SDXL在多尺度微调阶段采用了offset-noise,这个技术主要是为了解决SD只能生成中等亮度的图像,而无法生成纯黑或者纯白的图像.
简单来说,之所以会出现这个问题,是因为训练和测试过程的不一样,SD所使用的noise scheduler其实在最后一步并没有将图像完全变成随机噪音,这使得训练过程中学习是有偏的,但是测试过程中,我们是从一个随机噪音开始生成的,这种不一致就会出现一定的问题。offset-noise是一个解决这个问题的简单方法,你只需要在训练过程中给采用的噪音加上一定的offset即可
如何进一步提高文生图生成质量及可控性,解决目前文字生成,细节生成不好等问题
集众家之大成,提出新的生成方案:
SD3论文中认为不同时间步的任务难度是不一样:两边相对容易,而中间是比较难的。所以,设计了一些新的采样方法来提高中间时间步的权重。
采用了一个多模态DiT。多模态DiT的一个核心对图像的latent tokens和文本tokens拼接在一起,并采用两套独立的权重处理,但是在attention时统一处理。整个架构图如下所示:
改进的autoencoder: SD3使用16通道的autoencoder, 即encode的输出channel是16。要注意,虽然增加通道并不会对生成模型(UNet或者DiT)的参数带来大的影响(只需要修改网络第一层和最后一层的通道数),但是会增加任务的难度,当通道数从4增加到16,网络要拟合的内容增加了4倍,这也意味模型需要增加参数来提供足够的容量。
文本编码器
SD3的text encoder包含3个预训练好的模型:
MM-DiT
MM-DiT和DiT一样也是处理图像latent空间,这里先对图像的latent转成patches,这里的patch size=2x2,和DiT的默认配置是一样的。patch embedding再加上positional embedding送入transformer中。 这里的重点是如何处理前面说的文本特征。对于CLIP pooled embedding可以直接和timestep embedding加在一起,并像DiT中所设计的adaLN-Zero一样将特征插入transformer block。
对于序列的text embeddings,常规的处理方式是增加cross attention层来处理,其中text embeddings作为attention的keys和values,比如SD的UNet以及PIXART-α(基于DiT)。但是SD3是直接将text embeddings和patch embeddings拼在一起处理,这样不需要额外引入cross-attention。由于text和image属于两个不同的模态,这里采用两套独立的参数来处理,即所有transformer层的学习参数是不共享的,但是共用一个self-attention来实现特征的交互。这等价于采用两个transformer模型来处理文本和图像,但在attention层连接,所以这是一个多模态模型,称之为MM-DiT。MM-DiT和之前文生图模型的一个区别是文本特征不再只是作为一个条件,而是和图像特征同等对待处理。
QK-Normalization
为了提升混合精度训练的稳定性,MM-DiT的self-attention层还采用了QK-Normalization。当模型变大,而且在高分辨率图像上训练时,attention层的attention-logit(Q和K的矩阵乘)会变得不稳定,导致训练出现NAN。这里的解决方案是采用RMSNorm(简化版LayerNorm)对attention的Q和K进行归一化。
变尺度位置编码
MM-DiT的位置编码和ViT一样采用2d的frequency embeddings(两个1d frequency embeddings进行concat)。SD3先在256x256尺寸下预训练,但最终会在以1024x1024为中心的多尺度上微调,这就需要MM-DiT的位置编码需要支持变尺度。SD3采用的解决方案是插值+扩展。
timestep schedule的shift
对高分辨率的图像,如果采用和低分辨率图像的一样的noise schedule,会出现对图像的破坏不够的情况,一个解决办法是对noise schedule进行偏移,对于RF模型来说,就是timestep schedule的shift。
模型scaling
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。