modify(yolov5s): 增加了多线程相关内容,作为参考经验
parent
e486c07655
commit
46d143fae6
|
@ -44,46 +44,46 @@ python export.py --weights best.pt --include onnx
|
|||
|
||||
2. 直接配置(我所采用的)
|
||||
|
||||
2.1 下载conda环境(有的话跳过)
|
||||
2.1 下载conda环境(有的话跳过)
|
||||
|
||||
```
|
||||
wget -c https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
|
||||
```
|
||||
wget -c https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
|
||||
|
||||
chmod 777 Miniconda3-latest-Linux-x86_64.sh
|
||||
chmod 777 Miniconda3-latest-Linux-x86_64.sh
|
||||
|
||||
sh Miniconda3-latest-Linux-x86_64.sh
|
||||
```
|
||||
sh Miniconda3-latest-Linux-x86_64.sh
|
||||
```
|
||||
|
||||
结束后重启命令行或执行`source ~/.bashrc`。
|
||||
结束后重启命令行或执行`source ~/.bashrc`。
|
||||
|
||||
2.2 创建名为rknntool的python3.8环境,并进入:
|
||||
2.2 创建名为rknntool的python3.8环境,并进入:
|
||||
|
||||
```
|
||||
conda create -n rknntool python=3.8
|
||||
conda activate rknntool
|
||||
```
|
||||
```
|
||||
conda create -n rknntool python=3.8
|
||||
conda activate rknntool
|
||||
```
|
||||
|
||||
2.3 进入./doc目录
|
||||
2.3 进入./doc目录
|
||||
|
||||
```
|
||||
pip install -r requirements_cp38-1.5.0.txt
|
||||
```
|
||||
```
|
||||
pip install -r requirements_cp38-1.5.0.txt
|
||||
```
|
||||
|
||||
2.3进入./ packages目录
|
||||
2.3进入./ packages目录
|
||||
|
||||
```
|
||||
pip install rknn_toolkit2-1.5.0+1fa95b5c-cp38-cp38-linux_x86_64.whl
|
||||
```
|
||||
```
|
||||
pip install rknn_toolkit2-1.5.0+1fa95b5c-cp38-cp38-linux_x86_64.whl
|
||||
```
|
||||
|
||||
终端中运行python,输入`from rknn.api import RKNN`,不报错即成功。
|
||||
终端中运行python,输入`from rknn.api import RKNN`,不报错即成功。
|
||||
|
||||
进入`./examples/onnx/yolov5`,将上文得到的best.onnx文件和待预测图片(也可以没有)复制到此文件夹中,修改test.py文件。
|
||||
进入`./examples/onnx/yolov5`,将上文得到的best.onnx文件和待预测图片(也可以没有)复制到此文件夹中,修改test.py文件。
|
||||
|
||||
![image-20240930143123913](./imgs/yolov5s/image-20240930143123913.png)
|
||||
![image-20240930143123913](./imgs/yolov5s/image-20240930143123913.png)
|
||||
|
||||
![image-20240930143129692](./imgs/yolov5s/image-20240930143129692.png)
|
||||
![image-20240930143129692](./imgs/yolov5s/image-20240930143129692.png)
|
||||
|
||||
修改完后执行`python test.py`,这里的test.py构建了一个虚拟的NPU运行环境,模拟在RK3588上真实运行的情况。这时在当前文件夹`./example/onnx/yolov5`中可以看到生成的`best.rknn`模型和结果图片result.jpg。
|
||||
修改完后执行`python test.py`,这里的test.py构建了一个虚拟的NPU运行环境,模拟在RK3588上真实运行的情况。这时在当前文件夹`./example/onnx/yolov5`中可以看到生成的`best.rknn`模型和结果图片result.jpg。
|
||||
|
||||
## 4 RK3588 上部署 best.rknn
|
||||
|
||||
|
@ -103,4 +103,21 @@ git clone https://github.com/rockchip-linux/rknpu2
|
|||
|
||||
也可以支持h264、h265、rtsp视频流。例如h264视频流,指令:
|
||||
|
||||
`./rknn_yolov5_video_demo model/RK3588/best.rknn model/test.h264 264`
|
||||
`./rknn_yolov5_video_demo model/RK3588/best.rknn model/test.h264 264`
|
||||
|
||||
|
||||
## 5 多线程优化(未成功)
|
||||
执行`cat /sys/kernel/debug/rknpu/load`查看npu的使用情况,可以发现虽然有多个npu,但是没有全部用上
|
||||
>使用`while true ; do cat /sys/kernel/debug/rknpu/load ; sleep 1 ; done;`可以持续监控npu使用情况
|
||||
|
||||
![alt text](./imgs/yolov5s/image.png)
|
||||
以前尝试过实现多线程,但没成功。推测是编解码相关的问题。同目录PPT中有详细介绍。
|
||||
### 5.1 找代码解决
|
||||
参考这个仓库 https://github.com/leafqycc/rknn-cpp-Multithreading,通过自己实现多线程把帧率拉到140+。
|
||||
但是当时拉下代码尝试,确实是能使用多核了,但是利用率极低,推测是编解码相关的问题,当时设备环境好像不支持硬件解码,多多多次配置ffmpeg后也没有成功。
|
||||
### 5.2 使官方代码支持多线程
|
||||
官方代码,支持mpp硬件解码,但暂未实现多线程。
|
||||
推测在其基础上自己手动实现多线程即可,但是该源代码风险大也困难,未尝试
|
||||
|
||||
### 5.3 使找的代码支持mpp
|
||||
既然 5.1 中不支持硬件解码,而官方代码是支持的,且设备本就有官方的环境,那可以尝试在 5.1 代码中调用mpp相关接口去实现硬件编解码。感觉比较难,未尝试
|
Loading…
Reference in New Issue