Stable Diffusion XL网络结构-超详细原创

本文详细解析了StableDiffusion1.5模型的网络结构,特别关注了Unet部分,包括CrossAttnDownBlock2D和CrossAttnUpBlock2D的变化,以及如何融入CLIP技术。作者解释了时间ID的使用和训练技巧。
部署运行你感兴趣的模型镜像

强烈推荐先看本人的这篇

Stable Diffusion1.5网络结构-超详细原创-优快云博客

1 Unet

1.1 详细整体结构

1.2 缩小版整体结构

以生成图像1024x1024为例,与SD1.5的3个CrossAttnDownBlock2D和CrossAttnUpBlock2D相比,SDXL只有2个,但SDXL的CrossAttnDownBlock2D模块有了更多的Transformer模块,且只进行了两次下采样,具体的往下看

1.2.1 DownBlock2D

1.2.1.1 ResBolck2D

和SD1.5不一样的是,多了time_id这个输入,表示origin_size, target_size,以及裁剪坐标,比如图中的time_id=[[1024, 1024, 0, 0, 1024, 1024],[1024, 1024, 0, 0, 1024, 1024]]

有一半是负向提示词,以[1024, 1024, 0, 0, 1024, 1024],为例,两个[1024, 1024]表示origin_size, target_size,[0, 0]是裁剪坐标,这是SDXL在训练的时候用了一些trick,把原始输入图像和目标图像的大小,以及裁剪坐标也作为条件参与训练

Downsample2D通过步长为2的卷积进行下采样

 

1.2.2 CrossAttnDownBlock2D

CrossAttnDownBlock2D_1

CrossAttnDownBlock2D_1表示第一个CrossAttnDownBlock2D,它的Transformer2DModel有两个BasicTransformerBlock,而SD1.5的Transformer2DModel只有一个BasicTransformerBlock

CrossAttnDownBlock2D_2

CrossAttnDownBlock2D_2表示第2个CrossAttnDownBlock2D,它的Transformer2DModel有10个BasicTransformerBlock

 1.2.3 UnetMidBlock2DCrossAttn

其中的Transformer2DModel有10个BasicTransformerBlock

 1.2.4 CrossAttnUpBlock2D

CrossAttnUpBlock2D_2

CrossAttnUpBlock2D_2表示第2个CrossAttnUpBlock2D,它的Transformer2DModel有10个BasicTransformerBlock,UpSample2D和SD1.5结构一致

CrossAttnUpBlock2D_1

CrossAttnUpBlock2D_1表示第21个CrossAttnUpBlock2D,它的Transformer2DModel有2个BasicTransformerBlock

未完待续

2 CLIP

您可能感兴趣的与本文相关的镜像

GPT-oss:20b

GPT-oss:20b

图文对话
Gpt-oss

GPT OSS 是OpenAI 推出的重量级开放模型,面向强推理、智能体任务以及多样化开发场景

### Stable Diffusion XL 1.0 Inpainting 配置模板 针对 `stable-diffusion-xl-1.0-inpainting-0.1` 的配置文件通常会涉及多个方面,包括但不限于损失函数配置、采样器配置以及特定于修复任务的参数设定。 #### 损失函数配置 对于标准扩散模型训练中的损失函数配置如下: ```yaml loss_config: type: "l2" weight: 1.0 ``` 此部分定义了使用的损失类型及其权重[^3]。 #### 采样器配置 为了确保有效的训练过程,必须正确设置 sigma_sampler_config 参数。这有助于控制噪声水平的变化模式,在修复过程中尤为重要: ```yaml sigma_sampler_config: class_name: 'KarrasSigmaScheduler' config: num_train_timesteps: 1000 sigma_min: 0.002 sigma_max: 80.0 ``` 这段代码指定了采用 Karras Sigma 调度算法来管理不同时间步下的噪音强度变化范围。 #### 图像修复专用配置项 考虑到这是专门用于图像修复的任务版本 (inpainting),还需要额外指定一些与输入掩码有关的信息: ```yaml mask_guidance_scale: 5.0 masked_content_loss_weight: 0.5 unmasked_content_loss_weight: 0.5 preserve_color: true ``` 这些选项帮助调整生成结果中保留原始颜色的程度,并平衡已遮挡区域和未遮挡区域内内容的一致性[^1]。 ```python import yaml config = { "loss_config": {"type": "l2", "weight": 1.0}, "sigma_sampler_config": { "class_name": 'KarrasSigmaScheduler', "config": { "num_train_timesteps": 1000, "sigma_min": 0.002, "sigma_max": 80.0}}, "mask_guidance_scale": 5.0, "masked_content_loss_weight": 0.5, "unmasked_content_loss_weight": 0.5, "preserve_color": True} with open('sdxl_inpainting.yaml', 'w') as file: documents = yaml.dump(config, file) ``` 上述 Python 代码展示了如何创建并保存一个 YAML 文件形式的配置实例给 `stable-diffusion-xl-1.0-inpainting-0.1` 使用。
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值