实际上 Diffusion 是使用Text Encoder生成文字对应的embedding(Text Encoder使用CLIP模型),然后和随机噪声embedding,time step embedding一起作为Diffusion的输入,最后生成理想的图片。我们看一下完整的图: token embedding、随机噪声embedding、time embedding一起输入diffusion 上图我们看到了Diffusion的输入为token embedding和...
ResBlock 网络 ResBlock 网络,有两个输入分别是 ① 来自上一个模块的输入和 ②timesteps 对应的嵌入向量 timestep_emb(维度为[B, 4*M],M 为可配置参数),网络结构图如下所示。 timestep_embedding 的生成方式,用的是“Attention is All you Need”论文的 Transformer 方法,通过 sin 和 cos 函数再经过两个 ...
那可能效果不是很好,但也不想train T个noise predicter,于是有了一个很聪明的想法,那就是把step信息加入模型,这样模型的输入一共是3个,全是noise的图片(也就是normal distirbution sample), 文字prompt,time-step embedding。
实际上 Diffusion 是使用 Text Encoder 生成文字对应的 embedding(Text Encoder 使用 CLIP 模型),然后和随机噪声 embedding,time step embedding 一起作为 Diffusion 的输入,最后生成理想的图片。我们看一下完整的图: ▲token embedding、随机噪声embedding、time embedding一起输入diffusion 上图我们看到了 Diffusion 的输...
噪点强度级别(Noise amount)可以通过时间步长(timestep)来表示,它也被转换成一个 embedding 向量(图中 noise amount embedding),输入到每一个残差网络模块中; U-Net的内部结构,主要由残差网络(ResNet)组成 现在让我们加入文本 embedding 向量。此时,在 U-Net 内部可以看到(下图): ...
ResBlock 网络,有两个输入分别是 ① 来自上一个模块的输入和 ②timesteps 对应的嵌入向量 timestep_emb(维度为[B, 4*M],M 为可配置参数),网络结构图如下所示。 timestep_embedding 的生成方式,用的是“Attention is All you Need”论文的 Transformer 方法,通过 sin 和 cos 函数再经过两个 Linear 进行变换...
我解释一下和ResBlock模块和SpatialTransformer模块,输入为timestep_embedding,context 以及input就是三个输入分别是时间步数,文本向量,加噪图像,时间步数你可以理解为transformer里的位置编码,在自然语言处理中用来告诉模型一句话每个字的位置信...
嵌入/标签(Embedding)嵌入。Stable Diffusion v1 使用 Open AI 的 ViT-L/14 剪辑模型。嵌入是一个 768 个值的向量。每个令牌都有自己唯一的嵌入向量。嵌入由 CLIP 模型固定,该模型是在训练期间学习的。为什么我们需要嵌入(Embedding)?这是因为有些词彼此密切相关。我们希望利用这些信息。例如,man、gentleman ...
ResBlock 网络,有两个输入分别是 ① 来自上一个模块的输入和 ②timesteps 对应的嵌入向量 timestep_emb(维度为[B, 4*M],M 为可配置参数),网络结构图如下所示。 timestep_embedding 的生成方式,用的是“Attention is All you Need”论文的 Transformer 方法,通过 sin 和 cos 函数再经过两个 Linear 进行变换...
然后将图像token线性地映射到所需的Transformer输入或hidden size维度的图像输入embedding中,并同时学习2D position embedding 和原始的Transformer架构一样,包括几个transformer层,使用自注意块、交叉注意力块和MLP块来提取特征。 在输出层,使用一个MLP将每个masked图像嵌入转换为一组logits(对应于VQGAN codebook的大小),并...