SD系列模型推理指南¶
概述¶
本文档介绍在 Enflame GCU 上基于 pytorch native 进行 stable‐diffusion 1.5(以下简称 sd v1.5)的 text2image, stable‐diffusion‐xl‐base‐1.0(以下简称 sdxl‐base‐1.0)的 text2image、image2image, stable‐diffusion‐xl Controlnet 的 text2image, stable‐diffusion‐xl turbo 的 text2image、image2image, stable‐diffusion‐xl refiner 的 text2image 、image2image, IP-Adapter-FaceID-SDXL, sd v1.5 controlnet, lcm-lora-sdxl, instantID 的推理过程
环境配置¶
以下步骤基于 Python3.10
, 请先安装所需依赖:
安装环境:安装过程请参考《TopsRider 软件栈安装手册》,请根据手册完成 TopsRider 软件栈安装
安装 torch_gcu
注意:安装 torch_gcu-2.1.0 会自动安装 torch 2.1.0
pip3 install torch_gcu-2.1.0*-cp310-cp310-linux_x86_64.whl
安装 fast_diffusers
pip3 install fast_diffusers-0.27.0*-py3.10-*.whl
安装 fast_diffusers_utils
pip3 install fast_diffusers_utils-0.27.0*-py3.10-*.whl
stable-diffusion-1.5 推理¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-v1-5 路径下下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
39593d5
准备输入图片 准备一张图片,作为 Img2Img 的输入图片,以下用
init_image
表示其路径
执行推理¶
Text2Image 推理¶
使用 sd v1.5 进行推理:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'photo of an astronaut riding a horse on mars' \
--negative_prompt '' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 512 \
--image_width 512 \
--output_dir './results/sd_v1_5/text2img/'
其中,
--model_dir
: sd v1.5 的预训练模型所在的目录--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_txt2img -h
Image2Image 推理¶
使用 sd v1.5 进行Img2Img推理:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_img2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'Astronaut in a jungle, cold color palette, muted colors, detailed, 8k' \
--negative_prompt '' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 512 \
--image_width 512 \
--output_dir './results/sd_v1_5/img2img' \
--init_image ${init_image} \
--strength 0.3
其中,
--model_dir
: sd v1.5 的预训练模型所在的目录--device
: 推理使用的设备,默认为’gcu’--num_images_per_prompt
: 每个 prompt 生成的图片数量--prompt
:正向提示词--negative_prompt
:反向提示词--seed
:推理时设置的随机种子--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--scheduler
: 使用的调度器,当前支持 ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数--output_dir
: 保存生成图片的路径--init_image
: 原始图片路径--strength
: 修改原始图片的幅度,取值为0-1之间,数值越大,修改幅度越大,默认值为0.3
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_img2img -h
Text2Image 高清修复 推理¶
使用 sd v1.5 高清修复 进行推理:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_txt2img_hiresfix \
--model_dir=${path_to_model_dir} \
--device='gcu' \
--num_images_per_prompt=1 \
--prompt='photo of an astronaut riding a horse on mars' \
--negative_prompt='' \
--seed=12345 \
--denoising_steps=30 \
--scheduler='ddim' \
--guidance_scale=7.5 \
--image_height=1024 \
--image_width=1024 \
--strength=0.5 \
--output_dir='./results'
其中,
--model_dir
: sd v1.5 的预训练模型所在的目录--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--strength
: 高清修复强度--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_txt2img_hiresfix -h
stable diffusion 1.5 lora 推理¶
准备模型¶
下载预训练模型:
请从stable-diffusion-v1-5 路径下下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
39593d5
请从 storybookredmond-15-version-storybook-kids-lora-style-for-liberte-redmond-sd-15 网页下载lora到lora存放目录,以下用
path_to_lora
表示其路径version:
v1.0
Hash AUTOV2:
E0B8C68123
Trigger words 1:
KidsRedmAF
Trigger words 2:
Kids Book
执行推理¶
使用 sd v1.5 lora进行推理:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'A cute owl wearing sunglasses, cute, Kids Book, KidsRedmAF' \
--negative_prompt 'ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, blurry, bad anatomy, blurred, watermark, grainy, signature, cut off, draft' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 512 \
--image_width 512 \
--lora ${path_to_lora} \
--adapter_weights 1.0 \
--lora_scale 1.0 \
--merge_lora \
--output_dir './results/sd-v1_5-lora'
其中,
--model_dir
: sd v1.5 的预训练模型所在的目录--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数--lora
: lora(.safetensors格式)的路径,可以传多个lora路径(以空格分开)--adapter_weights
: adapter系数,一般在0~1之间,默认为1.0,其数量要与lora数量相同, 多个 adapter 系数以空格分开--lora_scale
: lora融合系数,一般在0~1之间,仅有1个值--merge_lora
: 模型推理前是否融合lora权重,推荐推理前融合lora,这样推理速度快--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_txt2img -h
stable-diffusion-1.5 Controlnet 推理¶
安装 controlnet_aux¶
pip3 install controlnet_aux==0.0.7
pip3 install scikit-image==0.21.0
准备模型¶
下载预训练模型:
请从 stable-diffusion-v1-5 路径下下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch: main
commit id: 39593d5
下载 controlnet 模型权重(多选 1)
请从 control_v11p_sd15_openpose 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 9ae9f97
请从 control_v11p_sd15_scribble 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 3564ec7
请从 control_v11p_sd15_mlsd 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: f6d481b
请从 control_v11p_sd15_normalbae 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: cb7296e
请从 control_v11p_sd15_inpaint 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: c96e03a
请从 control_v11p_sd15_softedge 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: b5bcad0
请从 control_v11f1p_sd15_depth 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 539f991
请从 control_v11p_sd15_seg 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 2106820
请从 control_v11e_sd15_shuffle 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 8cf2759
请从 control_v11f1e_sd15_tile 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 3f87770
请从 control_v11e_sd15_ip2p 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 1fed6eb
请从 control_v11p_sd15s2_lineart_anime 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 9c03a1c
请从 control_v11p_sd15_lineart 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 1fed6eb
对于 canny, openpose, scribble, mlsd, normalbae, inpaint, softedge, depth, seg, shuffle, tile, ip2p, lineart_anime, lineart 功能, 需下载预处理的模型权重
请从 Annotators 路径下载全部内容到模型存放目录(或者参考相关模型链接从 down model 下载),以下用
annotators_dir
表示其路径branch: main
commit id: 982e7ed
准备输入图片 准备一张图片,作为 controlnet 的输入图片,以下用
control_image
表示其路径。
执行推理¶
对 sd1.5 controlnet 进行推理:
以 controlnet scribble 为例
python3 -m diffusers_utils.examples.stable_diffusion_controlnet.demo_stable_diffusion_controlnet_txt2img \
--model_dir ${path_to_model_dir} \
--model_controlnet_dir ${controlnet_dir} \
--controlnet_type "scribble" \
--controlnet_image ${control_image} \
--controlnet_conditioning_scale 1.0 \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "royal chamber with fancy bed" \
--negative_prompt "" \
--seed 0 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 512 \
--image_width 512 \
--annotators_dir ${annotators_dir} \
--output_dir './results'
其中,
--model_dir
: sd-base-1.5 的预训练模型所在的目录--model_controlnet_dir
: sd1.5 controlnet 的预训练模型所在的目录--controlnet_type
: controlnet 类型,目前支持 canny、openpose、scribble、mlsd、normalbae、inpaint、softedge、depth、seg、shuffle、tile、ip2p、lineart_anime、lineart--controlnet_image
: controlnet 输入图片的路径--controlnet_conditioning_scale
: ControlNet 的输出在乘以此参数的值后与原始 unet 的对应部分相加。--prompt
: 正向提示词--negative_prompt
: 反向提示词--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m和dpm++_2m_karras等--denoising_steps
: 去噪步数,默认为 30--output_dir
: 保存生成图片的路径
此外
--annotators_dir
: 关于前处理模型,openpose和scribble等可以共享该目录--no_preprocess
: 若传入的control_image
为已经过前处理的图片,可以使用此参数,避免再次进行前处理。
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion_controlnet.demo_stable_diffusion_controlnet_txt2img -h
stable-diffusion-2 推理¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-v2 路径下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
1e128c8
准备输入图片 准备一张图片,作为 Img2Img 的输入图片,以下用
init_image
表示其路径
执行推理¶
Text2Image 推理¶
使用 sd v2 进行推理:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'photo of an astronaut riding a horse on mars' \
--negative_prompt '' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 768 \
--image_width 768 \
--output_dir './results/sd_v2/txt2img'
其中,
--model_dir
: sd v2 的预训练模型所在的目录--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_txt2img -h
Image2Image 推理¶
使用 sd v2 进行Img2Img推理:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_img2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'Astronaut in a jungle, cold color palette, muted colors, detailed, 8k' \
--negative_prompt '' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 768 \
--image_width 768 \
--output_dir './results/sd_v2/img2img' \
--init_image ${init_image} \
--strength 0.8
其中,
--model_dir
: sd v2 的预训练模型所在的目录--device
: 推理使用的设备,默认为’gcu’--num_images_per_prompt
: 每个prompt生成的图片--prompt
:正向提示词--negative_prompt
:反向提示词--seed
:推理时设置的随机种子--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数--output_dir
: 保存生成图片的路径--init_image
: 原始图片路径--strength
: 修改原始图片的幅度,取值为0-1之间,数值越大,修改幅度越大,默认值为0.3
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_img2img -h
stable-diffusion-2.1 推理¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-v2.1 路径下下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
5cae40e
准备输入图片 准备一张图片,作为 Img2Img 的输入图片,以下用
init_image
表示其路径
执行推理¶
Text2Image 推理¶
使用 sd v2.1 进行推理:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'photo of an astronaut riding a horse on mars' \
--negative_prompt '' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 768 \
--image_width 768 \
--output_dir './results/sd_v2_1/txt2img'
其中,
--model_dir
: sd v2.1 的预训练模型所在的目录--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_txt2img -h
Image2Image 推理¶
使用 sd v2.1 进行Img2Img推理:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_img2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'Astronaut in a jungle, cold color palette, muted colors, detailed, 8k' \
--negative_prompt '' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 768 \
--image_width 768 \
--output_dir './results/sd_v2_1/img2img' \
--init_image ${init_image} \
--strength 0.8
其中,
--model_dir
: sd v2.1 的预训练模型所在的目录--device
: 推理使用的设备,默认为’gcu’--num_images_per_prompt
: 每个prompt生成的图片--prompt
:正向提示词--negative_prompt
:反向提示词--seed
:推理时设置的随机种子--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数--output_dir
: 保存生成图片的路径--init_image
: 原始图片路径--strength
: 修改原始图片的幅度,取值为0-1之间,数值越大,修改幅度越大,默认值为0.3
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_img2img -h
stable‐diffusion‐xl‐base‐1.0 推理¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-xl-base-1.0 路径下下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
4621659
准备输入图片 准备一张图片,作为 Img2Img 的输入图片,以下用
init_image
表示其路径。如果不传入,则会下载一张默认的图片作为 Img2Img 的输入图片。
执行推理¶
Text2Image 推理¶
使用 sdxl base 进行推理:
python3 -m diffusers_utils.examples.stable_diffusion_xl.demo_stable_diffusion_xl_base_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'photo of an astronaut riding a horse on mars' \
--negative_prompt '' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 512 \
--image_width 512 \
--output_dir './results/sdxl-base/text2img'
其中,
--model_dir
: sdxl-base-1.0 的预训练模型所在的目录--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion_xl.demo_stable_diffusion_xl_base_txt2img -h
Image2Image 推理¶
对 sdxl-base-1.0 Image2Image 进行推理:
python3 -m diffusers_utils.examples.stable_diffusion_xl.demo_stable_diffusion_xl_base_img2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "a photo of an astronaut riding a horse on mars" \
--negative_prompt "" \
--seed 42 \
--denoising_steps 30 \
--scheduler 'ddim' \
--strength 1 \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--output_dir './results/sdxl-base/img2img' \
--init_image ${init_image}
其中,
--model_dir
: sdxl-base-1.0 的预训练模型所在的目录--prompt
: 正向提示词--negative_prompt
: 反向提示词--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, dpm++_2m_karras--guidance_scale
: 文本提示(prompt)对最终生成图像的指导程度,默认为 7.5--denoising_steps
: 去噪步数,默认为 30--output_dir
: 保存生成图片的路径--init_image
: Img2Img 的输入图片
--strength
: 修改原始图片的幅度,取值为0-1之间,数值越大,修改幅度越大,默认值为0.3
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion_xl.demo_stable_diffusion_xl_base_img2img -h
stable‐diffusion‐xl‐base‐1.0 lora 推理¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-xl-base-1.0 路径下下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
4621659
请从 xl-crystalline-dress 路径下载该 lora 到 lora 存放目录,以下用
path_to_lora
表示其路径version:
v1.0
Hash AUTOV2:
23045719DF
Trigger words:
crystalline dress
执行推理¶
使用 sdxl base lora 进行推理:
python3 -m diffusers_utils.examples.stable_diffusion_xl.demo_stable_diffusion_xl_base_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "1girl,beautiful,20 years old,wearing a Mocha,crystalline dress,real nature skin,sunshie,gorgeous woman, colorful, RAW photo,best quality,realistic, clean, masterpiece,finely detail" \
--negative_prompt "low quality, bad quality, sketches" \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--lora ${path_to_lora} \
--adapter_weights 1.0 \
--lora_scale 1.0 \
--merge_lora \
--output_dir './results/sdxl-lora/'
其中,
--model_dir
: sdxl-base-1.0 的预训练模型所在的目录--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数--lora
: lora(.safetensors格式)的路径,可以传多个lora路径(以空格分开)--adapter_weights
: adapter系数,一般在0~1之间,默认为1.0,其数量要与lora数量相同, 多个 adapter 系数以空格分开--lora_scale
: lora融合系数,一般在0~1之间,仅有1个值--merge_lora
: 模型推理前是否融合lora权重,建议推理前融合lora,这样推理速度快--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion_xl.demo_stable_diffusion_xl_base_txt2img -h
stable-diffusion-xl Controlnet 推理¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-xl-base-1.0 路径下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
4621659
下载 controlnet 模型权重(多选 1)
请从 controlnet-canny-sdxl-1.0 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch:
main
commit id:
eb115a1
请从 controlnet-openpose-sdxl-1.0 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch:
main
commit id:
1db673e
如果需要使用 controlnet openpose, 需下载 openpose 的预训练权重
请从 Annotators 路径下载全部内容到模型存放目录,以下用
openpose_dir
表示其路径branch:
main
commit id:
982e7ed
【可选】请从 sdxl-vae-fp16-fix 路径下载全部内容到模型存放目录,以下用
model_vae_fp16_dir
表示其路径branch:
main
commit id:
207b116
准备输入图片
准备一张图片,作为 controlnet 的输入图片,以下用
control_image
表示其路径。如果不传入,则会下载一张默认的图片作为 controlnet 的输入图片。
执行推理¶
对 sdxl-base-1.0 controlnet 进行推理:
以 controlnet canny 为例
python3 -m diffusers_utils.examples.stable_diffusion_xl_controlnet.demo_stable_diffusion_xl_base_controlnet_txt2img \
--model_dir ${path_to_model_dir} \
--model_controlnet_dir ${controlnet_dir} \
--controlnet_type "canny" \
--controlnet_image ${control_image} \
--controlnet_conditioning_scale 0.5 \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "aerial view, a futuristic research complex in a bright foggy jungle, hard lighting" \
--prompt_2 "detailed" \
--negative_prompt "low quality, bad quality, sketches" \
--negative_prompt_2 "ugly, unatural" \
--seed 42 \
--denoising_steps 30 \
--scheduler 'dpm++_2m' \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--output_dir './results' \
--model_vae_fp16_dir ${vae_dir}
其中,
--model_dir
: sdxl-base-1.0 的预训练模型所在的目录--model_controlnet_dir
: sdxl controlnet 的预训练模型所在的目录--controlnet_type
: controlnet 类型,目前支持 canny, openpose--controlnet_image
: controlnet 输入图片的路径--controlnet_conditioning_scale
: ControlNet 的输出在乘以此参数的值后与原始 unet 的对应部分相加。--prompt
: 正向提示词 1--prompt_2
: 正向提示词 2--negative_prompt
: 反向提示词 1--negative_prompt_2
: 反向提示词 2--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持 ddim, ddpm, pndm, euler, euler_a, dpm++_2m, dpm_2m_karras, dpm_sde_karras--denoising_steps
: 去噪步数,默认为 30--output_dir
: 保存生成图片的路径--model_vae_fp16_dir
: 支持 fp16 的 vae decoder 的预训练权重的路径。如果没有指定,则默认是用--model_dir
中的 vae decoder 的权重。
此外
--openpose_dir
: 若--controlnet_type
为 openpose,则传入 openpose 预训练模型所在的目录--no_preprocess
: 若传入的control_image
为已经过前处理的图片,可以使用此参数,避免再次进行前处理。
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion_xl_controlnet.demo_stable_diffusion_xl_base_controlnet_txt2img -h
stable-diffusion-xl Controlnet LoRA 推理¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-xl-base-1.0 路径下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
4621659
下载 controlnet 模型权重(多选 1)
请从 controlnet-canny-sdxl-1.0 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch:
main
commit id:
eb115a1
请从 controlnet-openpose-sdxl-1.0 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch:
main
commit id:
1db673e
如果需要使用 controlnet openpose, 需下载 openpose 的预训练权重
请从 Annotators 路径下载全部内容到模型存放目录,以下用
openpose_dir
表示其路径branch:
main
commit id:
982e7ed
【可选】请从 sdxl-vae-fp16-fix 路径下载全部内容到模型存放目录,以下用
model_vae_fp16_dir
表示其路径branch:
main
commit id:
207b116
请从 xl-crystalline-dress 路径下载该lora到lora存放目录,以下用
path_to_lora
表示其路径version:
v1.0
Hash AUTOV2:
23045719DF
Trigger words:
crystalline dress
准备输入图片
准备一张女性长裙装图片,作为 controlnet 的输入图片,以下用
control_image
表示其路径。或者下载这张示例图片作为 control_image
执行推理¶
对 sdxl-base-1.0 controlnet lora 进行推理:
以 controlnet canny 为例
python3 -m diffusers_utils.examples.stable_diffusion_xl_controlnet.demo_stable_diffusion_xl_base_controlnet_txt2img \
--model_dir ${path_to_model_dir} \
--model_controlnet_dir ${controlnet_dir} \
--controlnet_type "canny" \
--controlnet_image ${control_image} \
--controlnet_conditioning_scale 0.5 \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "1girl,beautiful,20 years old,wearing a Mocha,crystalline dress,real nature skin,sunshie,gorgeous woman, colorful, RAW photo,best quality,realistic, clean, masterpiece,finely detail" \
--prompt_2 "detailed" \
--negative_prompt "low quality, bad quality, sketches" \
--negative_prompt_2 "ugly, unatural" \
--seed 42 \
--denoising_steps 30 \
--scheduler 'dpm++_2m' \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--lora ${path_to_lora} \
--adapter_weights 1.0 \
--lora_scale 1.0 \
--merge_lora \
--output_dir './results/sdxl-controlnet-canny-lora' \
--model_vae_fp16_dir ${vae_dir}
其中,
--model_dir
: sdxl-base-1.0 的预训练模型所在的目录--model_controlnet_dir
: sdxl controlnet 的预训练模型所在的目录--controlnet_type
: controlnet 类型,目前支持 canny, openpose--controlnet_image
: controlnet 输入图片的路径--controlnet_conditioning_scale
: ControlNet 的输出在乘以此参数的值后与原始 unet 的对应部分相加。--prompt
: 正向提示词 1--prompt_2
: 正向提示词 2--negative_prompt
: 反向提示词 1--negative_prompt_2
: 反向提示词 2--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数,默认为 30--lora
: lora(.safetensors格式)的路径,可以传多个lora路径(以空格分开)--adapter_weights
: adapter系数,一般在0~1之间,默认为1.0,其数量要与lora数量相同,多个adapter系数以空格分开--lora_scale
: lora融合系数,一般在0~1之间,仅有1个值--merge_lora
: 模型推理前是否融合lora权重,推荐推理前融合lora,这样推理速度快--output_dir
: 保存生成图片的路径--model_vae_fp16_dir
: 支持 fp16 的 vae decoder 的预训练权重的路径。如果没有指定,则默认是用--model_dir
中的 vae decoder 的权重。
此外
--openpose_dir
: 若--controlnet_type
为 openpose,则传入 openpose 预训练模型所在的目录--no_preprocess
: 若传入的control_image
为已经过前处理的图片,可以使用此参数,避免再次进行前处理。
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion_xl_controlnet.demo_stable_diffusion_xl_base_controlnet_txt2img -h
stable-diffusion-xl turbo 推理¶
准备模型¶
下载预训练模型:
请从 sdxl-turbo 路径下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
f4b0486b498f84668e828044de1d0c8ba486e05b
【可选】请从 sdxl-vae-fp16-fix 路径下载全部内容到模型存放目录,以下用
model_vae_fp16_dir
表示其路径branch:
main
commit id:
207b116
准备输入图片
准备一张图片,作为 stable-diffusion-xl turbo Image2Image 的输入图片,以下用
path_to_image_path
表示其路径。
执行推理¶
Text2Image 推理¶
对 sdxl-base-1.0 turbo Text2Image 进行推理:
python3 -m diffusers_utils.examples.stable_diffusion_xl_turbo.demo_stable_diffusion_xl_turbo_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "'A cinematic shot of a baby racoon wearing an intricate italian priest robe.'" \
--negative_prompt "" \
--seed 42 \
--denoising_steps 1 \
--scheduler 'dpm++_2m' \
--strength 0.5 \
--guidance_scale 0 \
--image_height 512 \
--image_width 512 \
--output_dir './results/sdxl-turbo/text2img'
其中,
--model_dir
: sdxl-turbo 的预训练模型所在的目录--prompt
: 正向提示词--negative_prompt
: 反向提示词--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数,默认为 1--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion_xl_turbo.demo_stable_diffusion_xl_turbo_txt2img -h
Image2Image 推理¶
对 sdxl-base-1.0 turbo Image2Image 推理:
python3 -m diffusers_utils.examples.stable_diffusion_xl_turbo.demo_stable_diffusion_xl_turbo_img2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "cat wizard, gandalf, lord of the rings, detailed, fantasy, cute, adorable, Pixar, Disney, 8k" \
--negative_prompt "" \
--image_path ${path_to_image_path} \
--seed 42 \
--denoising_steps 2 \
--scheduler 'dpm++_2m' \
--strength 0.5 \
--guidance_scale 0 \
--image_height 512 \
--image_width 512 \
--output_dir './results/sdxl-turbo/img2img' \
--model_vae_fp16_dir ${vae_dir}
其中,
--model_dir
: sdxl-turbo 的预训练模型所在的目录--prompt
: 正向提示词--negative_prompt
: 反向提示词--image_path
: Image2Image 输入图片的路径--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数,默认为 2--output_dir
: 保存生成图片的路径--model_vae_fp16_dir
: 支持 fp16 的 vae decoder 的预训练权重的路径。如果没有指定,则默认是用--model_dir
中的 vae decoder 的权重
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion_xl_turbo.demo_stable_diffusion_xl_turbo_txt2img -h
stable-diffusion-xl refiner 推理¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-xl-base-1.0 路径下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
4621659
下载 refiner 模型权重 请从 stable-diffusion-xl-refiner-1.0 路径下载全部内容到模型存放目录,以下用
refiner_dir
表示其路径branch:
main
commit id:
5d4cfe8
准备输入图片 准备一张图片,作为 Img2Img 的输入图片,以下用
init_image
表示其路径。如果不传入,则会下载一张默认的图片作为 Img2Img 的输入图片。
执行推理¶
Text2Image 推理¶
对 sdxl-base-1.0 refiner Text2Image 进行推理:
python3 -m diffusers_utils.examples.stable_diffusion_xl_refiner.demo_stable_diffusion_xl_refiner_txt2img \
--model_dir ${path_to_model_dir} \
--model_refiner_dir ${refiner_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "'A cinematic shot of a baby racoon wearing an intricate italian priest robe.'" \
--negative_prompt "" \
--seed 42 \
--denoising_steps 30 \
--scheduler 'dpm++_2m' \
--strength 1 \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--high_noise_frac 0.8 \
--output_dir './results/sdxl-refiner/txt2img/'
其中,
--model_dir
: sdxl-base-1.0 的预训练模型所在的目录--model_refiner_dir
: sdxl-refiner 的预训练模型所在的目录--prompt
: 正向提示词--negative_prompt
: 反向提示词--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--strength
: 模型在生成图像时降噪强度,默认为 1--guidance_scale
: 文本提示(prompt)对最终生成图像的指导程度,默认为 7.5--denoising_steps
: 去噪步数,默认为 30--high_noise_frac
: 决定sdxl和refiner的去噪步数,默认为 0.8--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion_xl_refiner.demo_stable_diffusion_xl_refiner_txt2img -h
Image2Image 推理¶
对 sdxl-base-1.0 refiner Image2Image 进行推理:
python3 -m diffusers_utils.examples.stable_diffusion_xl_refiner.demo_stable_diffusion_xl_refiner_img2img \
--model_dir ${refiner_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "a photo of an astronaut riding a horse on mars" \
--negative_prompt "" \
--seed 42 \
--denoising_steps 30 \
--scheduler 'dpm++_2m' \
--strength 1 \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--output_dir './results/sdxl-refiner/img2img/' \
--init_image ${init_image}
其中,
--model_dir
: sdxl-refiner 的预训练模型所在的目录--prompt
: 正向提示词--negative_prompt
: 反向提示词--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--strength
: 模型在生成图像时降噪强度,默认为 1--guidance_scale
: 文本提示(prompt)对最终生成图像的指导程度,默认为 7.5--denoising_steps
: 去噪步数,默认为 20--output_dir
: 保存生成图片的路径--init_image
: Img2Img 的输入图片
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion_xl_refiner.demo_stable_diffusion_xl_refiner_img2img -h
stable-diffusion-xl inpainting 推理¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-xl-1.0-inpainting-0.1 路径下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
115134f
准备输入图片
准备一张图片,作为 inpainting 的输入图片,以下用
init_image
表示其路径。如果不传入,则会下载一张默认的图片作为 inipainting 任务的输入图片。准备一张图片,作为 inpainting 输入图片的 mask, 以下用
mask_image
表示其路径。如果不传入,则会下载一张默认的图片作为 inipainting 任务的 mask 图片。
执行推理¶
对 sdxl-base-1.0 inpainting 进行推理:
python3 -m diffusers_utils.examples.stable_diffusion_xl_inpaint.demo_stable_diffusion_xl_base_inpaint_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--prompt "concept art digital painting of an elven castle, inspired by lord of the rings, highly detailed, 8k" \
--prompt_2 "detailed" \
--negative_prompt "low quality, bad quality, sketches" \
--negative_prompt_2 "ugly, unatural" \
--init_image ${init_image} \
--mask_image ${mask_image} \
--seed 666 \
--denoising_steps 30 \
--scheduler 'dpm++_2m' \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--num_images_per_prompt 1 \
--output_dir './results'
其中,
--model_dir
: stable-diffusion-xl-1.0-inpainting-0.1 的预训练模型所在的目录--prompt
: 正向提示词 1--prompt_2
: 正向提示词 2--negative_prompt
: 反向提示词 1--negative_prompt_2
: 反向提示词 2--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--init_image
: inpainting 任务的输入图片--mask_image
: 输入图片对应的 mask 图片--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持 ddim, ddpm, pndm, euler, euler_a, dpm++_2m, dpm_2m_karras, dpm_sde_karras--denoising_steps
: 去噪步数,默认为 20--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion_xl_inpaint.demo_stable_diffusion_xl_base_inpaint_txt2img -h
IP-Adapter-FaceID-SDXL 推理¶
安装依赖¶
安装 onnxruntime-gcu 等依赖:
请参考《TopsRider软件栈安装手册》安装TopsRider提供的 tops-inference.deb、tops-sdk.deb 以及 TopsInference, onnxruntime-gcu 的 whl 安装包。
注意:安装 onnxruntime-gcu 后,请确保环境中只有 onnxruntime-gcu,没有 onnxruntime 和 onnxruntime-gpu。如果环境中同时存在 onnxruntime、onnxruntime-gpu 和 onnxruntime_gcu,需要将 onnxruntime、onnxruntime-gpu 和 onnxruntime_gcu 都卸载,再重新安装 onnxruntime_gcu。
安装 IP-Adapter:
pip3 install git+https://github.com/tencent-ailab/IP-Adapter.git
branch:
main
commit id:
11a9046
安装 insightface:
pip3 install insightface==0.7.3 pip3 install numpy==1.23.5
如果缺失其它依赖,请根据提示安装
注意:安装 ip-adapter 依赖的第三方库 albumentations 需要访问 “https://pypi.org”,需要保证网络可访问,否则可能会安装失败。
准备模型¶
下载预训练模型:
请从 RealVisXL_V3.0 路径下载全部内容到模型存放目录,以下用
base_model_dir
表示其路径branch:
main
commit id:
4a3f0e4
请从 IP-Adapter-FaceID 路径下载 ip-adapter-faceid_sdxl.bin 到模型存放目录,以下用
ip_ckpt
表示其路径branch:
main
commit id:
43907e6
请下载 insightface buffalo_l.zip 文件并解压, 需要调整到如下目录结构,以下用
insightface_onnx_dir
表示解压后 insightface 所在的路径, 也可以指定一个存放 insightface 模型的路径,程序会自动下载、保存模型压缩文件到该路径并解压。第 1 次使用 onnxruntime-gcu 在 gcu 上运行 insightface 会花大约几分钟编 engine,以后则会复用已经编好的 engine:insightface/ └── models ├── buffalo_l │ ├── 1k3d68.onnx │ ├── 2d106det.onnx │ ├── det_10g.onnx │ ├── genderage.onnx │ └── w600k_r50.onnx └── buffalo_l.zip
【可选】请从 sdxl-vae-fp16-fix 路径下载全部内容到模型存放目录,以下用
vae_model_path
表示其路径branch:
main
commit id:
207b116
准备输入图片
下载这张示例图片作为 init_image,以下用
init_image_path
表示其路径
执行推理¶
使用 IP-Adapter-FaceID-SDXL 进行推理:
python3 -m diffusers_utils.examples.ip_adapter_faceid.demo_ip_adapter_faceid_sdxl \
--base_model_dir ${base_model_dir} \
--ip_ckpt ${ip_ckpt} \
--vae_model_path ${vae_model_path} \
--insightface_onnx_dir ${insightface_onnx_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'A closeup shot of a beautiful Asian teenage girl in a white dress \
wearing small silver earrings in the garden, under the soft morning light' \
--negative_prompt 'monochrome, lowres, bad anatomy, worst quality, low quality, blurry' \
--seed 1 \
--denoising_steps 20 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--output_dir './outputs/demo_ip_adapter_faceid_sdxl' \
--input_image ${init_image_path}
其中,
--base_model_dir
: 基底模型所在的目录--ip_ckpt
: ip-adapter-faceid_sdxl 预训练模型所在的目录--vae_model_path
: vae 模型所在的目录,这个参数为可选参数,支持 sdxl-vae-fp16-fix 等 vae 模型。如果不指定,则使用基底模型自带的 vae 模型--insightface_onnx_dir
: insightface 模型的存放路径,指定该路径可以自动下载并保存 insightface 相关模型,也可以指向已经下载好的 insightface 模型存放路径,以避免重复下载--prompt
: 正向提示词--negative_prompt
: 反向提示词--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m--denoising_steps
: 去噪步数,默认为 20--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.ip_adapter_faceid.demo_ip_adapter_faceid_sdxl -h
LCM-LORA-SDXL 推理¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-xl-base-1.0 路径下载全部内容到模型存放目录,以下用
model_path
表示其路径branch:
main
commit id:
4621659
请从 stable-diffusion-xl-1.0-inpainting-0.1 路径下载全部内容到模型存放目录,以下用
model_inpaint_path
表示其路径branch:
main
commit id:
115134f
请从 lcm-lora-sdxl 路径下载全部内容到模型存放目录,以下用
adapter_path
表示其路径branch:
main
commit id:
74100fa
请从 Papercut_SDXL 路径下载全部内容并保存到期望的模型存放目录,以下用
second_adapter_path
表示其路径branch:
main
commit id:
b001f28
请从 controlnet-canny-sdxl-1.0-small 路径下载全部内容到模型存放目录,以下用
second_adapter_controlnet_path
表示其路径branch:
main
commit id:
edd85f6
请从 t2i-adapter-canny-sdxl-1.0 路径下载全部内容并保存到模型存放目录,以下用
second_adapter_t2i_path
表示其路径branch:
main
commit id:
2d7244b
准备输入图片
下载所有示例图片作为 init_image 和 mask_image,以下用
init_image_path
和mask_image_path
表示其路径
执行推理¶
LCM-LORA-SDXL 推理¶
对 lcm-lora-sdxl 进行推理:
DEVICE="gcu"
# text2imgs
TASK=txt2img
python3.10 -m diffusers_utils.examples.lcm-lora-sdxl.demo_lcm_lora_sdxl \
--task $TASK \
--model_dir $model_path \
--adapter_path $adapter_path \
--output_dir $output_dir \
--prompt "Self-portrait oil painting, a beautiful cyborg with golden hair, 8k" \
--device $DEVICE \
--seed 1024 \
--denoising_steps 4 \
--guidance_scale 0
# inpaint
TASK=inpaint
python3.10 -m diffusers_utils.examples.lcm-lora-sdxl.demo_lcm_lora_sdxl \
--task $TASK \
--model_dir $model_inpaint_path \
--adapter_path $adapter_path \
--output_dir $output_dir \
--prompt "a castle on top of a mountain, highly detailed, 8k" \
--device $DEVICE \
--init_image $init_image_path \
--mask_image $mask_image_path \
--seed 1024 \
--denoising_steps 5 \
--guidance_scale 4
# combine
TASK=combine
python3.10 -m diffusers_utils.examples.lcm-lora-sdxl.demo_lcm_lora_sdxl \
--task $TASK \
--model_dir $model_path \
--adapter_path $adapter_path $second_adapter_path\
--output_dir $output_dir \
--prompt "papercut, a cute fox" \
--device $DEVICE \
--seed 1024 \
--denoising_steps 4 \
--guidance_scale 1
# controlnet
TASK=controlnet
python3.10 -m diffusers_utils.examples.lcm-lora-sdxl.demo_lcm_lora_sdxl \
--task $TASK \
--model_dir $model_path \
--adapter_path $adapter_path $second_adapter_controlnet_path \
--output_dir $output_dir \
--prompt "picture of the mona lisa" \
--device $DEVICE \
--init_image $init_image_path \
--seed 1024 \
--denoising_steps 5 \
--guidance_scale 1.5
# t2i
TASK=t2i
python3.10 -m diffusers_utils.examples.lcm-lora-sdxl.demo_lcm_lora_sdxl \
--task $TASK \
--model_dir $model_path \
--adapter_path $adapter_path $second_adapter_t2i_path \
--output_dir $output_dir\
--prompt "Mystical fairy in real, magic, 4k picture, high quality" \
--negative_prompt "extra digit, fewer digits, cropped, worst quality, low quality, glitch, deformed, mutated, ugly, disfigured" \
--device $DEVICE \
--init_image $init_image_path \
--seed 1024 \
--denoising_steps 4 \
--guidance_scale 1.5
其中,
--model_dir
: 预训练模型所在的目录--adapter_path
: adapter模型路径--task
: lora的具体任务--prompt
: 正向提示词--negative_prompt
: 反向提示词--init_image
: 任务的输入图片--mask_image
: 输入图片对应的 mask 图片--denoising_steps
: 去噪步数--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.lcm-lora-sdxl.demo_lcm_lora_sdxl -h
InstantID 推理¶
安装依赖¶
安装 tops-inference.deb、tops-sdk.deb、TopsInference、onnxruntime-gcu:
请参考《TopsRider软件栈安装手册》安装TopsRider提供的 tops-inference.deb、tops-sdk.deb 以及 TopsInference, onnxruntime-gcu 的 whl 安装包。
注意:安装 onnxruntime-gcu 后,请确保环境中只有 onnxruntime-gcu,没有 onnxruntime 和 onnxruntime-gpu。如果环境中同时存在 onnxruntime、onnxruntime-gpu 和 onnxruntime_gcu,需要将 onnxruntime、onnxruntime-gpu 和 onnxruntime_gcu 都卸载,再重新安装 onnxruntime_gcu。
安装第三方依赖:
pip3 install opencv-python==4.6.0.66 pip3 install insightface==0.7.3 pip3 install numpy==1.23.5
如果缺失其它依赖,请根据提示安装
准备模型¶
下载预训练模型:
请从 stable-diffusion-xl-base-1.0 路径下载全部内容到模型存放目录,以下用
model_dir
表示其路径branch:
main
commit id:
4621659
请从 InstantID 路径下载全部内容到模型存放目录,目录中包括ControlNetModel和ip-adapter权重。以下用
model_controlnet_dir
表示ControlNetModel路径;ip_ckpt
表示ip-adapter路径branch:
main
commit id:
57b32df
请从 controlnet-depth-sdxl-1.0 路径下载全部内容到模型存放目录。以下用
model_controlnet_depth_dir
表示controlnet-depth-sdxl-1.0路径branch:
main
commit id:
17bb979
请下载 insightface buffalo_l.zip 文件并解压, 需要调整到如下目录结构,以下用
insightface_onnx_dir
表示解压后 insightface 所在的路径, 也可以指定一个存放 insightface 模型的路径,程序会自动下载、保存模型压缩文件到该路径并解压。第 1 次使用 onnxruntime-gcu 在 gcu 上运行 insightface 会花大约几分钟编 engine,以后则会复用已经编好的 engine:insightface/ └── models ├── buffalo_l │ ├── 1k3d68.onnx │ ├── 2d106det.onnx │ ├── det_10g.onnx │ ├── genderage.onnx │ └── w600k_r50.onnx └── buffalo_l.zip
请从 Annotators 路径下载全部内容到模型存放目录。以下用
annotators_dir
表示Annotators路径branch:
main
commit id:
982e7ed
准备输入图片
下载 face_image_list 人脸图片集,以下用
face_image_path
表示人脸图片集中一张图片的路径下载 pose_image_list 姿势图片集,以下用
pose_image_path
表示姿势图片集中一张图片的路径
执行推理¶
使用 InstantID 进行推理:
python3 -m diffusers_utils.examples.InstantID.demo_instantid \
--device gcu \
--base_model_dir ${model_dir} \
--annotators_dir ${annotators_dir} \
--controlnet_dir ${model_controlnet_dir} \
--controlnet_depth_dir ${model_controlnet_depth_dir} \
--insightface_onnx_dir ${insightface_onnx_dir} \
--ip_adapter_path ${ip_ckpt} \
--prompt "film noir style, ink sketch|vector, male man, highly detailed, sharp focus, ultra sharpness, monochrome, high contrast, dramatic shadows, 1940s style, mysterious, cinematic" \
--negative_prompt "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, vibrant, colorful" \
--image_height 1024 \
--image_width 1024 \
--face_image_path ${face_image_path} \
--pose_image_path ${pose_image_path} \
--scheduler 'ddim' \
--denoising_steps 30 \
--output_dir './outputs/demo_instantid'
其中,
--base_model_dir
: 基底模型所在的目录--annotators_dir
: annotators 预训练模型所在的目录--controlnet_dir
: model_controlnet 模型所在的目录--controlnet_depth_dir
: model_controlnet_depth 预训练模型所在的目录--insightface_onnx_dir
: insightface 模型的存放路径,指定该路径可以自动下载并保存 insightface 相关模型,也可以指向已经下载好的 insightface 模型存放路径,以避免重复下载--ip_adapter_path
: ip-adapter 预训练模型所在的目录--prompt
: 正向提示词--negative_prompt
: 反向提示词--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--face_image_path
: 一张人脸图片的路径--pose_image_path
: 一张姿态图片的路径--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数,默认为 30--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.InstantID.demo_instantid -h
Playground-v2.5 推理¶
准备模型¶
下载预训练模型:
请从 playground-v2.5 路径下载全部内容并保存到期望的模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
1e032f13f2fe6db2dc49947dbdbd196e753de573
执行推理¶
Text2Image 推理¶
对 playground-v2.5 Text2Image 进行推理:
python3 -m diffusers_utils.examples.playground.demo_playground_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "A sunken ship becomes the homeland of fish." \
--negative_prompt "" \
--seed 42 \
--denoising_steps 30 \
--guidance_scale 5.0 \
--image_height 1024 \
--image_width 1024 \
--output_dir './results/playground_v2.5/text2img'
其中,
--model_dir
: playground-v2.5 的预训练模型所在的目录--device
: 使用什么设备做推理,gcu/cpu/cuda--num_images_per_prompt
: 每个 prompt 生成图片的数量--prompt
: 正向提示词--negative_prompt
: 反向提示词--seed
: 随机种子,默认42--denoising_steps
: 去噪步数,默认为 30--guidance_scale
: 文本提示(prompt)对最终生成图像的指导程度,默认为 7.5--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.playground.demo_playground_txt2img -h
SD 扩展模型推理指南¶
概述¶
本文档介绍在Enflame GCU上基于pytorch native进行stable diffusion 相关组件扩展模型推理过程
环境配置(必选)¶
以下步骤基于 Python3.10
, 请先安装所需依赖:
安装环境:安装过程请参考《TopsRider软件栈安装手册》,请根据手册完成TopsRider软件栈安装
安装 torch_gcu
注意:安装 torch_gcu-2.1.0 会自动安装 torch 2.1.0
pip3 install torch_gcu-2.1.0*-cp310-cp310-linux_x86_64.whl
安装 fast_diffusers
pip3 install fast_diffusers-0.27.0*-py3.10-*.whl
安装 fast_diffusers_utils
pip3 install fast_diffusers_utils-0.27.0*-py3.10-*.whl
环境配置(可选)¶
按照不同的待测模型组件,安装对应所需的依赖:
DeepDanbooru 推理指南¶
准备模型和数据¶
下载预训练模型:
请从 model-resnet_custom_v3.pt 路径下下载待测模型 pt 权重文件到本地目录,以下用
path_to_model
表示其路径准备待测试图片:
请本地准备一张图片用于推理并输出tag,以下用
path_to_image
表示其路径
执行推理及评估¶
python3 -m diffusers_utils.examples.extensions.demo_deepdanbooru \
--model_path $path_to_model \
--image_path $path_to_image \
--confidence 0.3 \
--device 'gcu' \
--output_dir './output'
其中,
--model_path
: 参数指定预训练权重model-resnet_custom_v3.pt文件路径--image_path
: 指定本地待测图片的路径--confidence
: 模型输出tag时,得分大于阈值的tag作为输出结果--device
: 使用的设备,支持gcu/cpu/cuda,其中cpu不支持fp16,默认使用fp32推理。gcu和cuda默认使用fp16推理。--output_dir
: 推理完图片后,保存所有tag得分的json格式文件的目录
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.extensions.demo_deepdanbooru -h
BLIP_V1 推理¶
准备模型¶
下载预训练模型:
请从 blip-image-captioning-base 路径下下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
89b09ea1789f7addf2f6d6f0dfc4ce10ab58ef84
准备输入图片 准备一张图片,作为 BLIP_V1 的输入图片,以下用
path_to_image_path
表示其路径。
执行推理¶
Hed 推理指南¶
环境配置¶
安装hed模型推理所需依赖库:
pip3 install controlnet_aux==0.0.7 pip3 install numpy==1.22.0
准备模型和数据¶
下载预训练模型: 请从 Annotators 路径下下载全部内容到模型存放目录,以下
path_to_model_dir
表示其路径branch:
main
commit id:
982e7edaec38759d914a963c48c4726685de7d96
准备输入图片
准备一张图片,作为 hed 的输入图片,以下用
path_to_image_path
表示其路径。
执行推理¶
执行 hed 进行推理:
python3 -m diffusers_utils.examples.extensions.demo_hed \
--model_dir ${path_to_model_dir} \
--device gcu \
--detect_resolution 512 \
--image_resolution 512 \
--output_dir ./ \
--controlnet_image ${path_to_image_path}
其中,
--model_dir
: 参数blip_v1的预训练模型所在的目录--device
: 使用的设备,支持gcu/cpu/cuda,其中cpu不支持fp16,默认使用fp32推理。gcu和cuda默认使用fp16推理--controlnet_image
: 输入图片的路径--output_dir
: 保存生成图片的路径--detect_resolution
: 输入图片维度--image_resolution
: 输出图片维度
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.extensions.demo_hed -h
RealESRGAN 推理指南¶
准备模型和数据¶
下载预训练模型:
请从 Real-ESRGAN 路径下下载待测模型 pt 权重文件到本地目录,以下用
path_to_model
表示其路径,其中 RealESRGAN_x2.pth用于2倍放大, RealESRGAN_x4.pth 用于4倍放大branch:
main
commit id:
8110204ebf8d25c031b66c26c2d1098aa831157e
准备待测试图片:
请本地准备一张图片用于推理并输出tag,以下用
path_to_image
表示其路径
执行推理及评估¶
python3 -m diffusers_utils.examples.extensions.demo_realesrgan \
--model_path $path_to_model \
--image_path $path_to_image \
--scale_radio 4 \
--device 'gcu' \
--output_dir './output'
其中,
--model_path
: 参数指定预训练权重 RealESRGAN_x4.pth 文件路径--image_path
: 指定本地待测图片的路径--scale_radio
: 放大系数,需要和模型权重一一对应, RealESRGAN_x2.pth 为2, RealESRGAN_x4.pth 为4--device
: 使用的设备,支持gcu/cpu/cuda,其中cpu不支持fp16,默认使用fp32推理。gcu和cuda默认使用fp16推理。--output_dir
: 推理完图片后,保存所有tag得分的json格式文件的目录
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.extensions.demo_realesrgan -h
DiT模型推理指南¶
概述¶
本文档介绍在 Enflame GCU 上基于 pytorch native 进行 DiT-XL 的text2image任务的推理过程
环境配置¶
以下步骤基于 Python3.10
, 请先安装所需依赖:
安装环境:安装过程请参考《TopsRider 软件栈安装手册》,请根据手册完成 TopsRider 软件栈安装
安装 torch_gcu
注意:安装 torch_gcu-2.1.0 会自动安装 torch 2.1.0
pip3 install torch_gcu-2.1.0*-cp310-cp310-linux_x86_64.whl
安装 fast_diffusers
pip3 install fast_diffusers-0.27.0*-py3.10-*.whl
安装 fast_diffusers_utils
pip3 install fast_diffusers_utils-0.27.0*-py3.10-*.whl
DiT-XL 推理¶
准备模型¶
下载预训练模型:
请从 DiT-XL-2-512 路径下下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
101a3d462b22d64c4afdd4d0c8c59a2c0b961b99
执行推理¶
使用 DiT-XL 进行推理:
python3 -m diffusers_utils.examples.dit.demo_dit \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "hummingbird" \
--seed 42 \
--denoising_steps 25 \
--scheduler 'dpm++_2m' \
--guidance_scale 4.0 \
--image_height 512 \
--image_width 512 \
--output_dir './results'
其中,
--model_dir
: DiT-XL 的预训练模型所在的目录--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--scheduler
: 使用的调度器,当前支持dpm++_2m--denoising_steps
: 去噪步数--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.dit.demo_dit -h
AnimateDiff 模型推理指南¶
概述¶
本文档介绍在 Enflame GCU 上基于 pytorch native 进行 AnimateDiff 的text2video任务的推理过程
环境配置¶
以下步骤基于 Python3.10
, 请先安装所需依赖:
安装环境:安装过程请参考《TopsRider 软件栈安装手册》,请根据手册完成 TopsRider 软件栈安装
安装 torch_gcu
注意:安装 torch_gcu-2.1.0 会自动安装 torch 2.1.0
pip3 install torch_gcu-2.1.0*-cp310-cp310-linux_x86_64.whl
安装 fast_diffusers
pip3 install fast_diffusers-0.27.0*-py3.10-*.whl
安装 fast_diffusers_utils
pip3 install fast_diffusers_utils-0.27.0*-py3.10-*.whl
AnimateDiff 推理¶
准备模型¶
下载预训练模型:
请从 dreamshaper-8 路径下下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
a7e52b98680b1ba8ff7bce97c7f9f2e2e5337917
请从 mm_sd_v15_v2.ckpt 路径下载
mm_sd_v15_v2.ckpt
到 Motion_Module 目录,以下用path_to_motion_module
表示其路径branch:
main
commit id:
7143bdd79e8e385fefa215b60fee5fb82a92a09e
执行推理¶
使用 animate 进行推理:
python3.10 -u -m diffusers_utils.examples.animatediff.demo_animatediff_text2video \
--pretrained_model_path ${path_model_dir} \
--motion_module_path ${path_to_motion_module}/mm_sd_v15_v2.ckpt \
--output ${path_to_output_dir}
其中,
--pretrained_model_path
: sd1.5 预训练模型所在的目录--motion_module_path
: Motion_Module 目录下的 mm_sd_v15_v2.ckpt 文件路径--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.animatediff.demo_animatediff_text2video -h
MagicAnimate 模型推理指南¶
概述¶
本文档介绍在 Enflame GCU 上基于 pytorch native 进行 MagicAnimate 的video2video任务的推理过程
环境配置¶
以下步骤基于 Python3.10
, 请先安装所需依赖:
安装环境:安装过程请参考《TopsRider 软件栈安装手册》,请根据手册完成 TopsRider 软件栈安装
安装 torch_gcu
注意:安装 torch_gcu-2.1.0 会自动安装 torch 2.1.0
pip3 install torch_gcu-2.1.0*-cp310-cp310-linux_x86_64.whl
安装 fast_diffusers
pip3 install fast_diffusers-0.27.0*-py3.10-*.whl
安装 fast_diffusers_utils
pip3 install fast_diffusers_utils-0.27.0*-py3.10-*.whl
MagicAnimate 推理¶
准备模型¶
下载预训练模型:
请从 dreamshaper-8 路径下下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
a7e52b98680b1ba8ff7bce97c7f9f2e2e5337917
请从 MagicAnimate 路径下下载全部内容到模型存放目录,以下用
path_to_magicanimate_model_dir
表示其路径branch:
main
commit id:
3d80ae8c50b289e55ee68deecc83afaab9c6a382
请从 sd-vae-ft-mse 路径下下载全部内容到模型存放目录,以下用
path_to_vae_model_dir
表示其路径branch:
main
commit id:
31f26fdeee1355a5c34592e401dd41e45d25a493
下载测试数据
请从 monalisa.png 下载图片到
path_to_source_image
。请从 dancing2.mp4 下载视频到
path_to_reference_video
。
执行推理¶
使用 animate 进行推理:
python3.10 -u -m diffusers_utils.examples.magicanimate.demo_magicanimate_video2video \
--pretrained_model_path ${path_to_model_dir} \
--magicanimate_model_path ${path_to_magicanimate_model_dir} \
--vae_model_path ${path_to_vae_model_dir} \
--source_image ${path_to_source_image} \
--reference_video ${path_to_reference_video} \
--output ${path_to_output_dir}
其中,
--pretrained_model_path
: sd1.5 预训练模型所在的目录--magicaniate_model_path
: magicanimate 预训练模型所在的目录--vae_model_path
: vae 预训练模型所在的目录--source_image
: 输入参考图片路径--reference_video
: 输入参考densepose视频路径--output_dir
: 保存生成图片的路径
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.magicanimate.demo_magicanimate_video2video -h
SD系列模型性能评估指南¶
概述¶
本文档介绍在 Enflame GCU 上基于 pytorch native 进行 stable‐diffusion 1.5(以下简称 sd v1.5), stable‐diffusion‐xl‐base‐1.0(以下简称 sdxl‐base‐1.0), stable‐diffusion‐xl Controlnet 的 text2image, stable‐diffusion‐xl turbo 的 text2image、image2image, stable‐diffusion‐xl refiner 的 text2image, IP-Adapter-FaceID-SDXL , sd v1.5 controlnet, lcm-lora-sdxl和 InstantID 任务的性能测试方法
环境配置¶
以下步骤基于 Python3.10
, 请先安装所需依赖:
安装环境:安装过程请参考《TopsRider 软件栈安装手册》,请根据手册完成 TopsRider 软件栈安装
安装 torch_gcu
注意:安装 torch_gcu-2.1.0 会自动安装 torch 2.1.0
pip3 install torch_gcu-2.1.0*-cp310-cp310-linux_x86_64.whl
安装 fast_diffusers
pip3 install fast_diffusers-0.27.0*-py3.10-*.whl
安装 fast_diffusers_utils
pip3 install fast_diffusers_utils-0.27.0*-py3.10-*.whl
stable-diffusion-1.5 性能评估¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-v1-5 路径下下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
39593d5
准备输入图片 准备一张图片,作为 Img2Img 的输入图片,以下用
init_image
表示其路径。
执行推理及评估¶
Text2Image 性能评估¶
对sd v1.5 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffuision_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'a forest with green trees, beautiful flowers and clear river' \
--negative_prompt '' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 512 \
--image_width 512 \
--output_dir './results/sd_v1_5/txt2img' \
--warmup_count 1 \
--eval_count 2 \
--benchmark_save_path './benchmark/report-sd_v1_5_txt2img.json'
其中,
--model_dir
: 参数sd v1.5的预训练模型所在的目录--prompt
: 正向提示词,可以传一个或多个,以单引号或双引号分隔,数量与negative_prompt相同--negative_prompt
: 反向提示词,可以传一个或多个,以单引号或双引号分隔,数量与prompt相同--image_height
: 生成图片的高度,如果不传(默认为None),则会对默认的43种分辨率进行性能评估,可以传一个或多个,以空格分隔,数量与 image_width 相同--image_width
: 生成图片的宽度,如果不传,则会对默认的43种分辨率进行性能评估,可以传一个或多个,以空格分隔,数量与 image_height 相同--num_images_per_prompt
: 每个prompt生成图片的数量,可以传一个或多个。如果传一个,则每个分辨率使用相同的num_images_per_prompt值;如果传多个,则其数量需要与image_height或image_width数量保持一致--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数,默认为30--output_dir
: 保存生成图片的路径,默认保存路径为”./outputs”--benchmark_save_path
: 保存生成的性能测试报告的路径,如果不设置, 则默认保存到./benchmark/report-stable_diffusion_txt2img.json
--warmup_count
: warmup次数--eval_count
: 重复推理次数
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffuision_txt2img -h
Image2Image 推理¶
使用 sd v1.5 进行Img2Img推理:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_img2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'Astronaut in a jungle, cold color palette, muted colors, detailed, 8k' \
--negative_prompt '' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 512 \
--image_width 512 \
--output_dir './results/sd_v1_5/img2img' \
--init_image ${init_image} \
--strength 0.3
其中,
--model_dir
: sd v1.5 的预训练模型所在的目录--device
: 推理使用的设备,默认为’gcu’--num_images_per_prompt
: 每个prompt生成的图片--prompt
:正向提示词--negative_prompt
:反向提示词--seed
:推理时设置的随机种子--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数--output_dir
: 保存生成图片的路径--init_image
: 原始图片路径--strength
: 修改原始图片的幅度,取值为0-1之间,数值越大,修改幅度越大,默认值为0.3
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_img2img -h
Text2Image 高清修复 性能评估¶
对sd v1.5 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffuision_txt2img_hiresfix \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'a forest with green trees, beautiful flowers and clear river' \
--negative_prompt '' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--strength 0.5 \
--output_dir './results' \
--warmup_count 1 \
--eval_count 2 \
--benchmark_save_path './benchmark/report-sd_v1_5_txt2img_hiresfix.json'
其中,
--model_dir
: 参数sd v1.5的预训练模型所在的目录--prompt
: 正向提示词,可以传一个或多个,以单引号或双引号分隔,数量与negative_prompt相同--negative_prompt
: 反向提示词,可以传一个或多个,以单引号或双引号分隔,数量与prompt相同--image_height
: 生成图片的高度,如果不传(默认为None),则会对默认的43种分辨率进行性能评估,可以传一个或多个,以空格分隔,数量与 image_width 相同--image_width
: 生成图片的宽度,如果不传,则会对默认的43种分辨率进行性能评估,可以传一个或多个,以空格分隔,数量与 image_height 相同--strength
: 高清修复原始图片的幅度,取值为0-1之间,数值越大,修改幅度越大,默认值为0.5--num_images_per_prompt
: 每个prompt生成图片的数量,可以传一个或多个。如果传一个,则每个分辨率使用相同的num_images_per_prompt值;如果传多个,则其数量需要与image_height或image_width数量保持一致--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数,默认为30--output_dir
: 保存生成图片的路径,默认保存路径为”./outputs”--benchmark_save_path
: 保存生成的性能测试报告的路径,如果不设置, 则默认保存到./benchmark/report-sd_txt2img_hiresfix.json
--warmup_count
: warmup次数--eval_count
: 重复推理次数
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffuision_txt2img_hiresfix -h
stable-diffusion-1.5 Controlnet 性能评估¶
安装 controlnet_aux¶
pip3 install controlnet_aux==0.0.7
pip3 install scikit-image==0.21.0
准备模型¶
下载预训练模型:
请从 stable-diffusion-v1-5 路径下下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch: main
commit id: 39593d5
下载 controlnet 模型权重(多选 1)
请从 control_v11p_sd15_openpose 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 9ae9f97
请从 control_v11p_sd15_scribble 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 3564ec7
请从 control_v11p_sd15_mlsd 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: f6d481b
请从 control_v11p_sd15_normalbae 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: cb7296e
请从 control_v11p_sd15_inpaint 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: c96e03a
请从 control_v11p_sd15_softedge 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: b5bcad0
请从 control_v11f1p_sd15_depth 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 539f991
请从 control_v11p_sd15_seg 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 2106820
请从 control_v11e_sd15_shuffle 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 8cf2759
请从 control_v11f1e_sd15_tile 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 3f87770
请从 control_v11e_sd15_ip2p 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 1fed6eb
请从 control_v11p_sd15s2_lineart_anime 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 9c03a1c
请从 control_v11p_sd15_lineart 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch: main
commit id: 1fed6eb
对于 canny, openpose, scribble, mlsd, normalbae, inpaint, softedge, depth, seg, shuffle, tile, ip2p, lineart_anime, lineart 功能, 需下载预处理的模型权重
请从 Annotators 路径下载全部内容到模型存放目录(或者参考相关模型链接从 down model 下载),以下用
annotators_dir
表示其路径branch: main
commit id: 982e7ed
准备输入图片 准备一张图片,作为 controlnet 的输入图片,以下用
control_image
表示其路径。
执行推理及评估¶
sd1.5 controlnet 性能评估¶
对 sd1.5 controlnet 进行性能评估:
以 controlnet scribble 为例
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_controlnet_txt2img \
--model_dir ${path_to_model_dir} \
--model_controlnet_dir ${controlnet_dir} \
--controlnet_type "scribble" \
--controlnet_image ${control_image} \
--controlnet_conditioning_scale 1.0 \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "royal chamber with fancy bed" \
--negative_prompt "" \
--seed 42 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 512 \
--image_width 512 \
--output_dir './results' \
--annotators_dir ${annotators_dir} \
--warmup_count 3 \
--eval_count 5
其中,
--model_dir
: sd-1.5 的预训练模型所在的目录--model_controlnet_dir
: sd1.5 controlnet 的预训练模型所在的目录--controlnet_type
: controlnet 类型,目前支持 canny、openpose、scribble、mlsd、normalbae、inpaint、softedge、depth、seg、shuffle、tile、ip2p、lineart_anime、lineart--controlnet_image
: controlnet 输入图片的路径--controlnet_conditioning_scale
: ControlNet 的输出乘以此参数的值后与原始 unet 的对应部分相加--prompt
: 正向提示词 1--negative_prompt
: 反向提示词 1--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m和dpm++_2m_karras等--denoising_steps
: 去噪步数,默认为 30--output_dir
: 保存生成图片的路径--warmup_count
: warmup 次数--eval_count
: 重复推理次数
此外
--annotators_dir
: 关于前处理模型,openpose和scribble等可以共享该目录--no_preprocess
: 若传入的control_image
为已经过前处理的图片,可以使用此参数,避免再次进行前处理。
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion_controlnet.demo_stable_diffusion_controlnet_txt2img -h
stable-diffusion-2 性能评估¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-v2 路径下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
1e128c8
准备输入图片 准备一张图片,作为 Img2Img 的输入图片,以下用
init_image
表示其路径。
执行推理及评估¶
Text2Image 性能评估¶
对sd v2 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffuision_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'a forest with green trees, beautiful flowers and clear river' \
--negative_prompt '' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 768 \
--image_width 768 \
--output_dir './results/sd_v2/txt2img' \
--warmup_count 3 \
--eval_count 5 \
--benchmark_save_path './benchmark/report-sd_v2_txt2img.json'
其中,
--model_dir
: 参数 sd v2 的预训练模型所在的目录--prompt
: 正向提示词,可以传一个或多个,以单引号或双引号分隔,数量与negative_prompt相同--negative_prompt
: 反向提示词,可以传一个或多个,以单引号或双引号分隔,数量与prompt相同--image_height
: 生成图片的高度,如果不传(默认为None),则会对默认的43种分辨率进行性能评估,可以传一个或多个,以空格分隔,数量与 image_width 相同--image_width
: 生成图片的宽度,如果不传,则会对默认的43种分辨率进行性能评估,可以传一个或多个,以空格分隔,数量与 image_height 相同--num_images_per_prompt
: 每个prompt生成图片的数量,可以传一个或多个。如果传一个,则每个分辨率使用相同的num_images_per_prompt值;如果传多个,则其数量需要与image_height或image_width数量保持一致--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数,默认为30--output_dir
: 保存生成图片的路径,默认保存路径为”./outputs”--benchmark_save_path
: 保存生成的性能测试报告的路径,如果不设置, 则默认保存到./benchmark/report-stable_diffusion_txt2img.json
--warmup_count
: warmup次数--eval_count
: 重复推理次数
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffuision_txt2img -h
Image2Image 推理¶
使用 sd v2 进行Img2Img推理:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_img2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'Astronaut in a jungle, cold color palette, muted colors, detailed, 8k' \
--negative_prompt '' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 768 \
--image_width 768 \
--output_dir './results/sd_v2/imgimg' \
--init_image ${init_image} \
--strength 0.3
其中,
--model_dir
: sd v2 的预训练模型所在的目录--device
: 推理使用的设备,默认为’gcu’--num_images_per_prompt
: 每个prompt生成的图片--prompt
:正向提示词--negative_prompt
:反向提示词--seed
:推理时设置的随机种子--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数--output_dir
: 保存生成图片的路径--init_image
: 原始图片路径--strength
: 修改原始图片的幅度,取值为0-1之间,数值越大,修改幅度越大,默认值为0.3
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_img2img -h
stable-diffusion-2-1 性能评估¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-v2.1 路径下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
5cae40e
准备输入图片 准备一张图片,作为 Img2Img 的输入图片,以下用
init_image
表示其路径。
执行推理及评估¶
Text2Image 性能评估¶
对sd v2.1 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffuision_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'a forest with green trees, beautiful flowers and clear river' \
--negative_prompt '' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 768 \
--image_width 768 \
--output_dir './results/sd_v2_1/txt2img' \
--warmup_count 3 \
--eval_count 5 \
--benchmark_save_path './benchmark/report-sd_v2_1_txt2img.json'
其中,
--model_dir
: 参数 sd v2.1 的预训练模型所在的目录--prompt
: 正向提示词,可以传一个或多个,以单引号或双引号分隔,数量与negative_prompt相同--negative_prompt
: 反向提示词,可以传一个或多个,以单引号或双引号分隔,数量与prompt相同--image_height
: 生成图片的高度,如果不传(默认为None),则会对默认的43种分辨率进行性能评估,可以传一个或多个,以空格分隔,数量与 image_width 相同--image_width
: 生成图片的宽度,如果不传,则会对默认的43种分辨率进行性能评估,可以传一个或多个,以空格分隔,数量与 image_height 相同--num_images_per_prompt
: 每个prompt生成图片的数量,可以传一个或多个。如果传一个,则每个分辨率使用相同的num_images_per_prompt值;如果传多个,则其数量需要与image_height或image_width数量保持一致--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数,默认为30--output_dir
: 保存生成图片的路径,默认保存路径为”./outputs”--benchmark_save_path
: 保存生成的性能测试报告的路径,如果不设置, 则默认保存到./benchmark/report-stable_diffusion_txt2img.json
--warmup_count
: warmup次数--eval_count
: 重复推理次数
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffuision_txt2img -h
Image2Image 推理¶
使用 sd v2.1 进行Img2Img推理:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_img2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'Astronaut in a jungle, cold color palette, muted colors, detailed, 8k' \
--negative_prompt '' \
--seed 12345 \
--denoising_steps 30 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 768 \
--image_width 768 \
--output_dir './results/sd_v2_1/imgimg' \
--init_image ${init_image} \
--strength 0.3
其中,
--model_dir
: sd v2.1 的预训练模型所在的目录--device
: 推理使用的设备,默认为’gcu’--num_images_per_prompt
: 每个prompt生成的图片--prompt
:正向提示词--negative_prompt
:反向提示词--seed
:推理时设置的随机种子--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数--output_dir
: 保存生成图片的路径--init_image
: 原始图片路径--strength
: 修改原始图片的幅度,取值为0-1之间,数值越大,修改幅度越大,默认值为0.3
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.examples.stable_diffusion.demo_stable_diffusion_img2img -h
stable‐diffusion‐xl‐base‐1.0 性能评估¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-xl-base-1.0 路径下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
4621659
准备输入图片 准备一张图片,作为 Img2Img 的输入图片,以下用
init_image
表示其路径。如果不传入,则会下载一张默认的图片作为 Img2Img 的输入图片。
执行推理及评估¶
Text2Image 性能评估¶
对sdxl-base-1.0 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffuision_xl_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'a beautiful photograph of Mt. Fuji during cherry blossom' \
--negative_prompt '' \
--seed 42 \
--denoising_steps 30 \
--scheduler 'dpm++_2m' \
--guidance_scale 5.0 \
--image_height 1024 \
--image_width 1024 \
--output_dir './results/sdxl-base/txt2img' \
--warmup_count 1 \
--eval_count 2 \
--benchmark_save_path './benchmark/report-sdxl-1024x1024-txt2img.json'
其中,
--model_dir
: 参数sdxl-base-1.0的预训练模型所在的目录--prompt
: 正向提示词,可以传一个或多个,以单引号或双引号分隔,数量与negative_prompt相同--negative_prompt
: 反向提示词,可以传一个或多个,以单引号或双引号分隔,数量与prompt相同--image_height
: 生成图片的高度,如果不传(默认为None),则会对默认的43种分辨率进行性能评估,可以传一个或多个,以空格分隔,数量与 image_width 相同--image_width
: 生成图片的宽度,如果不传,则会对默认的43种分辨率进行性能评估,可以传一个或多个,以空格分隔,数量与 image_height 相同--num_images_per_prompt
: 每个prompt生成图片的数量,可以传一个或多个。如果传一个,则每个分辨率使用相同的num_images_per_prompt值;如果传多个,则其数量需要与image_height或image_width数量保持一致--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数,默认为30--output_dir
: 保存生成图片的路径,默认保存路径为”./outputs”--benchmark_save_path
: 保存生成的性能测试报告的路径,如果不设置, 则默认保存到./benchmark/report-sdxl-1024x1024-txt2img.json
--warmup_count
: warmup次数--eval_count
: 重复推理次数
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffuision_xl_txt2img -h
Image2Image 性能评估¶
对 sdxl-base-1.0 Image2Image 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_xl_img2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "a photo of an astronaut riding a horse on mars" \
--init_image ${init_image} \
--negative_prompt "" \
--seed 42 \
--denoising_steps 30 \
--scheduler 'ddim' \
--strength 0.3 \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--output_dir './results/sdxl-base/img2img' \
--warmup_count 3 \
--eval_count 5
其中,
--model_dir
: sdxl-base-1.0 的预训练模型所在的目录--prompt
: 正向提示词--negative_prompt
: 反向提示词--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, dpm++_2m_karras--denoising_steps
: 去噪步数,默认为 30--output_dir
: 保存生成图片的路径--warmup_count
: warmup 次数--eval_count
: 重复推理次数--init_image
: Img2Img 的输入图片
--strength
: 修改原始图片的幅度,取值为0-1之间,数值越大,修改幅度越大,默认值为0.3
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_xl_img2img -h
stable-diffusion-xl Controlnet 性能评估¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-xl-base-1.0 路径下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
4621659
下载 controlnet 模型权重(多选 1)
请从 controlnet-canny-sdxl-1.0 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch:
main
commit id:
eb115a1
请从 controlnet-openpose-sdxl-1.0 路径下载全部内容到模型存放目录,以下用
controlnet_dir
表示其路径branch:
main
commit id:
1db673e
如果需要使用 controlnet openpose, 需下载 openpose 的预训练权重
请从 Annotators 路径下载全部内容到模型存放目录,以下用
openpose_dir
表示其路径branch: main
commit id: 982e7ed
【可选】请从 sdxl-vae-fp16-fix 路径下载全部内容到模型存放目录,以下用
model_vae_fp16_dir
表示其路径branch:
main
commit id:
207b116
准备输入图片
准备一张图片,作为 controlnet 的输入图片,以下用
control_image
表示其路径。如果不传入,则会下载一张默认的图片作为 controlnet 的输入图片。
执行推理及评估¶
sdxl controlnet 性能评估¶
对 sdxl-base-1.0 controlnet 进行性能评估,以 controlnet canny 为例:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffuision_xl_controlnet_txt2img \
--model_dir ${path_to_model_dir} \
--model_controlnet_dir ${controlnet_dir} \
--controlnet_type "canny" \
--controlnet_image ${control_image} \
--controlnet_conditioning_scale 0.5 \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "aerial view, a futuristic research complex in a bright foggy jungle, hard lighting" \
--prompt_2 "detailed" \
--negative_prompt "low quality, bad quality, sketches" \
--negative_prompt_2 "ugly, unatural" \
--seed 42 \
--denoising_steps 30 \
--scheduler 'dpm++_2m' \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--output_dir './results' \
--model_vae_fp16_dir ${vae_dir} \
--warmup_count 3 \
--eval_count 5
其中,
--model_dir
: sdxl-base-1.0 的预训练模型所在的目录--model_controlnet_dir
: sdxl controlnet 的预训练模型所在的目录--controlnet_type
: controlnet 类型,目前支持 canny, openpose--controlnet_image
: controlnet 输入图片的路径--controlnet_conditioning_scale
: ControlNet 的输出在乘以此参数的值后与原始 unet 的对应部分相加。--prompt
: 正向提示词 1--prompt_2
: 正向提示词 2--negative_prompt
: 反向提示词 1--negative_prompt_2
: 反向提示词 2--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持 ddim, ddpm, pndm, euler, euler_a, dpm++_2m, dpm_2m_karras, dpm_sde_karras--denoising_steps
: 去噪步数,默认为 30--output_dir
: 保存生成图片的路径--warmup_count
: warmup 次数--eval_count
: 重复推理次数--model_vae_fp16_dir
: 支持 fp16 的 vae decoder 的预训练权重的路径。如果没有指定,则默认是用--model_dir
中的 vae decoder 的权重。
此外
--openpose_dir
: 若--controlnet_type
为 openpose,则传入 openpose 预训练模型所在的目录--no_preprocess
: 若传入的control_image
为已经过前处理的图片,可以使用此参数,避免再次进行前处理。
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffuision_xl_controlnet_txt2img -h
stable-diffusion-xl turbo 性能评估¶
准备模型¶
下载预训练模型:
请从 sdxl-turbo 路径下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
f4b0486b498f84668e828044de1d0c8ba486e05b
【可选】请从 sdxl-vae-fp16-fix 路径下载全部内容到模型存放目录,以下用
model_vae_fp16_dir
表示其路径branch:
main
commit id:
207b116
准备输入图片
准备一张图片,作为 stable-diffusion-xl turbo Image2Image 的输入图片,以下用
path_to_image_path
表示其路径。如果不传入,则会下载一张默认的图片作为 sdxl-turbo 的输入图片。
执行推理及评估¶
Text2Image 性能评估¶
对 sdxl-base-1.0 turbo Text2Image 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_xl_turbo_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "'A cinematic shot of a baby racoon wearing an intricate italian priest robe.'" \
--negative_prompt "" \
--seed 42 \
--denoising_steps 1 \
--scheduler 'dpm++_2m' \
--strength 0.5 \
--guidance_scale 0 \
--image_height 512 \
--image_width 512 \
--output_dir './results' \
--warmup_count 5 \
--eval_count 10
其中,
--model_dir
: sdxl-turbo 的预训练模型所在的目录--prompt
: 正向提示词 1--negative_prompt
: 反向提示词--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数,默认为 1--output_dir
: 保存生成图片的路径--warmup_count
: warmup 次数--eval_count
: 重复推理次数
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_xl_turbo_txt2img -h
Image2Image 性能评估¶
对 sdxl-base-1.0 turbo Image2Image 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_xl_turbo_img2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "cat wizard, gandalf, lord of the rings, detailed, fantasy, cute, adorable, Pixar, Disney, 8k" \
--negative_prompt "" \
--image_path ${path_to_image_path} \
--seed 42 \
--denoising_steps 2 \
--scheduler 'dpm++_2m' \
--strength 0.5 \
--guidance_scale 0 \
--image_height 512 \
--image_width 512 \
--output_dir './results' \
--warmup_count 5 \
--eval_count 10 \
--model_vae_fp16_dir ${vae_dir}
其中,
--model_dir
: sdxl-turbo 的预训练模型所在的目录--prompt
: 正向提示词--negative_prompt
: 反向提示词--image_path
: Image2Image 输入图片的路径--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数,默认为 2--output_dir
: 保存生成图片的路径--warmup_count
: warmup 次数--eval_count
: 重复推理次数--model_vae_fp16_dir
: 支持 fp16 的 vae decoder 的预训练权重的路径。如果没有指定,则默认是用--model_dir
中的 vae decoder 的权重。
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_xl_turbo_txt2img -h
stable-diffusion-xl refiner 性能评估¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-xl-base-1.0 路径下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
4621659
下载 refiner 模型权重
请从 stable-diffusion-xl-refiner-1.0 路径下载全部内容到模型存放目录,以下用
refiner_dir
表示其路径branch:
main
commit id:
5d4cfe8
准备输入图片 准备一张图片,作为 Img2Img 的输入图片,以下用
init_image
表示其路径。如果不传入,则会下载一张默认的图片作为 Img2Img 的输入图片。
执行推理及评估¶
Text2Image 性能评估¶
对 sdxl-base-1.0 refiner Text2Image 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_xl_refiner_txt2img \
--model_dir ${path_to_model_dir} \
--model_refiner_dir ${refiner_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "cat wizard, gandalf, lord of the rings, detailed, fantasy, cute, adorable, Pixar, Disney, 8k" \
--negative_prompt "" \
--seed 42 \
--denoising_steps 30 \
--scheduler 'dpm++_2m' \
--strength 1 \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--high_noise_frac 0.8 \
--output_dir './results' \
--warmup_count 3 \
--eval_count 5
其中,
--model_dir
: sdxl-base-1.0 的预训练模型所在的目录--model_refiner_dir
: sdxl-refiner 的预训练模型所在的目录--prompt
: 正向提示词--negative_prompt
: 反向提示词--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数,默认为 30--high_noise_frac
: 决定sdxl和refiner的去噪步数,默认为 0.8--output_dir
: 保存生成图片的路径--warmup_count
: warmup 次数--eval_count
: 重复推理次数
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_xl_refiner_txt2img -h
Image2Image 性能评估¶
对 sdxl-base-1.0 refiner Image2Image 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_xl_refiner_img2img \
--model_dir ${refiner_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "a photo of an astronaut riding a horse on mars" \
--init_image ${init_image} \
--negative_prompt "" \
--seed 42 \
--denoising_steps 30 \
--scheduler 'dpm++_2m' \
--strength 1 \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--output_dir './results' \
--warmup_count 3 \
--eval_count 5
其中,
--model_dir
: sdxl-refiner 的预训练模型所在的目录--prompt
: 正向提示词--negative_prompt
: 反向提示词--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数,默认为 30--output_dir
: 保存生成图片的路径--warmup_count
: warmup 次数--eval_count
: 重复推理次数--init_image
: Img2Img 的输入图片
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_xl_refiner_img2img -h
stable-diffusion-xl inpainting 性能评估¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-xl-1.0-inpainting-0.1 路径下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
115134f
准备输入图片
准备一张图片,作为 inpainting 的输入图片,以下用
init_image
表示其路径。如果不传入,则会下载一张默认的图片作为 inipainting 任务的输入图片。准备一张图片,作为 inpainting 输入图片的 mask, 以下用
mask_image
表示其路径。如果不传入,则会下载一张默认的图片作为 inipainting 任务的 mask 图片。
执行推理及评估¶
sdxl inpainting 性能评估¶
对 sdxl-base-1.0 inpainting 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffuision_xl_inpaint_txt2img \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "a lion sitting on a park bench" \
--prompt_2 "detailed" \
--negative_prompt "low quality, bad quality, sketches" \
--negative_prompt_2 "ugly, unatural" \
--init_image ${init_image} \
--mask_image ${mask_image} \
--seed 666 \
--denoising_steps 30 \
--scheduler 'dpm++_2m' \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--output_dir './results' \
--warmup_count 3 \
--eval_count 5
其中,
--model_dir
: stable-diffusion-xl-1.0-inpainting-0.1 的预训练模型所在的目录--prompt
: 正向提示词 1--prompt_2
: 正向提示词 2--negative_prompt
: 反向提示词 1--negative_prompt_2
: 反向提示词 2--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--init_image
: inpainting 任务的输入图片--mask_image
: 输入图片对应的 mask 图片--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持 ddim, ddpm, pndm, euler, euler_a, dpm++_2m, dpm_2m_karras, dpm_sde_karras--denoising_steps
: 去噪步数,默认为 20--output_dir
: 保存生成图片的路径--warmup_count
: warmup 次数--eval_count
: 重复推理次数
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffuision_xl_inpaint_txt2img -h
IP-Adapter-FaceID-SDXL 性能评估¶
安装依赖¶
安装 onnxruntime-gcu 等依赖:
请参考《TopsRider软件栈安装手册》安装TopsRider提供的 tops-inference.deb、tops-sdk.deb 以及 TopsInference, onnxruntime-gcu 的 whl 安装包。
注意:安装 onnxruntime-gcu 后,请确保环境中只有 onnxruntime-gcu,没有 onnxruntime 和 onnxruntime-gpu。如果环境中同时存在 onnxruntime、onnxruntime-gpu 和 onnxruntime_gcu,需要将 onnxruntime、onnxruntime-gpu 和 onnxruntime_gcu 都卸载,再重新安装 onnxruntime_gcu。
安装 IP-Adapter:
pip3 install git+https://github.com/tencent-ailab/IP-Adapter.git
branch:
main
commit id:
11a9046
安装 insightface:
pip3 install insightface==0.7.3 pip3 install numpy==1.23.5
如果缺失其它依赖,请根据提示安装
注意:安装 ip-adapter 依赖的第三方库 albumentations 需要访问 “https://pypi.org”,需要保证网络可访问,否则可能会安装失败。
准备模型¶
下载预训练模型:
请从 RealVisXL_V3.0 路径下载全部内容到模型存放目录,以下用
base_model_dir
表示其路径branch:
main
commit id:
4a3f0e4
请从 IP-Adapter-FaceID 路径下载 ip-adapter-faceid_sdxl.bin 到模型存放目录,以下用
ip_ckpt
表示其路径branch:
main
commit id:
43907e6
请下载 insightface buffalo_l.zip 文件并解压, 需要调整到如下目录结构,以下用
insightface_onnx_dir
表示解压后 insightface 所在的路径, 也可以指定一个存放 insightface 模型的路径,程序会自动下载、保存模型压缩文件到该路径并解压。第 1 次使用 onnxruntime-gcu 在 gcu 上运行 insightface 会花大约几分钟编 engine,以后则会复用已经编好的 engine:insightface/ └── models ├── buffalo_l │ ├── 1k3d68.onnx │ ├── 2d106det.onnx │ ├── det_10g.onnx │ ├── genderage.onnx │ └── w600k_r50.onnx └── buffalo_l.zip
【可选】请从 sdxl-vae-fp16-fix 路径下载全部内容到模型存放目录,以下用
vae_model_path
表示其路径branch:
main
commit id:
207b116
准备输入图片
下载这张示例图片作为 init_image,以下用
init_image_path
表示其路径
执行推理及评估¶
IP-Adapter-FaceID-SDXL 性能评估¶
对 IP-Adapter-FaceID-SDXL 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_ip_adapter_faceid_sdxl \
--base_model_dir ${base_model_dir} \
--ip_ckpt ${ip_ckpt} \
--vae_model_path ${vae_model_path} \
--insightface_onnx_dir ${insightface_onnx_dir} \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt 'A closeup shot of a beautiful Asian teenage girl in a white dress \
wearing small silver earrings in the garden, under the soft morning light' \
--negative_prompt 'monochrome, lowres, bad anatomy, worst quality, low quality, blurry' \
--seed 123 \
--denoising_steps 20 \
--scheduler 'ddim' \
--guidance_scale 7.5 \
--image_height 1024 \
--image_width 1024 \
--output_dir './outputs/benchmark_test_ip_adapter_faceid_sdxl' \
--input_image ${init_image_path} \
--warmup_count 3 \
--eval_count 5
其中,
--base_model_dir
: 基底模型所在的目录--ip_ckpt
: ip-adapter-faceid_sdxl 预训练模型所在的目录--vae_model_path
: vae 模型所在的目录,这个参数为可选参数,支持 sdxl-vae-fp16-fix 等 vae 模型。如果不指定,则使用基底模型自带的 vae 模型--insightface_onnx_dir
: insightface 模型的存放路径,指定该路径可以自动下载并保存 insightface 相关模型,也可以指向已经下载好的 insightface 模型存放路径,以避免重复下载--prompt
: 正向提示词--negative_prompt
: 反向提示词--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--num_images_per_prompt
: 每个 prompt 生成图片的数量--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m--denoising_steps
: 去噪步数,默认为 20--output_dir
: 保存生成图片的路径--warmup_count
: warmup 次数--eval_count
: 重复推理次数
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_ip_adapter_faceid_sdxl -h
LCM-LORA-SDXL 性能评估¶
准备模型¶
下载预训练模型:
请从 stable-diffusion-xl-base-1.0 路径下载全部内容到模型存放目录,以下用
model_path
表示其路径branch:
main
commit id:
4621659
请从 stable-diffusion-xl-1.0-inpainting-0.1 路径下载全部内容到模型存放目录,以下用
model_inpaint_path
表示其路径branch:
main
commit id:
115134f
请从 lcm-lora-sdxl 路径下载全部内容到模型存放目录,以下用
adapter_path
表示其路径branch:
main
commit id:
74100fa
请从 Papercut_SDXL 路径下载全部内容到模型存放目录,以下用
second_adapter_path
表示其路径branch:
main
commit id:
b001f28
请从 controlnet-canny-sdxl-1.0-small 路径下载全部内容到模型存放目录,以下用
second_adapter_controlnet_path
表示其路径branch:
main
commit id:
edd85f6
请从 t2i-adapter-canny-sdxl-1.0 路径下载全部内容到模型存放目录,以下用
second_adapter_t2i_path
表示其路径branch:
main
commit id:
2d7244b
准备输入图片
下载所有示例图片作为 init_image和mask_image,以下用
init_image_path
和mask_image_path
表示其路径
执行推理及评估¶
LCM-LORA-SDXL 性能评估¶
对 lcm-lora-sdxl 进行性能评估:
DEVICE="gcu"
# text2imgs
TASK=txt2img
python3.10 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_lcm_lora_sdxl \
--task $TASK \
--model_dir $model_path \
--adapter_path $adapter_path \
--output_dir $output_dir \
--prompt "Self-portrait oil painting, a beautiful cyborg with golden hair, 8k" \
--device $DEVICE \
--seed 1024 \
--warmup_count 1 \
--eval_count 4 \
--num_images_per_prompt 1 \
--denoising_steps 4 \
--guidance_scale 0
# inpaint
TASK=inpaint
python3.10 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_lcm_lora_sdxl \
--task $TASK \
--model_dir $model_inpaint_path \
--adapter_path $adapter_path \
--output_dir $output_dir \
--prompt "a castle on top of a mountain, highly detailed, 8k" \
--device $DEVICE \
--init_image $init_image_path \
--mask_image $mask_image_path \
--seed 1024 \
--warmup_count 1 \
--eval_count 4 \
--num_images_per_prompt 1 \
--denoising_steps 5 \
--guidance_scale 4
# combine
TASK=combine
python3.10 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_lcm_lora_sdxl \
--task $TASK \
--model_dir $model_path \
--adapter_path $adapter_path $second_adapter_path\
--output_dir $output_dir \
--prompt "papercut, a cute fox" \
--device $DEVICE \
--seed 1024 \
--warmup_count 1 \
--eval_count 4 \
--num_images_per_prompt 1 \
--denoising_steps 4 \
--guidance_scale 1
# controlnet
TASK=controlnet
python3.10 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_lcm_lora_sdxl \
--task $TASK \
--model_dir $model_path \
--adapter_path $adapter_path $second_adapter_controlnet_path \
--output_dir $output_dir \
--prompt "picture of the mona lisa" \
--device $DEVICE \
--init_image $init_image_path \
--seed 1024 \
--warmup_count 1 \
--eval_count 4 \
--num_images_per_prompt 1 \
--denoising_steps 5 \
--guidance_scale 1.5
# t2i
TASK=t2i
python3.10 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_lcm_lora_sdxl \
--task $TASK \
--model_dir $model_path \
--adapter_path $adapter_path $second_adapter_t2i_path \
--output_dir $output_dir\
--prompt "Mystical fairy in real, magic, 4k picture, high quality" \
--negative_prompt "extra digit, fewer digits, cropped, worst quality, low quality, glitch, deformed, mutated, ugly, disfigured" \
--device $DEVICE \
--init_image $init_image_path \
--seed 1024 \
--warmup_count 1 \
--eval_count 4 \
--num_images_per_prompt 1 \
--denoising_steps 4 \
--guidance_scale 1.5
其中,
--model_dir
: 预训练模型所在的目录--adapter_path
: adapter模型路径--task
: lora的具体任务--prompt
: 正向提示词--negative_prompt
: 反向提示词--init_image
: 任务的输入图片--mask_image
: 输入图片对应的 mask 图片--num_images_per_prompt
: 每个 prompt 生成图片的数量--denoising_steps
: 去噪步数--output_dir
: 保存生成图片的路径--warmup_count
: warmup 次数--eval_count
: 重复推理次数
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_stable_diffusion_lcm_lora_sdxl -h
InstantID 性能评估¶
安装依赖¶
安装 tops-inference.deb、tops-sdk.deb、TopsInference、onnxruntime-gcu:
请参考《TopsRider软件栈安装手册》安装TopsRider提供的 tops-inference.deb、tops-sdk.deb 以及 TopsInference, onnxruntime-gcu 的 whl 安装包。
注意:安装 onnxruntime-gcu 后,请确保环境中只有 onnxruntime-gcu,没有 onnxruntime 和 onnxruntime-gpu。如果环境中同时存在 onnxruntime、onnxruntime-gpu 和 onnxruntime_gcu,需要将 onnxruntime、onnxruntime-gpu 和 onnxruntime_gcu 都卸载,再重新安装 onnxruntime_gcu。
安装第三方依赖:
pip3 install opencv-python==4.6.0.66 pip3 install insightface==0.7.3 pip3 install numpy==1.23.5
如果缺失其它依赖,请根据提示安装
准备模型¶
下载预训练模型:
请从 stable-diffusion-xl-base-1.0 路径下载全部内容到模型存放目录,以下用
model_dir
表示其路径branch:
main
commit id:
4621659
请从 InstantID 路径下载全部内容到模型存放目录,目录中包括ControlNetModel和ip-adapter权重。以下用
model_controlnet_dir
表示ControlNetModel路径;ip_ckpt
表示ip-adapter路径branch:
main
commit id:
57b32df
请从 controlnet-depth-sdxl-1.0 路径下载全部内容到模型存放目录。以下用
model_controlnet_depth_dir
表示controlnet-depth-sdxl-1.0路径branch:
main
commit id:
17bb979
请下载 insightface buffalo_l.zip 文件并解压, 需要调整到如下目录结构,以下用
insightface_onnx_dir
表示解压后 insightface 所在的路径, 也可以指定一个存放 insightface 模型的路径,程序会自动下载、保存模型压缩文件到该路径并解压。第 1 次使用 onnxruntime-gcu 在 gcu 上运行 insightface 会花大约几分钟编 engine,以后则会复用已经编好的 engine:insightface/ └── models ├── buffalo_l │ ├── 1k3d68.onnx │ ├── 2d106det.onnx │ ├── det_10g.onnx │ ├── genderage.onnx │ └── w600k_r50.onnx └── buffalo_l.zip
请从 Annotators 路径下载全部内容到模型存放目录。以下用
annotators_dir
表示Annotators路径branch:
main
commit id:
982e7ed
准备输入图片
下载 face_image_list 人脸图片集,以下用
face_image_path
表示人脸图片集中一张图片的路径下载 pose_image_list 姿势图片集,以下用
pose_image_path
表示姿势图片集中一张图片的路径
执行推理及评估¶
InstantID 性能评估¶
对 InstantID 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_instantid \
--device gcu \
--base_model_dir ${model_dir} \
--annotators_dir ${annotators_dir} \
--controlnet_dir ${model_controlnet_dir} \
--controlnet_depth_dir ${model_controlnet_depth_dir} \
--insightface_onnx_dir ${insightface_onnx_dir} \
--ip_adapter_path ${ip_ckpt} \
--prompt "film noir style, ink sketch|vector, male man, highly detailed, sharp focus, ultra sharpness, monochrome, high contrast, dramatic shadows, 1940s style, mysterious, cinematic" \
--negative_prompt "ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, vibrant, colorful" \
--image_height 1024 \
--image_width 1024 \
--face_image_path ${face_image_path} \
--pose_image_path ${pose_image_path} \
--scheduler 'ddim' \
--denoising_steps 30 \
--output_dir './outputs/benchmark_instantid' \
--warmup_count 5 \
--eval_count 10
其中,
--base_model_dir
: 基底模型所在的目录--annotators_dir
: annotators 预训练模型所在的目录--controlnet_dir
: model_controlnet 模型所在的目录--controlnet_depth_dir
: model_controlnet_depth 预训练模型所在的目录--insightface_onnx_dir
: insightface 模型的存放路径,指定该路径可以自动下载并保存 insightface 相关模型,也可以指向已经下载好的 insightface 模型存放路径,以避免重复下载--ip_adapter_path
: ip-adapter 预训练模型所在的目录--prompt
: 正向提示词--negative_prompt
: 反向提示词--image_height
: 生成图片的高度--image_width
: 生成图片的宽度--face_image_path
: 一张人脸图片的路径--pose_image_path
: 一张姿态图片的路径--scheduler
: 使用的调度器,当前支持ddim, pndm, dpm++_2m, ddpm, euler, euler_a, dpm_2m_karras--denoising_steps
: 去噪步数,默认为 30--output_dir
: 保存生成图片的路径--warmup_count
: warmup 次数--eval_count
: 重复推理次数
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_instantid -h
SD 扩展模型性能评估¶
概述¶
本文档介绍在Enflame GCU上基于pytorch native进行stable diffusion 相关组件扩展模型性能测试
环境配置(必选)¶
以下步骤基于 Python3.10
, 请先安装所需依赖:
安装环境:安装过程请参考《TopsRider软件栈安装手册》,请根据手册完成TopsRider软件栈安装
安装 torch_gcu
注意:安装 torch_gcu-2.1.0 会自动安装 torch 2.1.0
pip3 install torch_gcu-2.1.0*-cp310-cp310-linux_x86_64.whl
安装 fast_diffusers
pip3 install fast_diffusers-0.27.0*-py3.10-*.whl
安装 fast_diffusers_utils
pip3 install fast_diffusers_utils-0.27.0*-py3.10-*.whl
环境配置(可选)¶
按照不同的待测模型组件,安装对应所需的依赖:
DeepDanbooru 性能评估¶
准备模型和数据¶
下载预训练模型:
请从 model-resnet_custom_v3.pt 路径下下载待测模型pt权重文件到本地目录,以下用
path_to_model
表示其路径准备数据集:
请本地准备一批图片放在文件夹内,以
path_to_data
表示文件夹路径,图片数量以几十至一百张左右为妙
执行推理及评估¶
python3 -m diffusers_utils.benchmarks.extensions.benchmark_test_deepdanbooru \
--model_path $path_to_model \
--image_folder $path_to_data \
--device 'gcu' \
--warmup_count 5
其中,
--model_path
: 参数指定预训练权重.pt文件路径--image_folder
: 指定本地放置图片的数据集文件夹--device
: 使用的设备,支持gcu/cpu/cuda,其中cpu不支持fp16,默认使用fp32推理。gcu和cuda默认使用fp16推理。--warmup_count
: 统计性能时,warmup预热时跳过的图片数
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.extensions.benchmark_test_deepdanbooru -h
BLIP_V1 模型性能评估¶
准备模型和数据¶
下载预训练模型:
请从 blip-image-captioning-base 路径下下载全部内容到模型存放目录,以下
path_to_model_dir
表示其路径branch:
main
commit id:
89b09ea1789f7addf2f6d6f0dfc4ce10ab58ef84
准备输入图片
准备一张图片,作为 BLIP_V1 的输入图片,以下用
path_to_image_path
表示其路径。
执行推理及评估¶
Hed 性能评估¶
环境配置¶
安装hed模型推理所需依赖库:
pip3 install controlnet_aux==0.0.7 pip3 install numpy==1.22.0
准备模型和数据¶
下载预训练模型: 请从 Annotators 路径下下载全部内容到模型存放目录,以下
path_to_model_dir
表示其路径branch:
main
commit id:
982e7edaec38759d914a963c48c4726685de7d96
准备输入图片
准备一张图片,作为 hed 的输入图片,以下用
path_to_image_path
表示其路径。
执行推理及评估¶
对 HED 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_hed \
--model_dir ${path_to_model_dir} \
--device gcu \
--warmup_count 5 \
--eval_count 5 \
--output_dir ./output/hed/benchmark/ \
--controlnet_image ${path_to_image_path} \
--detect_resolution 512 \
--image_resolution 512
其中,
--model_dir
: 参数blip_v1的预训练模型所在的目录--device
: 使用的设备,支持gcu/cpu/cuda,其中cpu不支持fp16,默认使用fp32推理。gcu和cuda默认使用fp16推理。--controlnet_image
: 输入图片的路径--output_dir
: 保存生成图片的路径--warmup_count
: warmup阶段推理次数,默认0次--eval_count
: eval阶段推理次数,默认1次--detect_resolution
: 输入图片维度--image_resolution
: 输出图片维度
其它参数及其含义请使用以下命令查看:
python3 -m diffusers_utils.benchmarks.benchmark_test_hed -h
DiT模型性能评估¶
概述¶
本文档介绍在 Enflame GCU 上基于 pytorch native 进行 DiT-XL 的text2image任务的性能测试方法
环境配置¶
以下步骤基于 Python3.10
, 请先安装所需依赖:
安装环境:安装过程请参考《TopsRider软件栈安装手册》,请根据手册完成TopsRider软件栈安装
安装 torch_gcu
注意:安装 torch_gcu-2.1.0 会自动安装 torch 2.1.0
pip3 install torch_gcu-2.1.0*-cp310-cp310-linux_x86_64.whl
安装 fast_diffusers
pip3 install fast_diffusers-0.27.0*-py3.10-*.whl
安装 fast_diffusers_utils
pip3 install fast_diffusers_utils-0.27.0*-py3.10-*.whl
DiT-XL 性能评估¶
准备模型¶
下载预训练模型:
请从 DiT-XL-2-512 路径下下载全部内容到模型存放目录,以下用
path_to_model_dir
表示其路径branch:
main
commit id:
101a3d462b22d64c4afdd4d0c8c59a2c0b961b99
执行推理及评估¶
Text2Image 性能评估¶
对 DiT-XL 512x512 进行性能评估:
python3 -m diffusers_utils.benchmarks.benchmark_test_dit \
--model_dir $path_to_model_dir \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "white shark" \
--seed 42 \
--denoising_steps 25 \
--scheduler 'dpm++_2m' \
--guidance_scale 4.0 \
--image_height 512 \
--image_width 512 \
--output_dir './results' \
--warmup_count 3 \
--eval_count 5
其中,
--model_dir
: DiT-XL的预训练模型所在的目录--prompt
: 提示词--image_height
: 生成图片的高度,如果不传(默认为None),则会对默认的43种分辨率进行性能评估,可以传一个或多个,以空格分隔,数量与 image_width 相同--image_width
: 生成图片的宽度,如果不传,则会对默认的43种分辨率进行性能评估,可以传一个或多个,以空格分隔,数量与 image_height 相同--num_images_per_prompt
: 每个prompt生成图片的数量,可以传一个或多个。如果传一个,则每个分辨率使用相同的num_images_per_prompt值;如果传多个,则其数量需要与image_height或image_width数量保持一致--scheduler
: 使用的调度器,当前支持dpm++_2m--denoising_steps
: 去噪步数,默认为25--output_dir
: 保存生成图片的路径--benchmark_save_path
: 保存生成的性能测试报告的路径,如果不设置, 则默认保存到’./output_dir/report-sd_v1_5_txt2img.json’--warmup_count
: warmup次数--eval_count
: 重复推理次数
其它参数及其含义请使用以下命令查看:
python3.10 -m diffusers_utils.benchmarks.benchmark_test_dit -h
执行不同分辨率的推理¶
例如,对 DiT-XL 1280x960 进行性能评估,修改–image_height以及–image_width即可
python3.10 -m diffusers_utils.benchmarks.benchmark_test_dit \
--model_dir $path_to_model_dir \
--device 'gcu' \
--num_images_per_prompt 1 \
--prompt "white shark" \
--seed 42 \
--denoising_steps 25 \
--scheduler 'dpm++_2m' \
--guidance_scale 4.0 \
--image_height 1280 \
--image_width 960 \
--output_dir './results' \
--warmup_count 3 \
--eval_count 5