RKNN Stable Diffusion LCM
Stable Diffusion 是一种基于潜在扩散模型的文本到图像生成模型,它通过向潜在空间逐步添加和去除噪声,将随机噪声转化为符合文本描述的图像。 近年来,Stable Diffusion 不断演进,在开源社区中衍生出多个优化版本,显著提升了生成质量、速度和计算效率。 本次演示使用的 Stable Diffusion LCM Dreamshaper V7,是一种结合 Latent Consistency Model 加速技术的轻量化变体,能够在极低推理步数下保持高质量的图像生成效果,仅需 4 步 即可生成清晰的图像。 本文将完整演示如何借助 RKNN 工具链,把该模型部署到 Rockchip 系列芯片的 NPU 上,并实现高效、低延迟的端侧图像生成。
提示
此文档以RK3588及Dreamshaper V7为例, 演示如何在Rockchip NPU上部署文生图模型, 需要预先在PC端配置好RKNN相关环境, 具体环境安装步骤参考 RKNN 安装
模型文件下载
瑞莎提供转换好的RKNN模型以及执行文件,输出分辨率为256x256,您可直接下载使用,具体步骤如下。
-
使用modelscope下载模型文件
- 创建存储模型文件的目录
Linux PC
mkdir sd-lcm-rknn && cd sd-lcm-rknn
- pip安装modelscope包
Linux PC
# 尽量使用较新的python版本避免兼容问题
pip3 install modelscope
- 克隆Stable-Diffusion-LCM_RKNN仓库
Linux PC
modelscope download --model radxa/Stable-Diffusion-LCM_RKNN
(可选)模型转换
如果您希望设定想要的输出分辨率,可以考虑自行转换模型,参考步骤如下。
-
从HuggingFace下载ONNX模型并转换为RKNN模型
- 创建存储模型文件的目录
Linux PC
mkdir sd-lcm-rknn && cd sd-lcm-rknn
- 克隆模型仓库
Linux PC
# 需要使用git lfs,如未安装请自行安装
git lfs install
git clone https://huggingface.co/thanhtantran/Stable-Diffusion-1.5-LCM-ONNX-RKNN2
- 激活虚拟环境
Linux PC
conda activate your_rknn_env
- 可先运行 run_onnx-lcm.py 测试模型完整性
Linux PC
# 使用-h参数查看参数帮助
python run_onnx-lcm.py -i ./model -o ./images --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."
- 运行 convert-onnx-to-rknn.py 转换模型
Linux PC
# 使用-h参数查看参数帮助,将N替换为你实际需要的分辨率,转换之后模型只可输出该分辨率图像
python convert-onnx-to-rknn.py -i ./model -r NxN
- 将文件整理为下面的目录结构,即可进行下一环节
---sd-lcm-rknn
---model
---scheduler
---scheduler_config.json
---text_encoder
---config.json
---model.rknn
---unet
---config.json
---model.rknn
---vae_decoder
---config.json
---model.rknn
---run_rknn-lcm.py
板端部署
-
将转换后的RKNN模型及可执行文件拷贝到板端
- 进入板端对应目录
Radxa SBC
cd sd-lcm-rknn
- 创建python虚拟环境
Radxa SBC
python -m venv .venv
- 激活虚拟环境
Radxa SBC
source .venv/bin/activate
- 安装相关依赖
Radxa SBC
pip3 install diffusers pillow "numpy<2.0" torch transformers rknn-toolkit-lite2
- 执行脚本
Radxa SBC
# 使用-h参数查看参数帮助,自行转换的模型需要替换分辨率参数
python ./run_rknn-lcm.py -i ./model -o ./images -s 256x256 --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."
模型结果及性能分析
- 板端256像素分辨率图片

- 单次性能情况,仅供参考:
text_encoder加载时间:Took 0.7 seconds.
unet加载时间:Took 2.8 seconds.
vae_decoder加载时间:Took 0.4 seconds.
Prompt encoding time: 0.08s
推理时间:Inference time: 4.55s
Decode time: 3.15s
Total time: 7.78s