ONNX 模型库
返回模型

说明文档

Stable Diffusion 1.5 潜在一致性模型 RKNN2 版本

使用 RKNPU2 运行 Stable Diffusion 1.5 LCM 图像生成模型!!

  • 推理速度(RK3588,单 NPU 核):

    • 384x384: 文本编码器 0.05s + U-Net 2.36s/it + VAE 解码器 5.48s
    • 512x512: 文本编码器 0.05s + U-Net 5.65s/it + VAE 解码器 11.13s
  • 内存占用:

    • 384x384: 约 5.2GB
    • 512x512: 约 5.6GB

使用方法

1. 克隆或者下载此仓库到本地。

2. 安装依赖

pip install diffusers pillow numpy<2 rknn-toolkit-lite2

3. 运行

python ./run_rknn-lcm.py -i ./model -o ./images --num-inference-steps 4 -s 512x512 --prompt \"Majestic mountain landscape with snow-capped peaks, autumn foliage in vibrant reds and oranges, a turquoise river winding through a valley, crisp and serene atmosphere, ultra-realistic style.\"

image/png

模型转换

安装依赖

pip install diffusers pillow numpy<2 rknn-toolkit2

1. 下载模型

下载一个 ONNX 格式的 Stable Diffusion 1.5 LCM 模型,并放到 ./model 目录下。

huggingface-cli download TheyCallMeHex/LCM-Dreamshaper-V7-ONNX
cp -r -L ~/.cache/huggingface/hub/models--TheyCallMeHex--LCM-Dreamshaper-V7-ONNX/snapshots/4029a217f9cdc0437f395738d3ab686bb910ceea ./model

理论上你也可以通过将 LCM Lora 合并到普通的 Stable Diffusion 1.5 模型,然后转换为 ONNX 格式,来实现 LCM 的推理。但是我这边也不知道怎么做,有知道的小伙伴可以提个 PR。

2. 转换模型

# 转换模型, 384x384 分辨率
python ./convert-onnx-to-rknn.py -m ./model -r 384x384 

注意分辨率越高,模型越大,转换时间越长。不建议使用太大的分辨率。

已知问题

  1. 截至目前,使用最新版本的 rknn-toolkit2 2.2.0 版本转换的模型仍然存在极其严重的精度损失!即使使用的是 fp16 数据类型。如图,上方是使用 ONNX 模型推理的结果,下方是使用 RKNN 模型推理的结果。所有参数均一致。并且分辨率越高,精度损失越严重。这是 rknn-toolkit2 的 bug。 (v2.3.0 已修复)

  2. 其实模型转换脚本可以选择多个分辨率(例如 "384x384,256x256"),但这会导致模型转换失败。这是 rknn-toolkit2 的 bug。

参考

happyme531/Stable-Diffusion-1.5-LCM-ONNX-RKNN2

作者 happyme531

↓ 0 ♥ 10

创建时间: 2024-09-19 00:23:30+00:00

更新时间: 2024-11-22 16:09:04+00:00

在 Hugging Face 上查看

文件 (40)

.gitattributes
README.md
convert-onnx-to-rknn.py
model/.gitattributes
model/Assets/Icon.png
model/Assets/LCM-Dreamshaper-V7-ONNX.json
model/Assets/OnnxStack - 640x320.png
model/Assets/Preview1.png
model/Assets/Preview2.png
model/Assets/Preview3.png
model/Assets/Preview4.png
model/Assets/Preview5.png
model/Assets/Preview6.png
model/Assets/lcm_angel_30_7.5_2092464983.png
model/Assets/lcm_car_30_7.5_2092464983.png
model/Assets/lcm_demon_30_7.5_2092464983.png
model/Assets/lcm_ninja_30_7.5_2092464983.png
model/README.md
model/feature_extractor/preprocessor_config.json
model/model_index.json
model/scheduler/scheduler_config.json
model/text_encoder/config.json
model/text_encoder/model.onnx ONNX
model/text_encoder/model.rknn
model/tokenizer/merges.txt
model/tokenizer/model.onnx ONNX
model/tokenizer/special_tokens_map.json
model/tokenizer/tokenizer_config.json
model/tokenizer/vocab.json
model/unet/config.json
model/unet/model.onnx ONNX
model/unet/model.onnx_data
model/unet/model.rknn
model/vae_decoder/config.json
model/vae_decoder/model.onnx ONNX
model/vae_decoder/model.rknn
model/vae_encoder/config.json
model/vae_encoder/model.onnx ONNX
run_onnx-lcm.py
run_rknn-lcm.py