diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/README.md b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/README.md index c93df4fba6f62e9618ed0324333ec3e9150c4f3e..30fbf1e9b19af54a466a711e623f40f6ffd27bdc 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/README.md +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/README.md @@ -2,23 +2,23 @@ - [概述](#ZH-CN_TOPIC_0000001172161501) - - [输入输出数据](#section540883920406) - [推理环境准备](#ZH-CN_TOPIC_0000001126281702) + - [快速上手](#ZH-CN_TOPIC_0000001126281700) - [获取源码](#section4622531142816) - [模型推理](#section741711594517) -- [模型推理性能&精度](#ZH-CN_TOPIC_0000001172201573) -# 概述`` +# 概述 - ControlNet是一种神经网络架构,可将控制信息添加到预训练的扩散模型中。作用是通过添加额外控制条件,来引导Stable Diffusion生成图像,从而提升 AI 图像生成的可控性和精度。在使用ControlNet模型之后,Stable Diffusion模型的权重被复制出两个相同的部分,分别是“锁定”副本和“可训练”副本。ControlNet主要在“可训练”副本上施加控制条件,然后将施加控制条件之后的结果和原来SD模型的结果相加获得最终的输出结果。神经架构与“零卷积”(零初始化卷积层)连接,参数从零逐渐增长,确保微调的过程不会受到噪声影响。这样可以使用小批量数据集就能对控制条件进行学习训练,同时不会破坏Stable Diffusion模型原本的能力。如今ControlNet的应用包括:控制人物姿势、线稿上色、画质修复等。 + ControlNet是一种神经网络架构,可将控制信息添加到预训练的扩散模型中。作用是通过添加额外控制条件,来引导Stable Diffusion生成图像,从而提升 AI 图像生成的可控性和精度。在使用ControlNet模型之后,Stable Diffusion模型的权重被复制出两个相同的部分,分别是“锁定”副本和“可训练”副本。ControlNet主要在“可训练”副本上施加控制条件,然后将施加控制条件之后的结果和原来SD模型的结果相加获得最终的输出结果。神经架构与“零卷积”(零初始化卷积层)连接,参数从零逐渐增长,确保微调的过程不会受到噪声影响。这样可以使用小批量数据集就能对控制条件进行学习训练,同时不会破坏Stable Diffusion模型原本的能力。 + ControlNet的应用包括:控制人物姿势、线稿上色、画质修复等。 - 参考实现: ```bash # controlnet-canny-sdxl-1.0 https://huggingface.co/diffusers/controlnet-canny-sdxl-1.0 ``` -# 推理环境准备`` +# 推理环境准备 - 该模型需要以下插件与驱动 @@ -31,9 +31,9 @@ 该模型性能受CPU规格影响,建议使用64核CPU(arm)以复现性能 -# 快速上手`` +# 快速上手 -## 获取源码`` +## 获取源码 1. 安装依赖。 @@ -60,14 +60,16 @@ python3 stable_diffusion_attention_patch.py ``` -## 准备数据集`` +## 准备数据集 1. 获取原始数据集。 ControlNet是一个控制预训练图像扩散模型的神经网络,允许输入调节图像,然后使用该调节图像来操控图像生成。调节图像可从官网下载。 + ```bash wget https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd_controlnet/hf-logo.png + ``` -## 模型推理`` +## 模型推理 1. 模型转换。 使用Pytorch导出pt模型,然后使用MindIE推理引擎转换为适配昇腾的模型。 @@ -130,14 +132,14 @@ 静态编译场景: - ./models/clip/clip_bs{batch_size}.pt, ./models/clip/clip_bs{batch_size}_compile.ts 和 ./models/clip/clip2_bs{batch_size}.pt, ./models/clip/clip2_bs{batch_size}_compile.ts - - ./models/unet/unet_bs{batch_size*2}.pt, ./models/unet/unet_bs{batch_size*2}_compile_static.ts + - ./models/unet/unet_bs{batch_size x 2}.pt, ./models/unet/unet_bs{batch_size x 2}_compile_static.ts - ./models/vae/vae_bs{batch_size}.pt, ./models/vae/vae_bs{batch_size}_compile_static.ts - ./models/control/control_bs{batch_size}.pt, ./models/control/control_bs{batch_size}_compile_static.ts 动态分档场景: - ./models/clip/clip_bs{batch_size}.pt, ./models/clip/clip_bs{batch_size}_compile.ts 和 ./models/clip/clip2_bs{batch_size}.pt, ./models/clip/clip2_bs{batch_size}_compile.ts - - ./models/unet/unet_bs{batch_size*2}.pt, ./models/unet/unet_bs{batch_size*2}_compile.ts + - ./models/unet/unet_bs{batch_size x 2}.pt, ./models/unet/unet_bs{batch_size x 2}_compile.ts - ./models/vae/vae_bs{batch_size}.pt, ./models/vae/vae_bs{batch_size}_compile.ts - ./models/control/control_bs{batch_size}.pt, ./models/control/control_bs{batch_size}_compile.ts diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/README.md b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/README.md index b2aacbf223ce354f954ce5ace26191893387e890..c574f3956a76d386cb5e78b52c83b20d1e9f13de 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/README.md +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/README.md @@ -2,8 +2,6 @@ - [概述](#ZH-CN_TOPIC_0000001172161501) - - - [输入输出数据](#section540883920406) - [推理环境准备](#ZH-CN_TOPIC_0000001126281702) @@ -12,8 +10,6 @@ - [获取源码](#section4622531142816) - [模型推理](#section741711594517) -- [模型推理性能&精度](#ZH-CN_TOPIC_0000001172201573) - # 概述 @@ -79,9 +75,13 @@ 1. 获取原始数据集。 Inpainting图像重绘。图像编辑是指对图像进行修改、调整和优化的过程。可以包括对图像的颜色、对比度、亮度、饱和度等进行调整,以及修复图像中的缺陷、删除不需要的元素、添加新的图像内容等操作。 - img: wget https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png - mask img: wget https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png - + ```bash + # img + wget https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png + + #mask img + wget https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png + ``` ## 模型推理 @@ -127,14 +127,14 @@ 静态编译场景: - ./models/clip/clip_bs{batch_size}.pt, ./models/clip/clip_bs{batch_size}_compile.ts 和 ./models/clip/clip2_bs{batch_size}.pt, ./models/clip/clip2_bs{batch_size}_compile.ts - - ./models/unet/unet_bs{batch_size*2}.pt, ./models/unet/unet_bs{batch_size*2}_compile_static.ts + - ./models/unet/unet_bs{batch_size x 2}.pt, ./models/unet/unet_bs{batch_size x 2}_compile_static.ts - ./models/vae/vae_bs{batch_size}.pt, ./models/vae/vae_bs{batch_size}_compile_static.ts - ./models/image_encode/image_encode_bs{batch_size}.pt, ./models/image_encode/image_encode_bs{batch_size}_compile_static.ts 动态分档场景: - ./models/clip/clip_bs{batch_size}.pt, ./models/clip/clip_bs{batch_size}_compile.ts 和 ./models/clip/clip2_bs{batch_size}.pt, ./models/clip/clip2_bs{batch_size}_compile.ts - - ./models/unet/unet_bs{batch_size*2}.pt, ./models/unet/unet_bs{batch_size*2}_compile.ts + - ./models/unet/unet_bs{batch_size x 2}.pt, ./models/unet/unet_bs{batch_size x 2}_compile.ts - ./models/vae/vae_bs{batch_size}.pt, ./models/vae/vae_bs{batch_size}_compile.ts - ./models/image_encode/image_encode_bs{batch_size}.pt, ./models/image_encode/image_encode_bs{batch_size}_compile.ts diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/README.md b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/README.md index 8150976b2328ee882c2680484500046c74c72409..669b981ca0a1166cb8ef35b38967cf87786a9ba2 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/README.md +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/README.md @@ -2,8 +2,6 @@ - [概述](#ZH-CN_TOPIC_0000001172161501) - - - [输入输出数据](#section540883920406) - [推理环境准备](#ZH-CN_TOPIC_0000001126281702) @@ -12,8 +10,6 @@ - [获取源码](#section4622531142816) - [模型推理](#section741711594517) -- [模型推理性能&精度](#ZH-CN_TOPIC_0000001172201573) - # 概述 @@ -71,7 +67,6 @@ # 若使用unetCache python3 stable_diffusionxl_unet_patch.py ``` - ``` ## 准备数据集 @@ -122,6 +117,21 @@ - --device:推理设备ID - --use_cache: 【可选】在推理过程中使用cache + 静态编译场景: + + - ./models/clip/clip_bs{batch_size}.pt, ./models/clip/clip_bs{batch_size}_compile.ts 和 ./models/clip/clip2_bs{batch_size}.pt, ./models/clip/clip2_bs{batch_size}_compile.ts + - ./models/unet/unet_bs{batch_size x 2}.pt, ./models/unet/unet_bs{batch_size x 2}_compile_static.ts + - ./models/vae/vae_bs{batch_size}.pt, ./models/vae/vae_bs{batch_size}_compile_static.ts + - ./models/ddim/ddim_bs{batch_size}.pt, ./models/ddim/ddim_bs{batch_size}_compile_static.ts + + 动态分档场景: + + - ./models/clip/clip_bs{batch_size}.pt, ./models/clip/clip_bs{batch_size}_compile.ts 和 ./models/clip/clip2_bs{batch_size}.pt, ./models/clip/clip2_bs{batch_size}_compile.ts + - ./models/unet/unet_bs{batch_size x 2}.pt, ./models/unet/unet_bs{batch_size x 2}_compile.ts + - ./models/vae/vae_bs{batch_size}.pt, ./models/vae/vae_bs{batch_size}_compile.ts + - ./models/ddim/ddim_bs{batch_size}.pt, ./models/ddim/ddim_bs{batch_size}_compile.ts + + 2. 开始推理验证。 diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/export_ts_prompt_weight.py b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/export_ts_prompt_weight.py index 4d5263bf1d23ffa9ce6a7c962bd07eeb5a65f9f6..7c82b3090b18d97c5250689a1fcc6b6b98a29070 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/export_ts_prompt_weight.py +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/export_ts_prompt_weight.py @@ -265,6 +265,7 @@ def trace_unet_init(sd_pipeline, batch_size, unet_pt_path): in_channels = unet_model.config.in_channels max_position_embeddings = encoder_model.config.max_position_embeddings encoder_hidden_size_2 = encoder_model_2.config.hidden_size + encoder_hidden_size = encoder_model.config.hidden_size + encoder_hidden_size_2 if not os.path.exists(unet_pt_path): dummy_input = (