0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞芯微NPU使用攻略

合众恒跃 ? 2025-05-21 15:50 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

wKgZO2gthbiAH6QuAAKM65Qep9s732.png

验证是否安装成功

执行以下命令,没有报错则代表RKNN-Toolkit2环境安装成功。

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

wKgZPGgthbiAI0goAABmzfqjpb8702.png

安装编译环境

安装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的目录。

wKgZPGgthbiAYvosAABAxtUNMI4199.png

在板端运行可执行文件。

#设置依赖库环境变量
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上查看推理结果。

wKgZPGgthbiAdVP1ACX6ssHqOkc506.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4814

    浏览量

    103841
  • 瑞芯微
    +关注

    关注

    25

    文章

    614

    浏览量

    52518
  • 机器学习
    +关注

    关注

    66

    文章

    8507

    浏览量

    134737
  • NPU
    NPU
    +关注

    关注

    2

    文章

    333

    浏览量

    19807
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    维修培训资料

    维修培训资料
    发表于 02-23 00:00

    RK1808计算棒试用申请】AIoT领域车牌识别Demo

    。刚好RK1808NPU可以实现这个功能,加上手头开发板也是RK3399主控,正好和RK1808NPU计算棒集成起来,正如自己开发的R
    发表于 09-23 15:40

    RK1808计算棒试用申请】AIoT领域车牌识别Demo

    。刚好RK1808NPU可以实现这个功能,加上手头开发板也是RK3399主控,正好和RK1808NPU计算棒集成起来,正如自己开发的R
    发表于 12-28 10:33

    RK3568怎么样?

    RK3568怎么样?
    发表于 03-02 10:04

    基于RV1109的酒店人脸识别应用

    、身份证健康码二维码扫码器等多种外设扩展,可应用于闸机通道和门禁考勤,实现人员的安全、高效的进出控制。它采用RV1109高性能AI处理器,NPU独立算力1.2T,搭载工业级双目摄
    发表于 01-29 14:41

    方案升级工具

    方案升级工具
    发表于 01-05 22:27 ?245次下载

    VR开发平台

    VR开发平台
    发表于 02-17 14:12 ?43次下载

    VR开发资料

    VR开发资料
    发表于 02-17 14:14 ?58次下载

    平板电脑原理图

    平板电脑原理图
    发表于 05-02 08:50 ?31次下载

    首款AI芯片RK3399Pro:NPU性能达2.4TOPs!

    NPU性能达2.4TOPs! 首先在CES 2018年消费电子展前夜,就宣布,向全球正式推出旗下首款性能超强的AI处理器RK3399Pro,其片上
    发表于 01-11 01:53 ?5593次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>首款AI芯片RK3399Pro:<b class='flag-5'>NPU</b>性能达2.4TOPs!

    NPU时代来临,AI芯片与Paddle Lite完成适配

    5月13日,百度飞桨开源深度学习平台与Rockchip旗下AI芯片RK1808、RK1806正式完成适配,充分兼容飞桨轻量化推理引擎Paddle Lite。此次百度与
    的头像 发表于 06-01 17:12 ?5083次阅读

    NPU性能深度评测:RK3588、RK3576、RK3568、RK3562

    随着AI技术不断发展,越来越多的嵌入式设备开始集成NPU(神经网络处理单元),以实现更高效的AI推理。作为国产芯片厂商的佼佼者,推出的RK3588、RK3576、RK3568、R
    的头像 发表于 04-03 11:17 ?2099次阅读
    <b class='flag-5'>NPU</b>性能深度评测:<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>RK3588、RK3576、RK3568、RK3562

    RK3506开发板之Qt应用开发手册(上) 深圳触觉智能出品,嵌入式方案商

    RK3506开发板必备攻略之Qt应用开发手册(上) 基于Ubuntu
    的头像 发表于 04-28 17:16 ?606次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>RK3506开发板之Qt应用开发手册(上) 深圳触觉智能出品,嵌入式方案商

    RK3506开发板Ethercat主站适配开发详细攻略,实测微秒级抖动延迟!

    RK3506开发板Ethercat主站适配开发详细攻略,实测微秒级抖动延迟!
    的头像 发表于 05-09 15:57 ?810次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>RK3506开发板Ethercat主站适配开发详细<b class='flag-5'>攻略</b>,实测微秒级抖动延迟!

    北京迅为itop-3588八核开发板NPU例程测试LPRNet车牌识别

    北京迅为itop-3588八核开发板NPU例程测试LPRNet车牌识别
    的头像 发表于 07-23 14:14 ?312次阅读
    北京迅为itop-3588八核开发板<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>NPU</b>例程测试LPRNet车牌识别