RK3588多线程异步提高NPU占用率,实时检测yolov5s目标65fps和120fps

简单说点记录,python要在rk3588安装虚拟环境,
首先我们要知道rk3588环境配置:

Ubuntu 18.04 python3.6/7
Ubuntu 20.04 python3.8/9
Ubuntu 22.04 python3.10/11  

我的板子ubantu22.04 所以装python10,,tensorflow2.8.0要单独先下载,转出1.6.0的模型,转的时候要把代码改成rk3588平台,rk3588板子要升级1.6.0版本哦:

sudo cp /home/orangepi/xushuanglong/rknn-toolkit2-master2/rknpu2/runtime/Linux/librknn_api/aarch64/librknnrt.so /usr/lib/librknnrt.so
sudo cp /home/orangepi/xushuanglong/rknn-toolkit2-master2/rknpu2/runtime/Linux/librknn_api/aarch64/librknn_api.so /usr/lib/librknn_api.so

pc端  linux  rknn-toolkit2;   rk3588板子  aarch  rknn_toolkit_lite2

清华源:-i https://pypi.tuna.tsinghua.edu.cn/simple

yolov5 训练的时候选noautoanchor,改激活函数relu,不然一堆乱框。

####### export.py导出onnx时要改,训练不改

    def forward(self, x):

        z = []  # inference output

        for i in range(self.nl):

            x[i] = self.m[i](x[i])  # conv

        return x

pc上 rknn-toolkit2,onnx导出rknn,要改:

rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rk3588')

到此,rknn3588模型转换然后到python部署没啥问题了。

c++的话,代码里把CMakeLists.txt里的位置填对,bash编译就完事了。把什么1.6.0 的opencv库, 及librknnrt.so等,粘过来。

要提高摄像头实时fps的话,要写多线程异步提高RK3588的NPU占用率,还有提高NPU,CPU定频命令
查看npu使用率:sudo cat /sys/kernel/debug/rknpu/load

然后就是摄像头,要能支持高频的摄像头才行,比如120fps的摄像头,要把opencv默认的yuyv改为mjep

c++:

    // 设置摄像头捕获格式为 MJPG
    capture.set(cv::CAP_PROP_FOURCC, cv::VideoWriter::fourcc('M', 'J', 'P', 'G'));

    // 设置摄像头分辨率
    capture.set(cv::CAP_PROP_FRAME_WIDTH, 640);
    capture.set(cv::CAP_PROP_FRAME_HEIGHT, 480);

    // 设置摄像头帧率
    capture.set(cv::CAP_PROP_FPS, 120);
 

python:

# 定义摄像头捕获分辨率和帧率
WIDTH, HEIGHT, FPS = 1280, 720, 120

# 初始化摄像头
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc(*'MJPG'))
cap.set(cv2.CAP_PROP_FRAME_WIDTH, WIDTH)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, HEIGHT)
cap.set(cv2.CAP_PROP_FPS, FPS)
有问题可联系
最后放结果:
python:

python 摄像头实时检测rk3588 65fps

c++:

rk3588,c++摄像头实时检测120fps

物联沃分享整理
物联沃-IOTWORD物联网 » RK3588多线程异步提高NPU占用率,实时检测yolov5s目标65fps和120fps

发表评论