Stable Diffusion1.5网络结构-超详细原创

目录

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详细整体结构

Stable Diffusion1.5网络结构-超详细原创_第1张图片

1.2 缩小版整体结构

Stable Diffusion1.5网络结构-超详细原创_第2张图片

1.3 时间步编码

Stable Diffusion1.5网络结构-超详细原创_第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

Stable Diffusion1.5网络结构-超详细原创_第4张图片

1.4.1 ResnetBlock2D

需要注意的点

1, ResnetBlock2D的输入有两个,一个是来自上一层的lattent,另一个来自时间步编码模块的输出time_embeds ( shape=[2, 1280], 后面省略说明,默认[2, 1280]这种写法是tersor的形状)

2, Conv3x3和Linear的输入输出Channel,不同层会不一样

3, 输入输出通道数不一致的时候,残差连接会用一个1x1的卷积

Stable Diffusion1.5网络结构-超详细原创_第5张图片

1.4.2 Transformer2DModel

Transformer2DModel输入有两个

1,上一层的输入

2, CLIP text_encoder的文本编码text embedding,或者叫提示词编码prompt embedding,其shape=[2, 77, 768]

Stable Diffusion1.5网络结构-超详细原创_第6张图片

1.4.2.1 BasicTransformerBlock

Stable Diffusion1.5网络结构-超详细原创_第7张图片

1.4.2.1.1 SelfAttention

Stable Diffusion1.5网络结构-超详细原创_第8张图片

1.4.2.1.2 CrossAttention

Stable Diffusion1.5网络结构-超详细原创_第9张图片

1.4.2.1.3 FeedForward

Stable Diffusion1.5网络结构-超详细原创_第10张图片

1.4.3 DownSample2D

Stable Diffusion1.5网络结构-超详细原创_第11张图片

1.5 DownBlock2D

Stable Diffusion1.5网络结构-超详细原创_第12张图片

1.6 

2 VAE

3 CLIP

你可能感兴趣的:(2023AIGC,stable,diffusion)