README.md 3.46 KB
Newer Older
gaoqiong's avatar
gaoqiong committed
1
# stable diffusion
yaoht's avatar
yaoht committed
2

gaoqiong's avatar
gaoqiong committed
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
## 论文

https://arxiv.org/pdf/2010.02502

## 模型结构
文生图任务是指将一段文本输入到SD模型中,经过一定的迭代次数,SD模型输出一张符合输入文本描述的图片。

<img src=./sd_model.png style="zoom:100%;" align=middle>

## 算法原理

使用CLIP Text Encode模型将输入的人类文本信息进行编码,生成与文本信息对应的Text Embeddings特征矩阵;
输入文本信息,再用random函数生成一个高斯噪声矩阵 作为Latent Feature(隐空间特征)的“替代” 输入到SD模型的 “图像优化模块” 中;
首先图像优化模块是由U-Net网络和Schedule算法 组成,将图像优化模块进行优化迭代后的Latent Feature输入到 图像解码器 (VAE Decoder) 中,将Latent Feature重建成像素级图。


## 环境配置

### Docker(方法一)

拉取镜像:

```shell
docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:stablediffusion-migraphx-centos7.6-dtk24.04.1-py310
```

创建并启动容器:

```shell
docker run --shm-size 16g --network=host --name=sd2.1_migraphx --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/sd2.1_migraphx:/home/sd2.1_migraphx -v /opt/hyhal:/opt/hyhal:ro -it <Your Image ID> /bin/bash

# 激活dtk
source /opt/dtk/env.sh
```

### Dockerfile(方法二)

```shell
cd ./docker
docker build --no-cache -t sd2.1_migraphx:2.0 .

docker run --shm-size 16g --network=host --name=sd2.1_migraphx --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/sd2.1_migraphx:/home/sd2.1_migraphx -v /opt/hyhal:/opt/hyhal:ro -it <Your Image ID> /bin/bash

# 激活dtk
source /opt/dtk/env.sh
```

## 数据集



## 环境配置

#### 设置环境变量

```shell
export PYTHONPATH=/opt/dtk/lib:$PYTHONPATH
```

#### 安装依赖

```shell
# 进入python示例目录
cd <path_to_sd2.1_migraphx>

# 安装依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
```
#### 模型下载

```bash
## 下载 SD v2.1 model
git lfs install
git clone https://huggingface.co/stabilityai/stable-diffusion-2-1-base
## 或者使用国内镜像网站,下载速度更快
git clone https://hf-mirror.com/stabilityai/stable-diffusion-2-1-base
```

#### onnx模型导出

使用下面命令导出onnx模型:

```bash
optimum-cli export onnx --model stable-diffusion-2-1-base sd21-onnx --task stable-diffusion
```

其中,stabilityai/stable-diffusion-2-1-base为模型下载目录,sd21-onnx为onnx导出模型目录,下面运行示例命令中的onnx-model-path参数就设置为该onnx模型目录。

#### 运行示例

stablediffusion_v2.1模型的推理示例程序是Diffusion_test_offload_false.py,使用如下命令运行该推理示例:

```shell
python Diffusion_test_offload_false.py --prompt "a photograph of an astronaut riding a horse" --seed 13 --output astro_horse.jpg --steps 50 --fp16 all --onnx-model-path sd21-onnx
```

## result
gaoqiong's avatar
git  
gaoqiong committed
100
 
gaoqiong's avatar
gaoqiong committed
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
推理结果:

python程序运行结束后,会在当前目录保存推理生成的图像。

<img src="./astro_horse.jpg" alt="Result" style="zoom: 50%;" />



### 精度



## 应用场景

### 算法类别

`以文生图`

### 热点应用行业

`绘画`,`动漫`,`媒体`

## 源码仓库及问题反馈

https://developer.hpccube.com/codes/modelzoo/stablediffusion_v2.1_migraphx

## 参考资料

https://github.com/Stability-AI/stablediffusion