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 推理

准备模型

执行推理

使用 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 推理

准备模型

  • 下载预训练模型:

  • 准备输入图片

    • 准备一张图片,作为 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_imagemask_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 表示其路径。

执行推理

conditional_image_captioning 性能评估

使用 BLIP_V1 进行推理:

python3 -m diffusers_utils.examples.extensions.demo_blip_v1 \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--prompt 'a photography of' \
--image_path ${path_to_image_path} \
--output_dir './results'

其中,

  • --model_dir: 参数blip_v1的预训练模型所在的目录

  • --device: 使用的设备,支持gcu/cpu/cuda,其中cpu不支持fp16,默认使用fp32推理。gcu和cuda默认使用fp16推理

  • --prompt: conditional提示词,默认为’a photography of’

  • --image_path: 输入图片的路径

  • --output_dir: 保存生成图片的路径

其它参数及其含义请使用以下命令查看:

python3 -m diffusers_utils.examples.extensions.demo_blip_v1 -h

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 性能评估

准备模型

  • 下载预训练模型:

  • 准备输入图片

    • 准备一张图片,作为 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_imagemask_image,以下用 init_image_pathmask_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 表示其路径。

执行推理及评估

conditional_image_captioning 性能评估

对 BLIP_V1 进行性能评估:

python3 -m diffusers_utils.benchmarks.extensions.benchmark_test_blip_v1 \
--model_dir ${path_to_model_dir} \
--device 'gcu' \
--prompt 'a photography of' \
--image_path ${path_to_image_path} \
--output_dir './results/blip_v1/benchmark' \
--warmup_count 5 \
--eval_count 30

其中,

  • --model_dir: 参数blip_v1的预训练模型所在的目录

  • --device: 使用的设备,支持gcu/cpu/cuda,其中cpu不支持fp16,默认使用fp32推理。gcu和cuda默认使用fp16推理。

  • --prompt: conditional提示词,默认为’a photography of’

  • --image_path: 输入图片的路径

  • --output_dir: 保存生成图片的路径

  • --warmup_count: warmup阶段推理次数,默认0次

  • --eval_count: eval阶段推理次数,默认1次

其它参数及其含义请使用以下命令查看:

python3 -m diffusers_utils.benchmarks.extensions.benchmark_test_blip_v1 -h

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