保姆级教程,看这一篇就够用了。
在翻阅了网络上很多资料后,发现很多版本的信息不匹配。
花了一周的时间配置环境,以及环境验证,然后写了这篇长文。
有过程,有代码,有经验,欢迎大家批评指正。
一、环境准备
【边缘设备】yolov5训练与rknn模型导出并在RK3588部署~1.环境准备(亲测有效)
二、环境验证
【边缘设备】yolov5训练与rknn模型导出并在RK3588部署~2.环境验证(亲测有效)
三、yolov5 训练自己的模型
【边缘设备】yolov5训练与rknn模型导出并在RK3588部署~3.YOLOv5训练自己的模型(亲测有效)
四、导出模型
【边缘设备】yolov5训练与rknn模型导出并在RK3588部署~4.导出模型(亲测有效)
五、部署模型
【边缘设备】yolov5训练与rknn模型导出并在RK3588部署~5.模型部署(亲测有效)
一、环境准备
将宿主机和开发板接入同一个局域网,方便开发。
(一)宿主机
- PC电脑,
x86_64
, 带显卡, 配置不表, 能训练和开发即可。 - 系统:
ubuntu 22.04 LTS
版本(ubuntu 18.04 LTS
以上) - 自带的远程软件:
Remmina
可以建立ssh
连接,也可以建立sftp
连接传输文件。 Anaconda
: 可以配置python
开发的虚拟环境- 需要在宿主机上安装 RKNN-Toolkit2
1. RKNN-Toolkit2
用于在 PC 端将用户训练的模型转换为 RKNN 模型。
RKNN-Toolkit2
是为用户提供在 PC
平台上进行模型转换、推理和性能评估的开发套件,用户通过该工具提供的Python
接口可以便捷地完成以下功能:
- 模型转换:支持
Caffe、TensorFlow、TensorFlowLite、ONNX、DarkNet、PyTorch
等模型转为RKNN
模型,并支持RKNN
模型导入导出,RKNN
模型能够在Rockchip NPU
平台上加载使用。 - 量化功能:支持将浮点模型量化为定点模型,目前支持的量化方法为非对称量化(asymmetric_quantized-8),并支持混合量化功能。
- 模型推理:能够在
PC(Linux x86平台)
上模拟Rockchip NPU
运行RKNN
模型并获取推理结果;或将RKNN
模型分发到指定的NPU
设备上进行推理并获取推理结果。 - 性能和内存评估:将
RKNN
模型分发到指定NPU
设备上运行,以评估模型在实际设备上运行时的性能和内存占用情况。 - 量化精度分析:该功能将给出模型量化前后每一层推理结果与浮点模型推理结果的余弦距离,以便于分析量化误差是如何出现的,为提高量化模型的精度提供思路。
- 模型加密功能:使用指定的加密等级将
RKNN
模型整体加密。因为RKNN
模型的加密是在NPU
驱动中完成的,使用加密模型时,与普通RKNN
模型一样加载即可,NPU
驱动会自动对其进行解密。
目前只支持 Ubuntu 18.04 LTS
以上版本系统。由于 github
https://github.com/rockchip-linux/rknn-toolkit2 下载较慢,可以直接网盘下载:百度网盘-RKNN-Toolkit2 提取码: 8888
(二)开发板
- 整机,用的是
RK3588
整机。(NOTE: 我这里用的是定昌电子提供的整机,其他设备没有尝试) - 系统:
ubuntu 20.04 LTS
版本 - 需要在开发板上安装 RKNPU2
1. RKNPU2
RKNPU2
提供了高级的接口访问 Rockchip
的 NPU
,可以在板端做很多应用。由于 github
https://github.com/rockchip-linux/rknpu2 下载较慢,可以直接网盘下载: 百度网盘-RKNPU2 提取码: 8888
1.4.0
- Support more NPU operators, such as Reshape、Transpose、MatMul、 Max、Min、exGelu、exSoftmax13、Resize etc.
- Add Weight Share function, reduce memory usage.
- Add Weight Compression function, reduce memory and bandwidth usage.(RK3588/RV1103/RV1106)
- RK3588 supports storing weights or feature maps on SRAM, reducing system bandwidth consumption.
- RK3588 adds the function of running a single model on multiple cores at the same time.
- Add new output layout NHWC (C has alignment restrictions) .
- Improve support for non-4D input.
- Add more examples such as rknn_yolov5_android_apk_demo and rknn_internal_mem_reuse_demo.
- Bug fix.
2. RKNN-Toolkit2-Lite
在板端测试运行
- RKNN-Toolkit-Lite2
为 Rockchip NPU
平台(RK3566、RK3568、RK3588、RK3598S
)提供 Python
编程接口,帮助用户部署 RKNN
模型并加速 AI
应用程序的实现。
刷机(非必要不刷机)
非必要不刷机,一般情况下购买的板子已经刷好了系统,可以直接运行,我这里只测试了一个板子,其他板子未确定环境是否符合要求。
刷机工具: 百度网盘-刷机工具 提取码: 8888
刷机系统: 百度网盘-刷机系统 提取码: 8888
刷机过程可以参考(过程类似):
【边缘设备】基于RK3399核心板的nanoPC-T4 线刷桌面版系统
参考(以下为编撰本文的引用参考)
- yolov5训练pt模型并转换为rknn模型,部署在RK3588开发板上——从训练到部署全过程
- RK3588模型推理总结
- NPU使用
- 一步一步教大家使用RK3588的NPU之在电脑端交叉编译yolov5运行在ARM平台上-哔哩哔哩
- 转换yolov5s.onnx为rknn模型RK3588主板实时推理和电脑端模拟推理-哔哩哔哩
- 摆脱电脑,直接在RK3588平台上推理,帮用户部署 RKNN 模加速 AI 应用的落地-哔哩哔哩】
- 仓库下载 参考 rknn-toolkit 教程, 需要切换到 commit ID
c5360f6e7009eb4d05f14d1cc9dae0963e949213
, 可以直接在 官网github下载, 然后终端执行git checkout c5360f6e7
。