stable-diffusion-xl_pytorch
论文
SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis
模型结构
sdxl在stable diffusion
的基础上使用了更大的Unet backbone
,以及两个text-encoder
对prompt进行处理,同时包含两个模型,分别为Base
和Refiner
,其中Base
可以单独使用以生成图像,也可以Base
和Refiner
同时使用,生成更高分辨率的图像。
算法原理
sdxl遵循DDPM
训练目标,通过扩散-重建
方式训练网络。
环境配置
Docker(方法一)
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.1-py3.10
docker run --shm-size 50g --network=host --name=sdxl --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v 项目地址(绝对路径):/home/ -v /opt/hyhal:/opt/hyhal:ro -it <your IMAGE ID> bash
pip install -r requirements.txt
Dockerfile(方法二)
docker build -t <IMAGE_NAME>:<TAG> .
docker run --shm-size 50g --network=host --name=sdxl --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v 项目地址(绝对路径):/home/ -v /opt/hyhal:/opt/hyhal:ro -it <your IMAGE ID> bash
pip install -r requirements.txt
Anaconda (方法三)
1、关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装: https://developer.hpccube.com/tool/
DTK驱动:dtk24.04.1
python:python3.10
torch: 2.1.0
torchvision: 0.16.0
Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应
2、其它非特殊库参照requirements.txt安装
pip install -r requirements.txt
数据集
无
训练
无
推理
python inference_diffusers.py --mode t2i --prompt <your prompt>
更多参数列表如下所示
key value 说明 --mode t2i/i2i/inpainting/t2i_wr/inpainting_wr 模型模式,wr表示with refiner --base_path /path/to/sdxl-base sdxl基础模型路径 --prompt your prompt 提示语 --refiner_path /path/to/sdxl-refiner sdxl-refiner模型路径 --image_path 图像路径 --mask_path 掩码图像路径 --save_root 图像存储文件夹路径注意:该脚本仅用于sdxl基本功能测试,更多高级功能请参考参考资料
部分,也可以使用ComfyUI或Fooocus 获取更好的体验。
result
prompt: a panda is playing a ball.
t2i i2i inpainting img mask output精度
无
应用场景
算法类别
AIGC
热点应用行业
零售,广媒,教育
预训练权重
base-model refiner-model huggingface / SCNet 高速通道 huggingface / SCNet高速通道权重文件结构(以下权重按需下载并放入相应的文件夹)
pretrained_models/
├── stable-diffusion-xl-base-1.0
│ ├── 01.png
│ ├── comparison.png
│ ├── LICENSE.md
│ ├── model_index.json
│ ├── pipeline.png
│ ├── README.md
│ ├── scheduler
│ │ └── scheduler_config.json
│ ├── sd_xl_base_1.0_0.9vae.safetensors
│ ├── sd_xl_base_1.0.safetensors
│ ├── sd_xl_offset_example-lora_1.0.safetensors
│ ├── text_encoder
│ │ ├── config.json
│ │ ├── flax_model.msgpack
│ │ ├── model.fp16.safetensors
│ │ ├── model.onnx
│ │ ├── model.safetensors
│ │ ├── openvino_model.bin
│ │ └── openvino_model.xml
│ ├── text_encoder_2
│ │ ├── config.json
│ │ ├── flax_model.msgpack
│ │ ├── model.fp16.safetensors
│ │ ├── model.onnx
│ │ ├── model.onnx_data
│ │ ├── model.safetensors
│ │ ├── openvino_model.bin
│ │ └── openvino_model.xml
│ ├── tokenizer
│ │ ├── merges.txt
│ │ ├── special_tokens_map.json
│ │ ├── tokenizer_config.json
│ │ └── vocab.json
│ ├── tokenizer_2
│ │ ├── merges.txt
│ │ ├── special_tokens_map.json
│ │ ├── tokenizer_config.json
│ │ └── vocab.json
│ ├── unet
│ │ ├── config.json
│ │ ├── diffusion_flax_model.msgpack
│ │ ├── diffusion_pytorch_model.fp16.safetensors
│ │ ├── diffusion_pytorch_model.safetensors
│ │ ├── model.onnx
│ │ ├── model.onnx_data
│ │ ├── openvino_model.bin
│ │ └── openvino_model.xml
│ ├── vae
│ │ ├── config.json
│ │ ├── diffusion_flax_model.msgpack
│ │ ├── diffusion_pytorch_model.fp16.safetensors
│ │ └── diffusion_pytorch_model.safetensors
│ ├── vae_1_0
│ │ ├── config.json
│ │ ├── diffusion_pytorch_model.fp16.safetensors
│ │ └── diffusion_pytorch_model.safetensors
│ ├── vae_decoder
│ │ ├── config.json
│ │ ├── model.onnx
│ │ ├── openvino_model.bin
│ │ └── openvino_model.xml
│ └── vae_encoder
│ ├── config.json
│ ├── model.onnx
│ ├── openvino_model.bin
│ └── openvino_model.xml
└── stable-diffusion-xl-refiner-1.0
├── 01.png
├── comparison.png
├── LICENSE.md
├── model_index.json
├── pipeline.png
├── README.md
├── scheduler
│ └── scheduler_config.json
├── sd_xl_refiner_1.0_0.9vae.safetensors
├── sd_xl_refiner_1.0.safetensors
├── text_encoder_2
│ ├── config.json
│ ├── model.fp16.safetensors
│ └── model.safetensors
├── tokenizer_2
│ ├── merges.txt
│ ├── special_tokens_map.json
│ ├── tokenizer_config.json
│ └── vocab.json
├── unet
│ ├── config.json
│ ├── diffusion_pytorch_model.fp16.safetensors
│ └── diffusion_pytorch_model.safetensors
├── vae
│ ├── config.json
│ ├── diffusion_pytorch_model.fp16.safetensors
│ └── diffusion_pytorch_model.safetensors
└── vae_1_0
├── config.json
├── diffusion_pytorch_model.fp16.safetensors
└── diffusion_pytorch_model.safetensors
源码仓库及问题反馈
ModelZoo / stable-diffusion-xl_pytorch · GitLab参考资料
https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0
https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0
https://github.com/huggingface/diffusers/blob/main/docs/source/en/using-diffusers/sdxl.md
总结
### 文章总结:Stable Diffusion XL PyTorch#### 论文
- **标题**:SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis
- **论文链接**:[arXiv](https://arxiv.org/abs/2307.01952)
#### 模型结构
- **基础**:基于Stable Diffusion模型。
- **主要改进**:
- 使用更大的Unet backbone。
- 包含两个text-encoder处理prompt。
- 包含两个模型:Base和Refiner。
- Base模型可单独用于图像生成。
- Base和Refiner结合使用时,生成更高分辨率的图像。
#### 算法原理
- 遵循DDPM (Denoising Diffusion Probabilistic Models) 训练目标。
- 使用“扩散-重建”方式训练网络。
#### 环境配置(三种方法)
- **Docker方法一**:拉取预配置的Docker镜像,设置相关参数并运行。
- **Dockerfile方法**:构建自定义Docker镜像,并运行容器。
- **Anaconda方法**:使用光合开发者社区提供的特殊版深度学习库,安装Python和Torch等必要工具,再安装requirements.txt中的其他库。
#### 数据集与训练
- **数据集**:文中未提供具体数据集信息。
- **训练**:文中未提供具体训练步骤。
#### 推理
- 通过运行`inference_diffusers.py`脚本进行推理,支持多种模式(t2i, i2i, inpainting, t2i_wr, inpainting_wr)。
- 提供多个参数用于调整模型行为(如model mode, base/refiner路径, prompt等)。
#### 结果
- 示例生成结果:提供了一幅“a panda is playing a ball”的示例图片,展示了不同模式下的生成效果(t2i, i2i, inpainting)。
#### 精度
- 文中未提及具体精度信息。
#### 应用场景
- **算法类别**:AIGC(AI Generated Content)。
- **热点应用行业**:零售、广告媒体、教育。
#### 预训练权重
- 提供预训练权重文件的详细结构和下载链接(huggingface/SCNet)。
#### 源码仓库及问题反馈
- 源码仓库:[GitLab ModelZoo / stable-diffusion-xl_pytorch](https://gitlab.com/ModelZoo/stable-diffusion-xl_pytorch)
#### 参考资料
- Hugging Face上的Stable Diffusion XL Base和Refiner模型链接。
- Diffusers库中关于SDXL的官方文档链接。