1.2.1 自己尝试的方式
我看连着板子操作比较麻烦,我也没有可以直连的机器,我就尝试直接在板子上跑,没想到也可以,现在将代码分享一下,有需要的可以参考。
【遇到问题1】
运行yolov8_pose_demo.py脚本,出现如下图所示的奇葩结果。
【解决方案1】
最后经别人提示,发现是通道问题,rk的通道顺序是HWC。注释代码中的这句话即可。
#infer_img = np.transpose(infer_img, (2, 0, 1)) # 将 HWC 转为 CHW
【遇到问题2】
from rknn.api import RKNN
报错没有RKNN。
【解决方案2】
在板子上,没有RKNN,应该为RKNNLite,将
from rknn.api import RKNN修改为from rknnlite.api import RKNNLite as RKNN即可。
1.2.2 官方推荐方式
连板调试,文档地址: https://github.com/airockchip/rknn-toolkit2/blob/master/doc/01_Rockchip_RKNPU_Quick_Start_RKNN_SDK_V2.2.0_CN.pdf。
在线阅读可能加载不全,建议下载浏览。
- 更新librknnrt.so库
- 查看librknnrt.so库版本
- 更新服务
- 查看服务版本
【遇到问题1】
执行运行命令https://blog.csdn.net/weixin_/article/details/rknn_yolov8_pose_demo https://blog.csdn.net/weixin_/article/details/yolov8_pose_rk3588.rknn https://blog.csdn.net/weixin_/article/details/1.jpg后,rknn_init函数报错,但是用的就是官方demo文件,我本身没有做修改。
【解决方案1】
查看报错代码,提示传入参数错误。
查文档,发现允许传入rknn模型路径与二进制数据。官方demo中传入的是rknn模型路径,但是传入rknn模型路径会报错,改为传入rknn模型的二进制数据解决。
【遇到问题2】
模型读入正确了,rknn_init函数又报错。
【解决方案2】
查看文档,根据返回值-3,是NPU设备不可用。
刚开始以为是npu驱动问题,通过以下命令查看,发现也没有问题。
dmesg | grep -i rknpu
最后更新了rknn_server版本,librknnrt.so库版本,要与所用的toolkit版本一致rknn-toolkit2.1.0。
strings /usr/bin/rknn_server | grep -i “rknn_server version”
strings /usr/lib/librknnrt.so | grep -i “librknnrt version”
但是发现,还是不行。
最后ldd rknn_yolov8_pose_demo发现,是我链接的库错了!!!
刚开始链接的库为librknn_api.so,最后修改,保证链接的运行时库为librknnrt.so,然后解决。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/81712.html