当前位置:AIGC资讯 > AIGC > 正文

stable-diffusion-xl_pytorch生成高质量的图像的AIGC模型

stable-diffusion-xl_pytorch

论文

SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis

https://arxiv.org/abs/2307.01952

模型结构

sdxl在stable diffusion的基础上使用了更大的Unet backbone,以及两个text-encoder对prompt进行处理,同时包含两个模型,分别为BaseRefiner,其中Base可以单独使用以生成图像,也可以BaseRefiner同时使用,生成更高分辨率的图像。

算法原理

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的官方文档链接。

更新时间 2024-09-24