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的官方文档链接。 diffusionjsonpytorchsdxldocdockertokenpromptonnxcodepnghuggingfacepythonstable diffusiongit数据集参考资料arxiv预训练开发者社区