跳转至

NPU

主板 主控 平台 NPU
K1 RK3568 Rockchip 1 TOPS
K1B RK3568 Rockchip 1 TOPS
K1MINI RK3568 Rockchip 1 TOPS
K3 RK3562 Rockchip 1 TOPS
K3B RK3562 Rockchip 1 TOPS
K7 RK3576 Rockchip 6 TOPS
K7C RK3576 Rockchip 6 TOPS
K7S RK3576 Rockchip 6 TOPS
K8 RK3588 Rockchip 6 TOPS
K8D RK3588S2 Rockchip 6 TOPS
K11C RK3566 Rockchip 1 TOPS
主板 主控 平台 NPU
K2B H618 Allwinner
K2C H618 Allwinner
K4B T113 Allwinner
K5C A133 Allwinner
K9 T527 Allwinner 2 TOPS
K10B A733 Allwinner 3 TOPS

Allwinner NPU

aw_npu_model_zoo 支持平台

  • A733 / T736
  • T527 / MR527
  • MR536 / T536
  • V85x / R853

AW NPU 工具链支持平台

  • A733 / T736
  • T527 / MR527
  • MR536 / T536

全志 T527 / A733 等平台搭载 Vivante VIP9000 系列 NPU,支持 INT8/UINT8/INT16 量化精度,可导入 ONNX、TensorFlow、Caffe、PyTorch 等主流模型格式。

NPU 开发通过 ACUITY Toolkit 完成模型转换(导入 → 量化 → 导出 NBG),导出的 NBG 文件直接部署到板端通过 VIP Lite API 或 vpm_run 推理。

AW NPU 组件:

  • ACUITY Toolkit — 端到端模型转换/量化/编译工具,支持多种 AI 框架模型导入,输出 NBG 或 OpenVX C 源码
  • VIPLite Driver — 嵌入式轻量级 NPU 驱动(数十 KB 内存),加载运行 NBG 模型,板端固件已预置
  • TIM-VX — Runtime Inferencing 在线推理接口,支持 TensorFlow Lite / Android NN 等框架后端的实时推理
  • vpm_run — NBG 模型板端测试工具,预置在固件中
  • aw_npu_model_zoo — 官方模型仓库,含 YOLOv5/v8/v11、MobileNet、OCR、CLIP、Zipformer 等示例

PC 端 NPU 部署

开发环境部署

全志 NPU 推荐使用 Docker 镜像搭建 PC 端开发环境。Docker 镜像内含 vpm_compile 模型编译工具、Acuity Toolkit 量化转换工具及 VIP Lite Runtime 库。

# 将 linux_aw_npu/ 放到 Ubuntu 家目录(如通过网盘/Samba 拷贝)
# 进入工作目录
mkdir -p ~/npu_workspace && cd ~/npu_workspace

# 解压 Docker 镜像
# linux_aw_npu/docker/ubuntu-npu_v2.0.10.2.tar.zip 需先解压得到 tar
unzip ~/linux_aw_npu/docker/ubuntu-npu_v2.0.10.2.tar.zip
# 得到 ubuntu-npu_v2.0.10.2.tar

# 加载 Docker 镜像
sudo docker load -i ubuntu-npu_v2.0.10.2.tar

# 启动容器,挂载 model zoo 到 /workspace
sudo docker run --ipc=host -itd \
  -v ~/linux_aw_npu/model_zoo/v0.8.0:/workspace \
  --name npu_env ubuntu-npu:v2.0.10.2 /bin/bash

模型转换

Acuity Toolkit 是模型转换的核心工具,支持 importquantizeexport 等操作流程,以下流程以 K10B (A733) 为例,基于全志 NPU Docker 镜像 ubuntu-npu:v2.0.10.2(acuity v6.30.22)和 awnpu_model_zoo-v0.8.0。。

以 YOLOv5s 为例的转换步骤

以下使用 model zoo 中的 yolov5s_rt.onnx(已移除后处理节点)进行转换:

# 进入 Docker 容器
sudo docker exec -it npu_env /bin/bash

# 设置环境变量
export ACUITY_PATH=$HOME/acuity-toolkit-whl-6.30.22/bin
export VIV_SDK=$HOME/Vivante_IDE/VivanteIDE5.11.0/cmdtools

# 进入转换目录
cd /workspace/examples/yolov5/convert_model

# 1. 模型导入
pegasus import onnx --model yolov5s_rt.onnx \
  --output-model yolov5s_rt.json --output-data yolov5s_rt.data

# 2. 模型量化(uint8,12 张校正集)
pegasus quantize --model yolov5s_rt.json --model-data yolov5s_rt.data \
  --device CPU --with-input-meta yolov5s_rt_inputmeta.yml \
  --iterations 12 --rebuild \
  --model-quantize yolov5s_rt_uint8.quantize \
  --quantizer asymmetric_affine --qtype uint8

# 3. 导出 NBG 模型(A733 平台)
pegasus export ovxlib --model yolov5s_rt.json --model-data yolov5s_rt.data \
  --dtype quantized --model-quantize yolov5s_rt_uint8.quantize \
  --batch-size 1 --save-fused-graph \
  --target-ide-project 'linux64' \
  --optimize VIP9000NANODI_PLUS_PID0X1000003B \
  --viv-sdk ${VIV_SDK} --pack-nbg-unify \
  --with-input-meta yolov5s_rt_inputmeta.yml \
  --postprocess-file yolov5s_rt_postprocess_file.yml \
  --output-path ./wksp/yolov5s_rt_uint8/yolov5s_rt_uint8

平台优化参数对照:

平台 --optimize 参数
V85x / R853 VIP9000PICO_PID0XEE
T527 / MR527 VIP9000NANOSI_PLUS_PID0X10000016
MR536 / T536 VIP9000NANODI_PLUS_PID0X1000003B
A733 / T736 VIP9000NANODI_PLUS_PID0X1000003B

使用 model zoo 提供的辅助脚本(一键导入 → 量化 → 导出):

cd /workspace/examples/yolov5/convert_model
./convert_model_env.sh                     # 创建脚本软链接
./pegasus_import.sh yolov5s_rt            # 导入
./pegasus_quantize.sh yolov5s_rt uint8 12 # 量化
./pegasus_export_ovx_nbg.sh yolov5s_rt uint8 a733  # 导出 A733 NBG

导出产物位于 ../model/yolov5s_rt_uint8_a733.nb。使用 nbinfo 查看模型信息:

nbinfo -a yolov5s_rt_uint8_a733.nb
# Input:  3x640x640x1, UINT8, non-quant
# Output: 80x80x85x3 + 40x40x85x3 + 20x20x85x3, FP32
# Total Video Memory: 19 MB

验证通过的版本:acuity v6.30.22 + awnpu_model_zoo-v0.8.0,生成 NBG 约 5.3 MB。

主板端 NPU 部署

驱动确认

# 检查 VIP Core 驱动
lsmod | grep vipcore

# 检查设备节点
ls -l /dev/vipcore

# 检查 NPU 频率
cat /sys/class/devfreq/3600000.npu/cur_freq
cat /sys/class/devfreq/3600000.npu/available_frequencies
cat /sys/class/devfreq/3600000.npu/governor

预置测试资源

SDK 预置测试资源位于 /aw-test/npu/vpm_run/

资源 路径
NBG 模型 v3 /aw-test/npu/vpm_run/v3/network_binary.nb
NBG 模型 v2 /aw-test/npu/vpm_run/v2/network_binary.nb
输入数据 /aw-test/npu/vpm_run/input_0.dat
配置文件 /aw-test/npu/vpm_run/a733_sample.txt

推理测试

使用 vpm_run 测试 NBG 模型:

# 创建测试配置
echo "[network]" > /tmp/npu_test/test.txt
echo "/tmp/npu_test/yolov5s_rt_uint8_a733.nb" >> /tmp/npu_test/test.txt
echo "[input]" >> /tmp/npu_test/test.txt
echo "/aw-test/npu/vpm_run/input_0.dat" >> /tmp/npu_test/test.txt

# 推模型到板端(NBG 从 linux_aw_npu/nbg_models/ 获取)
adb push ~/linux_aw_npu/nbg_models/yolov5s_rt_uint8_a733.nb /tmp/npu_test/

# 运行推理(-l 循环次数,-d 设备号,-b 1 跳过输出保存)
adb shell "vpm_run -s /tmp/npu_test/test.txt -l 5 -d 0 -b 1"

# 224x224 分类模型(使用预置资源)
adb shell "vpm_run -s /aw-test/npu/vpm_run/a733_sample.txt -l 5 -d 0 --show_top5 1 --save_txt 0"

正常输出示例(K10B YOLOv5s 640x640):

init vip lite, driver version=0x00020003...
VIPLite driver software library version 2.0.3.4-AW-2025-05-16
vip lite init OK.
cid=0x1000003b, device_count=1
  device[0] core_count=1
create network 0: 7844 us.
input 0 dim 3 640 640 1, data_format=2
ouput 0 dim 80 80 85 3
ouput 1 dim 40 40 85 3
ouput 2 dim 20 20 85 3
memory pool size=3892224byte
run time for this network 0: 20375 us.
profile inference time=20096us
vpm run ret=0

VIP Lite Runtime API

端侧应用开发基于 VIP Lite API,支持 C 语言编程,适用于 Linux 和 Android 系统。示例代码位于 model zoo 的 examples/ 目录。

板端原生编译(推荐,避免 glibc 兼容问题):

K10B Debian 11 系统自带 gcc 10.2 和 libopencv-dev,可直接在板端编译运行示例。

# 1. 推源码和运行时库到板端
adb shell "mkdir -p /tmp/yolov5_build/model"
adb push ~/linux_aw_npu/model_zoo/v0.8.0/examples/yolov5/*.cpp /tmp/yolov5_build/
adb push ~/linux_aw_npu/model_zoo/v0.8.0/examples/yolov5/*.h /tmp/yolov5_build/
adb push ~/linux_aw_npu/model_zoo/v0.8.0/common/npuruntime/npulib.* /tmp/yolov5_build/
adb push ~/linux_aw_npu/model_zoo/v0.8.0/common/npuruntime/npu_util.* /tmp/yolov5_build/
adb push ~/linux_aw_npu/model_zoo/v0.8.0/common/npuruntime/include/vip_lite*.h /tmp/yolov5_build/
adb push ~/linux_aw_npu/model_zoo/v0.8.0/common/npuruntime/lib_linux_aarch64/A733/*.so /tmp/yolov5_build/
adb push ~/linux_aw_npu/nbg_models/yolov5s_rt_uint8_a733.nb /tmp/yolov5_build/model/
adb push ~/linux_aw_npu/model_zoo/v0.8.0/examples/yolov5/model/dog.jpg /tmp/yolov5_build/model/

# 2. 板端编译
adb shell "cd /tmp/yolov5_build && g++ -std=c++11 -O2 *.cpp -o yolov5_demo -I. -L. -lNBGlinker -lVIPhal \$(pkg-config --cflags --libs opencv4) -lm -ldl"

# 3. 运行推理
adb shell "cd /tmp/yolov5_build && LD_LIBRARY_PATH=. ./yolov5_demo -nb model/yolov5s_rt_uint8_a733.nb -i model/dog.jpg"

正常输出示例(YOLOv5s,640x640):

Tip

若使用 Ubuntu 22.04 的 gcc-aarch64-linux-gnu 交叉编译,其链接的 glibc 2.35 与 Debian 11 (glibc 2.31) 不兼容,建议采用板端原生编译。

input  0 dim 3 640 640 1
output 0 dim 80 80 85 3
output 1 dim 40 40 85 3
output 2 dim 20 20 85 3
create network 0: 13257 us
run time: 21611 us
detection num: 3
 16: 92%, [134, 226, 307, 545], dog
  7: 69%, [471,  77, 689, 173], truck
  1: 52%, [162, 125, 559, 423], bicycle

Rockchip NPU

rknn-toolkit2 支持平台

  • RK3588 Series
  • RK3576 Series
  • RK3566/RK3568 Series
  • RK3562 Series
  • RV1103/RV1106
  • RV1103B/RV1106B
  • RV1126B
  • RK2118

rknn_model_zoo 支持平台

  • Support RK3562, RK3566, RK3568, RK3576, RK3588 , RV1126B platforms.
  • Limited support RV1103, RV1106
  • Support RV1109, RV1126, RK1808 platforms.

rknn-llm 支持平台

  • RK3588 Series
  • RK3576 Series
  • RK3562 Series
  • RV1126B Series

瑞芯微RK356X、RK3576、RK3588系列芯片均内置独立NPU(神经网络处理单元),其中INT8算力最高可达1TOPS、6TOPS级别,全面支持TensorFlow、TF-lite、Pytorch、Caffe、ONNX等主流深度学习框架,具体详细参数可参考对应芯片数据手册。

NPU作为专为神经网络运算设计的专用硬件,核心使命是高效加速人工智能领域的神经网络算法,尤其适配机器视觉、自然语言处理等核心场景。随着人工智能应用场景的不断拓展,基于RKNPU的解决方案已覆盖多个领域,包括面部跟踪、手势与身体姿态跟踪、图像分类、视频监控、自动语音识别(ASR)以及高级驾驶员辅助系统(ADAS)等,满足多样化的AI部署需求。

为方便开发者基于RKNPU进行AI项目开发,瑞芯微官方提供了全套RKNN组件,涵盖开发、部署、优化全流程,具体包括RKNPU2、RKNN Toolkit2、RKLLM-Toolkit及RKNPU驱动等,各组件功能分工明确、协同适配:

  • RKNPU2:开发套件核心组成部分,提供librknnrt.so等运行库,支持C/C++编程接口,可直接用于Linux、Android系统下RKNN模型的部署与推理,为AI应用落地提供底层运行支撑。
  • RKNN Toolkit2:基于Python接口的开发套件,支持x86、arm64双平台,集成模型转换、量化、推理测试、性能与内存评估、量化精度分析、模型加密等一站式功能;其中包含的RKNN Toolkit Lite2子模块,可直接在瑞芯微板卡上部署RKNN模型,简化板端开发流程。
  • RKNN模型:瑞芯微基于自身NPU硬件架构定制的专属模型格式,相较于通用模型格式,其在Rockchip NPU上可实现更高的推理性能与运行效率,是RKNPU加速能力的核心载体。
  • RKLLM-Toolkit:专注于大语言模型(LLM)开发的专用套件,支持在计算机上完成Hugging Face格式大语言模型的量化与转换,最终输出适配RKNPU的RKLLM模型,助力大语言模型在瑞芯微平台的快速部署。
  • RKNPU驱动:提供NPU硬件与系统的接口程序,瑞芯微板卡系统固件已完成驱动适配,开发者无需额外开发驱动,可直接基于现有固件开展AI项目开发,降低部署门槛。

此外,瑞芯微官方还提供了RKNN Model Zoo模型仓库,该仓库基于RKNN工具链开发,整合了当前主流AI算法的完整部署例程,涵盖Python API与CAPI两种开发接口,开发者可直接参考例程快速上手,大幅缩短AI项目的开发周期。

系统支持部署 rknn-toolkit2rknn_model_zoorknn-llm/,点击跳转至 Rockhip 在线官方文档。

PC 端 NPU 部署

rknn-toolkit2 环境部署

下载 RKNN 相关仓库

可通过命令行或云盘中进行 下载RKNN仓库

# 新建 Projects 文件夹
mkdir Projects

# 进入该目录
cd Projects

# 下载 RKNN-Toolkit2 仓库
git clone https://github.com/airockchip/rknn-toolkit2.git --depth 1

# 下载 RKNN Model Zoo 仓库
git clone https://github.com/airockchip/rknn_model_zoo.git --depth 1

# 注意:
# 1.参数 --depth 1 表示只克隆最近一次 commit
# 2.如果遇到 git clone 失败的情况,也可以直接在 github 中下载压缩包到本地,然后解压至该目录
安装 Miniforge Conda
conda -V
# 参考输出信息:conda 23.3.1 ,表示 Miniforge conda 版本为 23.3.1
# 如果提示 conda: command not found,则表示未安装 Miniforge

wget -c https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh

chmod 777 Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh

source ~/miniforge3/bin/activate # Miniforge 安装的目录
# 成功后,命令行提示符会变成以下形式:
# (base) xxx@xxx:~$

conda create -n toolkit2 python=3.8

conda activate toolkit2
# 成功后,命令行提示符会变成以下形式:
# (toolkit2) xxx@xxx:~$
安装 RKNN-Toolkit2

通过 pip 源安装

pip install rknn-toolkit2 -i https://pypi.org/simple

# 如果已安装 RKNN-Toolkit2,可通过以下命令升级 RKNN-Toolkit2
pip install rknn-toolkit2 -i https://pypi.org/simple --upgrade

通过本地 wheel 包安装

# 进入 rknn-toolkit2 目录
cd Projects/rknn-toolkit2/rknn-toolkit2

# 请根据不同的 python 版本及处理器架构,选择不同的 requirements 文件:
# 其中 cpxx 是 python 版本号
pip install -r packages/x86_64/requirements_cpxx.txt
# pip install -r packages/arm64/arm64_requirements_cpxx.txt

# 安装 RKNN-Toolkit2
# 请根据不同的 python 版本及处理器架构,选择不同的 wheel 安装包文件:
# 其中 x.x.x 是 RKNN-Toolkit2 版本号,cpxx 是 python 版本号
pip install packages/x86_64/rknn_toolkit2-x.x.x-cpxx-cpxx-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
# pip install packages/arm64/rknn_toolkit2-x.x.x-cpxx-cpxx-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

验证,如果安装失败,请查阅 《Rockchip_RKNPU_User_Guide_RKNN_SDK_CN.pdf》文档中的第 10.2 章节 "工具安装问题",其中详细介绍了 RKNN-Toolkit2 环境安装失败的解决方法。

# 进入 Python 交互模式
python
# 导入 RKNN 类
from rknn.api import RKNN

rknn 模型转换

# 进入 rknn_model_zoo/examples/yolov5/model 目录
cd Projects/rknn_model_zoo/examples/yolov5/model

# 运行 download_model.sh 脚本,下载 yolov5 onnx 模型
# 例如,下载好的 onnx 模型存放路径为 model/yolov5s_relu.onnx
./download_model.sh

# 进入 rknn_model_zoo/examples/yolov5/python 目录
cd Projects/rknn_model_zoo/examples/yolov5/python

# 运行 convert.py 脚本,将原始的 ONNX 模型转成 RKNN 模型
# 用法: python convert.py model_path [rk3566|rk3588|rk3562] [i8/fp] [output_path]
python convert.py ../model/yolov5s_relu.onnx rk3588 i8 ../model/yolov5s_relu.rknn

rknn_model_zoo 交叉编译

编译环境安装
sudo apt install libopencv-dev git cmake make gcc g++ libsndfile1-dev -y
GCC 交叉编译工具链下载

板端为 64 位系统,下载地址:

https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz

板端为 32 位系统,下载地址:

https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linuxgnueabihf/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz

# 存放路径
Projects
├── rknn-toolkit2
├── rknn_model_zoo
└── gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu # 此路径在后面编译RKNN C Demo时会用到
交叉编译
# 添加到 build-linux.sh 脚本的开头位置即可
GCC_COMPILER=Projects/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu

# 进入 rknn_model_zoo 目录
cd Projects/rknn_model_zoo

# 运行 build-linux.sh 脚本
# 用法:./build-linux.sh -t <target> -a <arch> -d <build_demo_name> [-b <build_type>] [-m]
# -t : target (rk356x/rk3588) # 平台类型,rk3568/rk3566 都统一为rk356x
# -a : arch (aarch64/armhf) # 板端系统架构
# -d : demo name # 对应 examples 目录下子文件夹的名称,如yolov5、mobilenet
# -b : build_type(Debug/Release)
# -m : enable address sanitizer, build_type need set to Debug
./build-linux.sh -t rk356x -a aarch64 -d yolov5

主板端 NPU 部署

如果板端没有安装 RKNN Server 和 Runtime 库,或者 RKNN Server 和 Runtime 库的版本不一致,都需要重新安装 RKNPU2 环境。

通常情况下,开发板默认已经安装版本一致的 RKNPU2 环境。

(注意:1. 若使用动态维度输入的 RKNN 模型,则要求 RKNN Server 和 Runtime 库版本 >= 1.5.0。2. 要保证 RKNN Server 、Runtime 库的版本、RKNN-Toolkit2 的版本是一致的,建议都安装最新的版本)

确认 RKNPU2 环境

# 查询 RKNPU2 驱动版本
dmesg | grep -i rknpu

# 启动 rknn_server
restart_rknn.sh
# start rknn server, version: x.x.x 代表启动rknn_server服务成功,即已经安装RKNPU2环境

# 查询rknn_server版本
strings /usr/bin/rknn_server | grep -i "rknn_server version"

# 查询librknnrt.so库版本
strings /usr/lib/librknnrt.so | grep -i "librknnrt version"

安装/更新 RKNPU2 环境

# rknpu2 目录
Projects/rknn-toolkit2/rknpu2

# 拷贝 rknn_server 到主板目录下
# 注:在64位Linux系统中,BOARD_ARCH对应aarch64目录,在32位系统,对应armhf目录。
Projects/rknn-toolkit2/rknpu2/runtime/Linux/rknn_server/${BOARD_ARCH}/usr/bin/* /usr/bin

# 拷贝 librknnrt.so 到主板目录下
Projects/rknn-toolkit2/rknpu2runtime/Linux/librknn_api/${BOARD_ARCH}/librknnrt.so /usr/lib

# 赋予可执行权限
chmod +x /usr/bin/rknn_server
chmod +x /usr/bin/start_rknn.sh
chmod +x /usr/bin/restart_rknn.sh

# 重启 rknn_server 服务
restart_rknn.sh

rknn_model_zoo 板端编译

编译环境安装

sudo apt install libopencv-dev git cmake make gcc g++ libsndfile1-dev -y

编译

# 进入 rknn_model_zoo 目录
cd rknn_model_zoo

# 运行 build-linux.sh 脚本
# 用法:./build-linux.sh -t <target> -a <arch> -d <build_demo_name> [-b <build_type>] [-m]
# -t : target (rk356x/rk3588) # 平台类型,rk3568/rk3566 都统一为rk356x
# -a : arch (aarch64/armhf) # 板端系统架构
# -d : demo name # 对应 examples 目录下子文件夹的名称,如yolov5、mobilenet
# -b : build_type(Debug/Release)
# -m : enable address sanitizer, build_type need set to Debug
./build-linux.sh -t rk356x -a aarch64 -d yolov5