Page 1 of 1

ubuntu rknn推理

Posted: 2024-06-14 2:21
by simon
我的目的是使rv1106在ubuntu上使用rknn推理,我按照官方的文档操作,在PC端利用rknn-toolkit2下的工具将yolov5s.onnx转成yolov5.rknn模型,然后将模型移动~/rknn_model_zoo/examples/yolov5/model下,回到~/rknn_model_zoo下指定交叉编译工具为arm-linux-gnueabihf,最后执行./build-linux.sh -t rv1106 -a armhf -d yolov5 得到了install文件夹,我在ubuntu系统的板卡上root权限运行,得到下面的报错。
我的疑问是出现这样的原因,rv1106是不支持链接glibc的RKNN推理吗?还是有什么其他问题需要解决呢?

Re: ubuntu rknn推理

Posted: 2024-06-14 2:39
by Eng38
您好,Ubuntu系统目前是不支持RKNN的,请使用Buildroot系统。参考下这个帖子:viewtopic.php?p=2105

Re: ubuntu rknn推理

Posted: 2024-06-14 2:50
by simon
Eng38 wrote: 2024-06-14 2:39 您好,Ubuntu系统目前是不支持RKNN的,请使用Buildroot系统。参考下这个帖子:viewtopic.php?p=2105
您好,我想问一下Ubuntu系统不支持,是因为瑞芯微本身就对这个RV1106不支持glibc还是什么呢?
换一种问法,就是我的目的是想让这个ubuntu至此这个RKNN推理。我使用了指定了交叉编译工具~/gcc/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf,也将rknpu加载上了,/dev/下也有rknpu这个设备。就在运行./rknn_yolov5_demo ./model/yolov5.rknn ./model/bus.jpg时出现了报错。还是说瑞芯微本身就是不支持rv1106的ubuntu下RKNN推理呢?

Re: ubuntu rknn推理

Posted: 2024-06-14 3:21
by Crocodile
simon wrote: 2024-06-14 2:50
Eng38 wrote: 2024-06-14 2:39 您好,Ubuntu系统目前是不支持RKNN的,请使用Buildroot系统。参考下这个帖子:viewtopic.php?p=2105
您好,我想问一下Ubuntu系统不支持,是因为瑞芯微本身就对这个RV1106不支持glibc还是什么呢?
换一种问法,就是我的目的是想让这个ubuntu至此这个RKNN推理。我使用了指定了交叉编译工具~/gcc/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf,也将rknpu加载上了,/dev/下也有rknpu这个设备。就在运行./rknn_yolov5_demo ./model/yolov5.rknn ./model/bus.jpg时出现了报错。还是说瑞芯微本身就是不支持rv1106的ubuntu下RKNN推理呢?
理论上来讲rv1106是具备在ubuntu下运行RKNN的能力的,但是运行RKNN需要依赖RockChip提供的库,挂载了对应设备只是驱动层实现了,在应用层还需要单独的代码与NPU设备交互,Rockchip的库就是实现设备交互用的
目前Rockchip并不打算公布rknn的库源码,也仅提供了uclibc版本的库,在Ubuntu下使用glibc是无法链接成功uclibc的库的。

同时, rknn_yolov5_demo 还使用到了摄像头,这部分和RKNN一样也只有uclibc版本的库,如果要成功运行还需要RKMPI RKISP

Re: ubuntu rknn推理

Posted: 2024-06-14 3:43
by simon
Crocodile wrote: 2024-06-14 3:21
simon wrote: 2024-06-14 2:50
Eng38 wrote: 2024-06-14 2:39 您好,Ubuntu系统目前是不支持RKNN的,请使用Buildroot系统。参考下这个帖子:viewtopic.php?p=2105
您好,我想问一下Ubuntu系统不支持,是因为瑞芯微本身就对这个RV1106不支持glibc还是什么呢?
换一种问法,就是我的目的是想让这个ubuntu至此这个RKNN推理。我使用了指定了交叉编译工具~/gcc/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf,也将rknpu加载上了,/dev/下也有rknpu这个设备。就在运行./rknn_yolov5_demo ./model/yolov5.rknn ./model/bus.jpg时出现了报错。还是说瑞芯微本身就是不支持rv1106的ubuntu下RKNN推理呢?
理论上来讲rv1106是具备在ubuntu下运行RKNN的能力的,但是运行RKNN需要依赖RockChip提供的库,挂载了对应设备只是驱动层实现了,在应用层还需要单独的代码与NPU设备交互,Rockchip的库就是实现设备交互用的
目前Rockchip并不打算公布rknn的库源码,也仅提供了uclibc版本的库,在Ubuntu下使用glibc是无法链接成功uclibc的库的。

同时, rknn_yolov5_demo 还使用到了摄像头,这部分和RKNN一样也只有uclibc版本的库,如果要成功运行还需要RKMPI RKISP
您好,我使用gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf交叉编译器,然后将armhf下的so文件替换了armhf-uclibc下的so文件,最后编译成功了。按照你的意思是即使是这样,rv1106的底层部分还是使用了uclibc版本的库才导致我无法运行成功。我可以这样理解吗?因为对于这个ubuntu执行RKNN推理的问题,我需要一个明确的答案回应上级。

Re: ubuntu rknn推理

Posted: 2024-06-14 6:06
by Crocodile
simon wrote: 2024-06-14 3:43
Crocodile wrote: 2024-06-14 3:21
simon wrote: 2024-06-14 2:50
您好,我想问一下Ubuntu系统不支持,是因为瑞芯微本身就对这个RV1106不支持glibc还是什么呢?
换一种问法,就是我的目的是想让这个ubuntu至此这个RKNN推理。我使用了指定了交叉编译工具~/gcc/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf,也将rknpu加载上了,/dev/下也有rknpu这个设备。就在运行./rknn_yolov5_demo ./model/yolov5.rknn ./model/bus.jpg时出现了报错。还是说瑞芯微本身就是不支持rv1106的ubuntu下RKNN推理呢?
理论上来讲rv1106是具备在ubuntu下运行RKNN的能力的,但是运行RKNN需要依赖RockChip提供的库,挂载了对应设备只是驱动层实现了,在应用层还需要单独的代码与NPU设备交互,Rockchip的库就是实现设备交互用的
目前Rockchip并不打算公布rknn的库源码,也仅提供了uclibc版本的库,在Ubuntu下使用glibc是无法链接成功uclibc的库的。

同时, rknn_yolov5_demo 还使用到了摄像头,这部分和RKNN一样也只有uclibc版本的库,如果要成功运行还需要RKMPI RKISP
您好,我使用gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf交叉编译器,然后将armhf下的so文件替换了armhf-uclibc下的so文件,最后编译成功了。按照你的意思是即使是这样,rv1106的底层部分还是使用了uclibc版本的库才导致我无法运行成功。我可以这样理解吗?因为对于这个ubuntu执行RKNN推理的问题,我需要一个明确的答案回应上级。
根据Rockchip的rknn仓库并没有在rv1106芯片平台上链接armhf下的动态库的例程,我们无法确定这个armhf下的文件能不能适用于rv1106平台,即使编译成功了也无法确定它和NPU硬件是否能够成功交互。我不太理解您“rv1106的底层部分还是使用了uclibc版本的库” 的意思,但可以明确地告诉您目前还没有方案能够以解决在ubuntu下执行RKNN推理。