Coder Social home page Coder Social logo

leafqycc / rknn-cpp-multithreading Goto Github PK

View Code? Open in Web Editor NEW
334.0 334.0 66.0 31.21 MB

A simple demo of yolov5s running on rk3588/3588s using c++ (about 142 frames). / 一个使用c++在rk3588/3588s上运行的yolov5s简单demo(142帧/s)。

License: Apache License 2.0

CMake 2.04% Shell 2.84% C++ 43.29% C 51.83%

rknn-cpp-multithreading's Introduction

Hi👋 I am leafqycc

About me:

  • A boy who loves history and technology
  • studying CS at Sichuan University
  • Want to be a full-stack developer

rknn-cpp-multithreading's People

Contributors

ccdog152 avatar leafqycc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

rknn-cpp-multithreading's Issues

代码问题

老哥 为啥我开了多线程npu使用率变高了

找不到RGA

我想请问一下,为什么找不到RGA呢,

0C6FEA18A01B7A3CE781053BA710F625

读取视频需要硬解码吗?

我使用这个源码,编译运行后,速度只有3帧。耗时都在读取视频上。
不需要硬件解码器吗?

我用的是rk3588s

你好,想咨询一下推理结果的shape

想请问一下,我的模型在rknn.inference之后输出的是(1,25200,85)Concat之后的ndarray,有什么参数设置可以输出三个维度的推理结果方便后续可以直接使用您的后处理代码吗?

你好,我现在有一些关于帧率的问题需要向您请教

如题,我在您的代码上修改了部分初始化的内容,目前使用 yolov8 和 yolov5 模型分别进行推理,二者帧率都在 70 帧左右, npu 的占用率最高只能达到 40%,请问有什么办法能够提高 npu 占用率,或者说能否提供下您所使用的固件,我尽可能在相同的环境进行试验

跑视频卡死

您好,请问我用您的程序跑检测视频,为什么会跑几秒就卡死呢?希望您能够给出可能的问题。

关于yolov8

您好!这个可以用yolov8实现吗,没有开发文档不知道yolov8-rknn该如何部署,求大佬解惑谢谢!

多阶段问题

你好,如何初始化两个模型 在线程池种完成推理,比如先检测 再姿态或ocr

请问bash build-linux-RK3588.sh没有运行成功,出现行 26: 6055 段错误 ,是为什么勒?

/home/linaro/rknn-toolkit2-master/rknn_toolkit_lite2/examples/inference_with_lite/rknn-cpp-Multithreading-main
模型名称: ./model/RK3588/yolov5s-640-640_rm_transpose_rk3588.rknn
线程数: 1
Loading mode...
model is NHWC input fmt
rga_api version 1.9.1_[4]
loadLabelName ./model/coco_80_labels_list.txt
build-linux_RK3588.sh:行 26: 6055 段错误 ./rknn_yolov5_demo ./model/RK3588/yolov5s-640-640_rm_transpose_rk3588.rknn ../../1.mp4

性能上不去

我从你的github上拿下来的代码,跑下来怎么只有40多帧呢?请问哪里设置不对?
Loading model...
sdk version: 1.5.2 (c6b7b351a@2023-08-23T15:28:22) driver version: 0.8.8
model input num: 1, output num: 3
model is NHWC input fmt
model input height=640, width=640, channel=3
Loading model...
sdk version: 1.5.2 (c6b7b351a@2023-08-23T15:28:22) driver version: 0.8.8
model input num: 1, output num: 3
model is NHWC input fmt
model input height=640, width=640, channel=3
Loading model...
sdk version: 1.5.2 (c6b7b351a@2023-08-23T15:28:22) driver version: 0.8.8
model input num: 1, output num: 3
model is NHWC input fmt
model input height=640, width=640, channel=3
rga_api version 1.9.1_【4】
loadLabelName ./model/coco_80_labels_list.txt
120帧内平均帧率: 45.924225 fps/s
120帧内平均帧率: 46.189376 fps/s
120帧内平均帧率: 46.296296 fps/s

我已经调用performance.sh脚本设置了cpu和npu最高性能模式

Segmentation Fault When Loading Custom RKNN

When running ./build-linux_RK3588 on an Orange Pi 5 running Ubuntu 22.04, I get a segmentation fault on line 26 (the line that runs rknn_yolov5_demo. This is a model converted from onnx using rknn-toolkit-2 if that helps. Any tips to get this working? Regular model provided works fine w/o segmentation faults.
2023.zip

Seems like it has the segfault on line 52 of rknnPool.hpp

您好,有关于RGA的问题向您请教

我在编译成功您的代码之后,运行时终端出现如下信息,但仍然能成功运行,请问您是否遇到过类似的问题,具体信息如下:
This output the user patamaters when rga call blit fail
RgaBlit(1483) RGA_BLIT fail: Invalid argument
RgaBlit(1484) RGA_BLIT fail: Invalid argument
handl-fd-vir-phy-hnd-format[0, 88, (nil), (nil), 0, 0]
rect[0, 0, 1280, 720, 1280, 720, 2560, 0]
f-blend-size-rotation-col-log-mmu[0, 0, 0, 0, 0, 0, 1]
handl-fd-vir-phy-hnd-format[0, 0, 0x7f83217010, (nil), 0, 0]
rect[0, 0, 1280, 720, 1280, 768, 2816, 0]
f-blend-size-rotation-col-log-mmu[0, 0, 0, 0, 0, 0, 1]

在博主的项目中,博主的rknn模型推理没问题,我的模型会报错,求博主帮忙看下(附带了log信息)

大佬,太谢谢您了,我刚刚试了下您的项目,用您项目中自带的rknn模型效果都非常不错,我有个问题想要请教您,在您的项目中我将我自己的rknn模型加到model/RK3588/后进行编译,然后再执行视频推理,结果却报错了,您能帮我看看问题在哪里吗,这个问题我在官方demo工程中也遇到了,用官方rknn模型是没问题的,但是换成我的模型就有问题,下面是报错的具体信息:
fault_log.txt

推理问题

想问下我换上自己的yolov5模型输出却是这样的,框框乱飞是要怎么处理呢20240118_175231.jpg

20240118_175208.jpg

firefly rk3588 占用低,帧率低

RK3588平台,帧率像一条线锁死在5fps
cpu平均占用在10%,NPU平均占用在3%(定频了)
sdk 1.6.0 driver 0.8.8 opencv 4.9.0 摄像头是海康的一款1080p 30fps的
项目无大改,为了测试修改了修改了线程数,同时还加了capture.set来改变帧率

大致情况是这样,摄像头接入后使用v4l2查看摄像头参数 stream parameters videos capture 就变为30fps 但是启动程序后再查看就变为5fps 然后使用capture.set提高到30fps 再跑程序仍然是5fps,不知道是哪里设置出现了问题。
这个摄像头之前跑python api时是正常的,在c api出现了问题

线程数变多后,检测开始头几帧没有检测框

在使用ffmedia作为解码后,容易出现检测开始的头几帧没有检测框,同时过程中不时出现检测框不完整,检测框有横向的缝隙。目前不知道是什么原因,中间的某一帧出现没有检测情况不好复现。有时候同一帧会重复出现一次
opencv是apt-get的4.2.0 ,作者有没有遇到过这种情况

加速的原理

大佬可以解释一下线程池加速推理的原理吗?这个方法对所有模型都适用吗?如果一个现有transformer模型单帧推理需要400ms,使用线程池对加速会有帮助吗?感谢!

推理时NPU占用率极低

我用下载好的直接推理视频NPU占用率为3% 35 3% 修改线程池数量为6 为12后依旧不变,推理摄像头是占用率两个NPU1%一个0%

Error in GStreamer Pipeline Syntax with OpenCV in rknn-cpp-Multithreading Project

When attempting to run the build-linux_RK3588.sh script in the rknn-cpp-Multithreading project, the following error occurs:

orangepi@orangepi5b:~/Downloads/rknn-cpp-Multithreading-main$ sh build-linux_RK3588.sh
CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/orangepi/Downloads/rknn-cpp-Multithreading-main/build/build_linux_aarch64
[100%] Built target rknn_yolov5_demo
[100%] Built target rknn_yolov5_demo
Install the project...
-- Install configuration: ""
-- Up-to-date: /home/orangepi/Downloads/rknn-cpp-Multithreading-main/install/rknn_yolov5_demo_Linux/./rknn_yolov5_demo
-- Up-to-date: /home/orangepi/Downloads/rknn-cpp-Multithreading-main/install/rknn_yolov5_demo_Linux/lib/librknnrt.so
-- Up-to-date: /home/orangepi/Downloads/rknn-cpp-Multithreading-main/install/rknn_yolov5_demo_Linux/lib/librga.so
-- Up-to-date: /home/orangepi/Downloads/rknn-cpp-Multithreading-main/install/rknn_yolov5_demo_Linux/.//model
-- Up-to-date: /home/orangepi/Downloads/rknn-cpp-Multithreading-main/install/rknn_yolov5_demo_Linux/.//model/RK3588
-- Up-to-date: /home/orangepi/Downloads/rknn-cpp-Multithreading-main/install/rknn_yolov5_demo_Linux/.//model/RK3588/yolov5s-640-640.rknn
-- Up-to-date: /home/orangepi/Downloads/rknn-cpp-Multithreading-main/install/rknn_yolov5_demo_Linux/.//model/coco_80_labels_list.txt
/home/orangepi/Downloads/rknn-cpp-Multithreading-main
Loading model...
sdk version: 1.5.2 (c6b7b351a@2023-08-23T15:28:22) driver version: 0.9.3
model input num: 1, output num: 3
model is NHWC input fmt
model input height=640, width=640, channel=3
Loading model...
sdk version: 1.5.2 (c6b7b351a@2023-08-23T15:28:22) driver version: 0.9.3
model input num: 1, output num: 3
model is NHWC input fmt
model input height=640, width=640, channel=3
Loading model...
sdk version: 1.5.2 (c6b7b351a@2023-08-23T15:28:22) driver version: 0.9.3
model input num: 1, output num: 3
model is NHWC input fmt
model input height=640, width=640, channel=3

(Camera FPS:21441): GStreamer-CRITICAL **: 17:21:51.985: gst_element_make_from_uri: assertion 'gst_uri_is_valid (uri)' failed
[ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (713) open OpenCV | GStreamer warning: Error opening bin: syntax error
[ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (480) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
Average:         nan fps/s

rk3568问题

如果要将这个代码部署在rk3568上,需要做哪些修改呢 谢谢!

你好请问这是为什么

Loading model...
sdk version: 1.6.0 (9a7b5d24c@2023-12-13T17:31:11) driver version: 0.8.8
model input num: 1, output num: 3
model is NHWC input fmt
model input height=640, width=640, channel=3
Loading model...
sdk version: 1.6.0 (9a7b5d24c@2023-12-13T17:31:11) driver version: 0.8.8
model input num: 1, output num: 3
model is NHWC input fmt
model input height=640, width=640, channel=3
Loading model...
sdk version: 1.6.0 (9a7b5d24c@2023-12-13T17:31:11) driver version: 0.8.8
model input num: 1, output num: 3
model is NHWC input fmt
model input height=640, width=640, channel=3
[ WARN:0] global ./modules/videoio/src/cap_gstreamer.cpp (1100) open OpenCV | GStreamer warning: Cannot query video position: status=0, value>
rga_api version 1.9.3_[2]
loadLabelName ./model/coco_80_labels_list.txt
Segmentation fault (core dumped)

摄像头帧率上不去

您好,我用这个项目视频测试确实可以达到90fps,三个npu也占用超过80%,但是我把视频换成读取摄像头帧率就下降到25fps,npu,cpu占用率都上不去,好奇怪,找不出哪里有问题,其他地方都没有改,请问您读取摄像头测试有结果吗?帧率上的去吗?

Write API to stream RTSP

Im writing an API for show my camera stream after detection. Anyone have the idea for this?. Im done with this, but my client show 1 fps in view on browser

c++版本运行我改过模型的yolov7无法运行,python版本可以

Loading model...
sdk version: 1.5.2 (c6b7b351a@2023-08-23T15:28:22) driver version: 0.8.2
model input num: 1, output num: 3
model is NHWC input fmt
model input height=640, width=640, channel=3
rga_api version 1.9.1_[4]
loadLabelName ./model/coco_80_labels_list.txt
Segmentation fault (core dumped)

报错如上所述,同样的rknn模型文件,Python版本可以运行,c++加报错,请问作者有什么头绪吗,困扰我半个月了,感谢

rknnPool.hpp那里是不是缺个锁?

int rknnPool<rknnModel, inputType, outputType>::put(inputType inputData)
函数里面
push之前,是不是需要std::lock_guardstd::mutex lock(queueMtx);?
我是遇到了多线程会偶然崩溃的问题,然后加了之后运行就稳定了。

跑不满

firefly@firefly:~$ sudo cat /sys/kernel/debug/rknpu/load
NPU load: Core0: 11%, Core1: 12%, Core2: 13%,

root@firefly:/home/firefly/rknn-cpp-Multithreading# bash performance.sh
CPU0-3 可用频率:
408000 600000 816000 1008000 1200000 1416000 1608000 1800000
CPU0-3 当前频率:
1800000
CPU4-5 可用频率:
408000 600000 816000 1008000 1200000 1416000 1608000 1800000 2016000 2208000 2304000
CPU4-5 当前频率:
2304000
CPU6-7 可用频率:
408000 600000 816000 1008000 1200000 1416000 1608000 1800000 2016000 2208000 2304000
CPU6-7 当前频率:
2304000
NPU 可用频率:
300000000 400000000 500000000 600000000 700000000 800000000 900000000 1000000000
NPU 当前频率:
1000000000

然后跑样例还是 19fps....

推理自己的rknn模型时npu占用率很低

大佬您好,我用您的代码推理我的模型,推理的时候查看npu的占用率仅有百分之一,尝试定频,却没有改进,这是什么问题呢?用官方模型yolov5-640-640.rknn的话帧率可以达到30帧,三个npu的占用率都是17%左右。

提示无效的rknn模型——E RKNN: [08:56:48.563] Invalid RKNN model version 6

大佬你好,我在将我自己的模型(用airockchip/yolov5训练出来,然后用1.5.2版本的rknn-toolkit2进行了onnx到rknn的转换)在您的多线程项目里面编译后运行出现了这个错误:
模型名称: ./model/RK3588/best1117.rknn
线程数: 6
Loading mode...
E RKNN: [08:56:48.562] 6, 4
E RKNN: [08:56:48.563] Invalid RKNN model version 6
E RKNN: [08:56:48.563] rknn_init, load model failed!
rknn_init error ret=-6
我的是rk3588,板子上的rknn-server版本是1.5.2,非常期待您的回复!

关于摄像头

使用的是MIPI摄像头 求助如何使用,谢谢大佬

RK3588 无法复现最高FPS130+,实际不到83FPS

修改的部分请看:https://github.com/1qingfeng-1/rknn-cpp-Multithreading.git

./rknn_yolov5_demo model/RK3588/yolov5s-640-640.rknn output.mp4

output.mp4 是640*640 60帧的视频

各个步骤耗时 测试结果:
pre_process: 491 us
infer: 19065 us
post_process: 403 us
get show: 13960 us
pre_process: 183 us
infer: 19784 us
post_process: 366 us
get show: 11874 us
pre_process: 298 us
infer: 18670 us
post_process: 415 us
get show: 11531 us
pre_process: 475 us
infer: 19163 us
post_process: 369 us
get show: 12630 us
pre_process: 222 us
infer: 19813 us
post_process: 377 us
get show: 13391 us

可以看到 前处理 不到1ms,推理不到20ms,后处理不到1ms, get show 是13ms(平均)
采用多线程加速,实际帧率是看get show,也就是平均13ms一帧, fps 76帧

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.