RKNPU 概述
RKNPU(Rockchip Neural Processing Unit)是瑞芯微(Rockchip)公司专为神经网络处理设计的硬件加速单元,旨在提升人工智能和机器学习任务的效率。以下是其核心要点:
定义与功能
硬件加速单元:RKNPU是集成在瑞芯微芯片中的专用NPU,专注于加速深度学习算法,如图像识别、目标检测、语音处理等,同时优化功耗与性能平衡。
支持多平台:适配瑞芯微多款芯片,包括RK3566、RK3568、RK3588等,覆盖从嵌入式设备到高性能边缘计算场景。
架构与软件栈
分层架构:
硬件层:物理NPU硬件,提供算力支持。
驱动层:负责硬件初始化、数据传输和任务调度,连接上层应用与硬件258。
应用层:通过C或Python API(如RKNN API)实现模型部署,支持动态形状和多种操作符,开发者可灵活调用58。
开源工具链:提供驱动、运行时库(如librknn_runtime)及模型转换工具(如RKNN-Toolkit2),支持TensorFlow、PyTorch等框架模型的转换与优化。
核心技术与工具
RKNN模型:瑞芯微专有的模型格式,通过量化、融合等技术优化模型,提升在NPU上的推理效率。支持加密功能,确保模型安全性。
开发工具:
RKNN-Toolkit2:用于PC端模型转换、量化和性能评估,支持跨平台模型迁移。
RKNPU2 SDK:提供C/C++接口,适用于高性能嵌入式部署。
应用场景
智能物联网(IoT):如智能摄像头、工业传感器,实现本地实时数据处理,减少云端依赖。
边缘计算:支持高并发任务(如视频分析、语音识别),适用于低带宽或离线环境。
消费电子:应用于智能电视、家居设备,提升人脸识别、图像处理等功能的响应速度。
优势与特点
高效能低功耗:通过硬件加速和驱动优化,显著降低AI任务的能耗,适合资源受限的嵌入式设备。
多框架兼容性:支持主流深度学习框架的模型转换,降低开发门槛。
社区与生态:开源驱动和详尽的文档支持,开发者可快速上手并参与社区迭代。
开发环境搭建
Ubuntu:用于模型转换和编译示例程序。
Miniforge Conda :Python环境和包管理工具。
RKNN-Toolkit2:模型适配与优化的核心工具。
rknn_model_zoo:提供示例代码。
源码下载
按照如下两个链接将rknn-toolkit2和rknn_model_zoo下载到本地Ubuntu系统下。
RKNPU2 SDK (for RK3576/RK3562/RK3566/RK3568/RK3588/RV1103/RV1106)
https://github.com/airockchip/rknn-toolkit2
Model zoo:
https://github.com/airockchip/rknn_model_zoo
安装RKNN-Toolkit2环境
[!NOTE]
请确保源码下载章节中RKNPU2 SDK下载成功,安装RKNN-Toolkit2会使用到此工具包。
安装Python
如果系统中没有安装 Python 3.8(建议版本),或者同时有多个版本的 Python 环境,建议使用Miniforge Conda 创建新的 Python 3.8 环境。
安装Miniforge Conda
Miniforge Conda是一个Python环境和包管理工具,它提供了一个轻量级、高效的Conda发行版,适合那些希望避免Anaconda大型包集合或者对系统资源有限制的用户。通过使用Miniforge,用户可以享受到Conda的便利,同时不必担心额外的负担。
在终端窗口执行以下命令,检查当前系统是否安装Miniforge Conda,若已安装则省略此节步骤。
在终端窗口执行以下命令,检查当前系统是否安装Miniforge Conda,若已安装则省略此节步骤。
conda-V
#如果输出类似conda 24.9.2,表示当前系统已安装Miniforge conda,且版本为24.9.2
#如果输出conda: command not found,表示当前系统未安装Miniforge conda
如果没有安装Miniforge Conda,可以通过下面的链接下载Miniforge Conda安装包。
[!TIP]
如果当前Ubuntu终端访问不到该github链接,也可浏览器访问https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh下载该安装脚本并拷贝到Ubuntu环境目录下进行安装。
wget-chttps://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
通过以下命令安装Miniforge Conda。
chmod 777 Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh
使用Miniforge Conda创建Python环境
在计算机的终端窗口中执行以下命令进入Conda base环境。
source~/miniforge3/bin/activate#Miniforge安装目录
#成功后,命令行提示符会变成以下形式:
#(base)xxx@xxx:~$
通过以下命令创建名称为toolkit2的Python3.8环境。
conda create-ntoolkit2python=3.8
激活toolkit2环境,后续将在此环境中安装RKNN-Toolkit2:
[!NOTE]
当终端重启后要重新激活toolkit2环境
conda activate toolkit2
#成功后,命令行提示符会变成以下形式
#(toolkit2)xxx@xxx:~$
安装RKNN-Toolkit2
激活RKNN-Toolkit2环境成功后,可通过pip源或者本地wheel包这两种方式安装RKNN-Toolkit2(建议使用本地wheel包安装):
pip源安装
#通过以下命令安装
pip install rknn-toolkit2-ihttps://pypi.org/simple
?
#如果已安装 RKNN-Toolkit2, 可通过以下命令升级 RKNN-Toolkit2
pip install rknn-toolkit2-ihttps://pypi.org/simple--upgrade
本地wheel包安装
#进入rknn-toolkit2目录,以下操作均在rknn-toolkit2根目录下进行
cdrknn-toolkit2-master/rknn-toolkit2/
?
#请根据不通的python版本以及处理器架构选择不同的requirements文件,cp38为python版本号为3.8,请根据实际conda安装Python环境时的版本和处理器架构进行安装,2.3.2为当前rknn-toolkit2的版本
pip install-rpackages/x86_64/requirements_cp38-2.3.2.txt
?
#安装RKNN-Toolkit2,cp38为python版本号为3.8,请根据实际conda安装Python环境时的版本和处理器架构选择对应的wheel安装包进行安装,2.3.2为当前rknn-toolkit2的版本
pip install packages/x86_64/rknn_toolkit2-2.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

验证是否安装成功
执行以下命令,没有报错则代表RKNN-Toolkit2环境安装成功。
#进入Python交互模式
python
?
#导入RKNN类
from rknn.api import RKNN

安装编译环境
安装cmake
在计算机终端中执行以下命令。
#更新包列表
sudoapt-get update
?
#安装cmake
sudoapt-get install cmake
安装Linux GCC交叉编译器
因为不同的Linux文件系统对应的编译工具链版本不一致,请根据实际系统选择对应的交叉编译器,并下载到本地。
Buildroot:https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz?rev=cf8baa0ef2e54e9286f0409cdda4f66c&hash=E813B503D52B4EF0CBEBEE36300B05049EB6B41F
Ubuntu22.04:https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz?rev=8d05006a68d24d929d602804ec9abfb4&hash=E8A66D3B9FF0EFC60A5C041AC3C5EE476349817B
编译示例程序
RKNN Model Zoo 提供了示例代码,example目录下包括了一些常用的模式示例,例如MobileNet 和 YOLO等。每个模型示例提供了Python和C/C++两个版本的示例代码。以下我们以在RK3588的buildroot系统上部署C/C++的YOLOV8模型示例。
[!NOTE]
请确保源码下载章节中Model Zoo下载成功,以下的示例程序均采用其中的示例代码。
准备模型
#进入rknn_model_zoo-main/examples/yolov8/model目录
cdrknn_model_zoo-main/examples/yolov8/model
?
# 运行 download_model.sh 脚本,下载 yolov8 onnx 模型
# 例如,下载好的 onnx 模型存放路径为 model/yolov8n.onnx
chmod777download_model.sh
./download_model.sh
模型转换
进入rknn_model_zoo-main/examples/yolov8/python目录,运行convert.py 脚本,该脚本将原始的 ONNX 模型转成RKNN 模型。
#进入rknn_model_zoo-main/examples/yolov8/python目录
cdrknn_model_zoo-main/examples/yolov8/python
?
# 运行 convert.py 脚本,将原始的 ONNX 模型转成 RKNN 模型
# 用法: python convert.py model_path [rk3568|rk3588|rk3562|rk3576] [i8/fp] [output_path]
python convert.py ../model/yolov8n.onnx rk3588 i8 ../model/yolov8n.rknn
[!NOTE]
本示例以RK3588为例,如果使用其他型号的CPU平台,请在模型转换时根据实际情况更改转换命令中的CPU平台指定。
编译RKNN C/C++ Demo
指定编译器的路径 GCC_COMPILER 为本地的 GCC 编译器路径(编译工具链请参考安装编译环境中安装Linux GCC交叉编译器章节)。即在build-linux.sh脚本中添加GCC_COMPILER属性。
# 添加到 build-linux.sh 脚本的开头位置即可
GCC_COMPILER=/home/hzhy/RKNN_Project/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu
在rknn_model_zoo目录下运行build-linux.sh脚本。
#添加运行权限
chmod777build-linux.sh
?
# 运行 build-linux.sh 脚本
# 用法:./build-linux.sh -t -a -d [-b ] [-m]
# -t : target ((rk356x/rk3588/rk3576/rv1126b/rv1106/rk1808/rv1126)) # 平台类型
# -a : arch (aarch64/armhf) # 板端系统架构
# -d : demo name # 对应 examples 目录下子文件夹的名称, 如yolov8、 mobilenet
# -b : build_type(Debug/Release)
# -m : enable address sanitizer, build_type need set to Debug
./build-linux.sh-trk3588-aaarch64-dyolov8
编译完成后会在rknn_model_zoo_main目录下生成install/rk3588_linux_aarch64/rknn_yolov8_demo/文件夹(根据对应的example生成对应的demo文件夹),将该文件夹通过scp或者其他方式拷贝到板卡中。
[!NOTE]
本示例以RK3588为例,如果使用其他型号的CPU平台,请在Demo编译时根据实际情况更改转换命令中的CPU平台指定。
板端运行Demo
通过串口、ssh、adb其中一种方式登录到板卡终端。并进入存放C/C++ Demo的目录。

在板端运行可执行文件。
#设置依赖库环境变量
exportLD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
?
#运行可执行文件
#用法 ./rknn_yolov8_demo model_path为模型文件路径 image_path为待推理图片路径
./rknn_yolov8_demo ./model/yolov8n.rknn ./model/bus.jpg
查看编译结果
板端运行Demo推理完毕后会在当前目录下生成推理后的图片out.png,可以将out.png拷贝到PC上查看推理结果。

-
神经网络
+关注
关注
42文章
4814浏览量
103841 -
瑞芯微
+关注
关注
25文章
614浏览量
52518 -
机器学习
+关注
关注
66文章
8507浏览量
134737 -
NPU
+关注
关注
2文章
333浏览量
19807
发布评论请先 登录
【瑞芯微RK1808计算棒试用申请】AIoT领域车牌识别Demo
【瑞芯微RK1808计算棒试用申请】AIoT领域车牌识别Demo
基于瑞芯微RV1109的酒店人脸识别应用
瑞芯微首款AI芯片RK3399Pro:NPU性能达2.4TOPs!

NPU时代来临,瑞芯微AI芯片与Paddle Lite完成适配
NPU性能深度评测:瑞芯微RK3588、RK3576、RK3568、RK3562

评论