diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/README.md b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/README.md
index e0667210f546f1d809221fe491f09f81712d9329..c090ca22a8b9c7a604d3f88e33e623e89b5fae45 100644
--- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/README.md
+++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/README.md
@@ -149,18 +149,21 @@
python3 stable_diffusionxl_pipeline.py \
--model ${model_base} \
--prompt_file ./prompts.txt \
+ --prompt_file_type parti \
--device 0 \
--save_dir ./results \
--steps 50 \
--output_dir ./models \
--flag 0 \
--height 1024 \
- --width 1024
+ --width 1024 \
+ --batch_size 1
# 使用UnetCache策略
python3 stable_diffusionxl_pipeline.py \
--model ${model_base} \
--prompt_file ./prompts.txt \
+ --prompt_file_type parti \
--device 0 \
--save_dir ./results_unetCache \
--steps 50 \
@@ -168,12 +171,14 @@
--use_cache \
--flag 0 \
--height 1024 \
- --width 1024
+ --width 1024 \
+ --batch_size 1
# 使用UnetCache策略,同时使用双卡并行策略
python3 stable_diffusionxl_pipeline_cache_parallel.py \
--model ${model_base} \
--prompt_file ./prompts.txt \
+ --prompt_file_type parti \
--device 0,1 \
--save_dir ./results_unetCache_parallel \
--steps 50 \
@@ -181,13 +186,15 @@
--use_cache \
--flag 0 \
--height 1024 \
- --width 1024
+ --width 1024 \
+ --batch_size 1
```
参数说明:
- --model:模型名称或本地模型目录的路径。
- --output_dir:存放导出模型的目录。
- --prompt_file:提示词文件。
+ - --prompt_file_type: prompt文件类型,用于指定读取方式,可选plain,parti,hpsv2。
- --save_dir:生成图片的存放目录。
- --batch_size:模型batch size。
- --steps:生成图片迭代次数。
@@ -216,7 +223,9 @@
## 精度验证
- 由于生成的图片存在随机性,所以精度验证将使用CLIP-score来评估图片和输入文本的相关性,分数的取值范围为[-1, 1],越高越好。
+ 由于生成的图片存在随机性,提供两种精度验证方法:
+ 1. CLIP-score(文图匹配度量):评估图片和输入文本的相关性,分数的取值范围为[-1, 1],越高越好。使用Parti数据集进行验证。
+ 2. HPSv2(图片美学度量):评估生成图片的人类偏好评分,分数的取值范围为[0, 1],越高越好。使用HPSv2数据集进行验证
注意,由于要生成的图片数量较多,进行完整的精度验证需要耗费很长的时间。
@@ -226,15 +235,19 @@
wget https://raw.githubusercontent.com/google-research/parti/main/PartiPrompts.tsv --no-check-certificate
```
- 2. 下载Clip模型权重
+ 2. 下载模型权重
```bash
+ # Clip Score和HPSv2均需要使用的权重
GIT_LFS_SKIP_SMUDGE=1
git clone https://huggingface.co/laion/CLIP-ViT-H-14-laion2B-s32B-b79K
cd ./CLIP-ViT-H-14-laion2B-s32B-b79K
+
+ # HPSv2权重
+ wget https://huggingface.co/spaces/xswu/HPSv2/resolve/main/HPS_v2_compressed.pt --no-check-certificate
```
也可手动下载[权重](https://huggingface.co/laion/CLIP-ViT-H-14-laion2B-s32B-b79K/blob/main/open_clip_pytorch_model.bin)
- 将权重放到`CLIP-ViT-H-14-laion2B-s32B-b79K`目录下
+ 将权重放到`CLIP-ViT-H-14-laion2B-s32B-b79K`目录下,手动下载[HPSv2权重](https://huggingface.co/spaces/xswu/HPSv2/resolve/main/HPS_v2_compressed.pt)放到当前路径
3. 使用推理脚本读取Parti数据集,生成图片
@@ -252,7 +265,8 @@
--output_dir ./models \
--flag 0 \
--height 1024 \
- --width 1024
+ --width 1024 \
+ --batch_size 1
# 使用UnetCache策略
python3 stable_diffusionxl_pipeline.py \
@@ -268,7 +282,8 @@
--use_cache \
--flag 0 \
--height 1024 \
- --width 1024
+ --width 1024 \
+ --batch_size 1
# 使用UnetCache策略,同时使用双卡并行策略
python3 stable_diffusionxl_pipeline_cache_parallel.py \
@@ -284,16 +299,16 @@
--use_cache \
--flag 0 \
--height 1024 \
- --width 1024
-
+ --width 1024 \
+ --batch_size 1
```
参数说明:
- --model:模型名称或本地模型目录的路径。
- --output_dir:存放导出模型的目录。
- --prompt_file:提示词文件。
- - --prompt_file_type: prompt文件类型,用于指定读取方式,可选plain,parti,hpsv2。
- - --num_images_per_prompt: 每个prompt生成的图片数量。
+ - --prompt_file_type: prompt文件类型,用于指定读取方式,可选plain,parti,hpsv2。注意使用hpsv2时,设置num_images_per_prompt=1即可。
+ - --num_images_per_prompt: 每个prompt生成的图片数量。注意使用hpsv2时,设置num_images_per_prompt=1即可。
- --max_num_prompts:限制prompt数量为前X个,0表示不限制。
- --save_dir:生成图片的存放目录。
- --batch_size:模型batch size。
@@ -304,23 +319,41 @@
带unetCache,执行完成后会在`./results_PartiPrompts_unetCache`目录下生成推理图片,并且会在当前目录生成一个`image_info.json`文件,记录着图片和prompt的对应关系。
带unetCache,同时使用双卡并行策略,执行完成后会在`./results_PartiPrompts_unetCache_parallel`目录下生成推理图片,并且会在当前目录生成一个`image_info.json`文件,记录着图片和prompt的对应关系。
- 4. 计算CLIP-score
+ 4. 计算精度指标
+
+ 1. CLIP-score
+
+ ```bash
+ python3 clip_score.py \
+ --device=cpu \
+ --image_info="image_info.json" \
+ --model_name="ViT-H-14" \
+ --model_weights_path="./CLIP-ViT-H-14-laion2B-s32B-b79K/open_clip_pytorch_model.bin"
+ ```
+
+ 参数说明:
+ - --device: 推理设备。
+ - --image_info: 上一步生成的`image_info.json`文件。
+ - --model_name: Clip模型名称。
+ - --model_weights_path: Clip模型权重文件路径。
+
+ 执行完成后会在屏幕打印出精度计算结果。
+
+ 2. HPSv2
- ```bash
- python clip_score.py \
- --device=cpu \
- --image_info="image_info.json" \
- --model_name="ViT-H-14" \
- --model_weights_path="./CLIP-ViT-H-14-laion2B-s32B-b79K/open_clip_pytorch_model.bin"
- ```
+ ```bash
+ python3 hpsv2_score.py \
+ --image_info="image_info.json" \
+ --HPSv2_checkpoint="./HPS_v2_compressed.pt" \
+ --clip_checkpoint="./CLIP-ViT-H-14-laion2B-s32B-b79K/open_clip_pytorch_model.bin"
+ ```
- 参数说明:
- - --device: 推理设备。
- - --image_info: 上一步生成的`image_info.json`文件。
- - --model_name: Clip模型名称。
- - --model_weights_path: Clip模型权重文件路径。
+ 参数说明:
+ - --image_info: 上一步生成的`image_info.json`文件。
+ - --HPSv2_checkpoint: HPSv2模型权重文件路径。
+ - --clip_checkpointh: Clip模型权重文件路径。
- 执行完成后会在屏幕打印出精度计算结果。
+ 执行完成后会在屏幕打印出精度计算结果。
## 量化功能【可选】