目录
1 Unet
1.1详细整体结构
1.2 缩小版整体结构
1.3 时间步编码
1.4 CrossAttnDownBlock2D
1.4.1 ResnetBlock2D
1.4.2 Transformer2DModel
1.4.2.1 BasicTransformerBlock
1.4.2.1.1 SelfAttention
1.4.2.1.2 CrossAttention
2 VAE
3 CLIP
绘制软件:ProcessOn,以下图片保存可高清查看
1 Unet
1.1详细整体结构
1.2 缩小版整体结构
1.3 时间步编码
1.4 CrossAttnDownBlock2D
每个ResnetBlock2D的输入有两个
1,一个是来自上一层的输出lattent,
2,另一个来自时间步编码模块的输出time_embeds ( shape=[2, 1280], 后面省略说明,默认[2, 1280]这种写法是tersor的形状)
每个Transformer2DModel输入有两个
1,上一层的输出
2, CLIP text_encoder的文本编码text embedding,或者叫提示词编码prompt embedding,其shape=[2, 77, 768]
后面凡是有ResnetBlock2D和Transformer2DModel的模块,其输入形式都是如此,为了方便,后面有些模块的time_embeds和prompt embedding这两个输入就默认不画了,例如UnetMidBlock2DCrossAttn、UpBlock2D、CrossAttnUpBlock2D
1.4.1 ResnetBlock2D
需要注意的点
1, ResnetBlock2D的输入有两个,一个是来自上一层的lattent,另一个来自时间步编码模块的输出time_embeds ( shape=[2, 1280], 后面省略说明,默认[2, 1280]这种写法是tersor的形状)
2, Conv3x3和Linear的输入输出Channel,不同层会不一样
3, 输入输出通道数不一致的时候,残差连接会用一个1x1的卷积
1.4.2 Transformer2DModel
Transformer2DModel输入有两个
1,上一层的输入
2, CLIP text_encoder的文本编码text embedding,或者叫提示词编码prompt embedding,其shape=[2, 77, 768]
1.4.2.1 BasicTransformerBlock
1.4.2.1.1 SelfAttention
1.4.2.1.2 CrossAttention
1.4.2.1.3 FeedForward
1.4.3 DownSample2D
1.5 DownBlock2D
1.6