2.0原理才看到VAE,sd3.0就发布了,虽然还没看到源码和详解,但原来的那个小方向估计得弃。人已经麻了。
1.LDMs模型(stable diffusion≈LDMs+CLIP)
2.stable diffusion3.0模型架构图
3.主要改进地方
①前向加噪过程:引入了新的噪声采样器用于改善Rectified Flow训练,该方法优化了噪声的分布和添加方式。
②采样过程:基于Transformer的MM-DiT新架构,取代了原模型中的U-Net预测噪声,与Sora同源。该架构考虑了文本到图像任务的多模态特性。
3.1 Rectified Flow
Rectified Flow作为前向路径的一个特别选择,它通过直线连接数据和噪声,简化了数据和噪声之间的转换。
Rectified Flow模型通过构建两个分布之间的常微分方程(ODE)的传输映射来处理生成建模。
先前版本里,Stable Diffusion生成模型训练时使用的是LDM-Linear,通过线性变换来模拟扩散过程中的数据转为噪声的随机分布,需要为每个时间步长求解ODE。每一步都需要计算添加噪声后图像的分布。
*速度v由神经网络的权重Θ参数化。
而本文使用了替代方法:直接回归一个向量场,该向量场生成和 之间的概率路径。
向量场用于定义数据点在各个时间步长上如何变化以逐渐接近噪声分布,每个时间点t都指示了数据点在特定时间步长上应该移动的方向和距离。
Rectified Flow使用向量场描述数据如何转化为噪声,损失函数为:
重参数化后写作:
Rectified Flow原理基于一个简单的常微分方程(ODE),通过构造一个“尽量走直线”的连续运动系统来产生想要的数据分布。
*上图解释:Reflow将ODE的轨迹进一步变直。
*上图解释:举个实例,Rectified Flow可以将DDPM中模型预测的方差与真实方差之间的损失项化简一步到位。
文中引用之前的工作将前向过程的目标函数统一写作:
注:t是按照某个区间上的均匀分布抽取的,ξ是一个服从均值为0、协方差矩阵为I(单位矩阵)的多元正态分布的随机向量。
作者对不同的公式和损失权重进行比较,由此提出了一个新的时间步策略,将时间上的分布从常用的均匀分布改变为具有密度的分布,等价于使用加权损失,其权重为:
作者希望通过更频繁地采样中间时间步长来给予它们更大的权重,因此讨论了用于加权中间时间步的采样策略。
3.2 MM-DiT
Multimodal Diffusion Backbone是一种架构,它基于DiT(Peebles & Xie, 2023)架构。作者使用这个架构取代了U-net模型,用于输出噪声预测和对角协方差预测。
3.2.1 DiT
DiT只考虑了基于类别条件的图像生成,并使用调制机制依赖于扩散过程的时间步和类别标签来调节神经网络。将随机生成的噪声图像的隐向量“补丁化”(Patchify),输入到DiT Block里,时序t和文本作为条件嵌入来回归出每层的参数,使得网络能够在必要时对输入进行更复杂的变换,而在其他时候则保持输入不变。这个思想与残差连接相关。
注:残差连接是一种常用的技术,它允许网络学习到恒等映射,即在某些情况下,输入可以直接通过神经层而不被改变。输出协方差预测的目的是为了捕捉和建模输入数据的不确定性和相关性。
3.2.2 MM-DiT
类似地,作者将时间步t和cvec的联合嵌入向量输入到调制机制中。然而,由于池化的文本向量仅保留了关于文本输入的粗粒度信息,神经网络还需要来自序列表示的信息。
1.用三个文本编码器训练模型的文本向量。将CLIP-G/14和CLIP-L/14池化输出连接起来形成pooled(2048维)向量,与经过正弦编码后的时间步连接作为MM-DiT的条件输入。另外把倒数第二层输出的tokens排列成4096*154矩阵,经过线性层变换之后作为MM-DiT的文本输入。
2.将随机生成的噪声图像的隐向量“补丁化”(2*2)平铺之后添加位置编码,生成作为MM-DiT的图像输入。
3.由于文本和图像嵌入在概念上有很大的不同,作者为两种模态使用两组独立的权重,这相当于为每种模态设置两个独立的transformer,但是在注意力机制中将两种模态的序列结合起来,这样两种表示可以在它们自己的空间中工作,同时考虑到另一个模态。
4..y作为条件输入回归出缩放、移位、维度缩放的参数,使在块内的任何残差连接之前立即应用某些参数或者操作。
5.最后输出噪声预测。
根据模型的深度d(即注意力块的数量)来参数化模型的大小,d=38时参数达到80亿,之前的模型参数仅8亿。
写完的时候发现不仅主创跑了,CEO也卸任了,希望还能开源吧。