1 分钟阅读 次阅读

概要:本文介绍了 RK 3566 3568 3588 平台上 NPU(神经网络处理器)的测试方法,包括驱动版本查看、开机日志检查、NPU 使用率获取以及 YOLOv5 demo 的使用指南,并指出常见报错的无害性,指导用户如何验证 NPU 功能完整性。

修改历史

时间 历史
250702 创建了本文
260714 更新“说明”章节

参考链接

  • redmine https://redmine.rpdzkj.cn/issues/21

  • demo下载 https://en.t-firefly.com/doc/download/94.html

  • demo使用说明 https://wiki.t-firefly.com/zh_CN/ROC-RK3568-PC/usage_npu.html

说明

  • 实测只配置内核rknpu_driver,用户空间不配置,也可跑通本demo,因为该demo lib目录下配置了(ldd ./rknn_yolov5_demo即可看到)
    librknnrt.so => lib/librknnrt.so (0x0000007fbc28b000)
    librga.so => lib/librga.so (0x0000007fbc24a000)
    

如果要测试系统下的librknnrt.so和librga.so,将lib目录重命名为lib.bak,再运行本demo即可。

1. 查看驱动版本

使用以下命令查看当前系统的 RKNPU 驱动版本:

sudo cat /sys/kernel/debug/rknpu/version

2. 查看开机日志中 NPU 加载情况

通过以下命令检查内核日志中的 NPU 相关信息(开机后及时使用,开机太久则dmesg消息已经被覆盖了,可能没有任何输出):

dmesg | grep -i RKNPU

示例输出:

[    7.723479] RKNPU fde40000.npu: Adding to iommu group 0
[    7.723864] RKNPU fde40000.npu: RKNPU: rknpu iommu is enabled, using iommu mode
[    7.724091] RKNPU fde40000.npu: can't request region for resource [mem 0xfde40000-0xfde4ffff]
[    7.724399] [drm] Initialized rknpu 0.9.3 20231121 for fde40000.npu on minor 1
[    7.724863] RKNPU fde40000.npu: bin=0
[    7.724909] RKNPU fde40000.npu: leakage=4
[    7.724941] RKNPU fde40000.npu: pvtm = 88530, from nvmem
[    7.724954] RKNPU fde40000.npu: pvtm-volt-sel=2
[    7.724965] RKNPU fde40000.npu: soc version=0, speed=2
[    7.725415] RKNPU fde40000.npu: avs=0
[    7.725554] RKNPU fde40000.npu: l=0 h=2147483647 hyst=5000 l_limit=0 h_limit=0 h_table=0
[    7.726007] RKNPU fde40000.npu: failed to find power_model node
[    7.726016] RKNPU fde40000.npu: RKNPU: failed to initialize power model
[    7.726021] RKNPU fde40000.npu: RKNPU: failed to get dynamic-coefficient

注:以上报错(例如 failed to initialize power model)不会影响 NPU 的正常使用。这是因为软件尝试控制电源失败,但实际上电源已由硬件控制,无需担心。


3. 查看 NPU 使用率

使用以下命令查看当前 NPU 的负载情况:

sudo cat /sys/kernel/debug/rknpu/load

实时监控:

watch -n 0.1 cat /sys/kernel/debug/rknpu/load

4. YOLOv5 Demo 使用指南

4.1 解压与准备

  1. 解压 demo 文件:
7z x rknn_yolov5_demo_Linux.7z

注意:没有7z软件时请使用下面命令安装 接入网络后:

sudo apt update
sudo apt install p7zip-full
  1. 进入 demo 目录:
cd rknn_yolov5_demo_Linux
  1. 赋予执行权限:
chmod 777 rknn_yolov5_demo
  1. 设置动态库路径(可选):
export LD_LIBRARY_PATH=./lib

4.2 运行 Demo

执行以下命令运行 YOLOv5 模型检测:

如果是3566/3568:

./rknn_yolov5_demo model/RK3566_RK3568/yolov5s-640-640.rknn ./model/bus.jpg resize ./out.jpg

如果是3588:

./rknn_yolov5_demo model/RK3588/yolov5s-640-640.rknn ./model/bus.jpg resize ./out.jpg

第二个参数是模型,根据不同的cpu选择不同目录下的模型即可。


4.3 示例输出

post process config: box_conf_threshold = 0.25, nms_threshold = 0.45
Loading mode...
sdk version: 2.3.0 (c949ad889d@2024-11-07T11:35:33) driver version: 0.9.3
model input num: 1, output num: 3
  index=0, name=images, n_dims=4, dims=[1, 640, 640, 3], ...
model is NHWC input fmt
model input height=640, width=640, channel=3
Read ./model/bus.jpg ...
img width = 640, img height = 640
once run use 52.748000 ms
loadLabelName ./model/coco_80_labels_list.txt
person @ (209 243 286 510) 0.879723
person @ (479 238 560 526) 0.870588
person @ (109 238 231 534) 0.839831
bus @ (91 129 555 464) 0.692042
person @ (79 353 121 517) 0.300961
save detect result to ./out.jpg
loop count = 10 , average run  46.630200 ms

4.4 检测结果

  • Demo 成功运行后,会在 demo 根目录下生成 out.jpg,图像上显示检测到的人和车辆等目标。

图片示例:
alt text


留下评论