简介
- 此仓库为C++实现,主要改编自rknpu2,Python快速部署可参见rknn-multi-threaded
- 使用线程池异步操作RKNN模型,提高RK3588/RK3588S的NPU利用率,从而提高推理帧率
- YOLOv5s使用ReLU激活函数进行优化,提高推理帧率
更新说明
- 修复了CMake找不到pthread的问题
- 新增nosigmoid分支,使用rknn_model_zoo下的模型以达到极限性能提升
- 将RK3588 NPU SDK更新至官方主线1.5.0,YOLOv5s-SiLU将沿用1.4.0的旧版本模型,YOLOv5s-ReLU更新至1.5.0版本,弃用nosigmoid分支
- 新增v1.5.0分支(向下兼容1.4.0),main分支更新至v1.5.2,修改了项目结构,将RKNN模型线程池封装成类(include/rknnPool.hpp)
使用说明
演示
- 系统需安装OpenCV
- 下载Releases中的测试视频到项目根目录,运行build-linux_RK3588.sh
- 可切换至root用户运行performance.sh定频以提高性能和稳定性
- 编译完成后进入install目录运行命令./rknn_yolov5_demo 模型所在路径 视频所在路径/摄像头序号
部署应用
- 参考include/rkYolov5s.hpp中的rkYolov5s类构建RKNN模型类
多线程模型帧率测试
- 使用performance.sh进行CPU/NPU定频以尽量减少误差
- 测试模型来源:
- YOLOv5s-ReLU
- 测试视频可见于哔哩哔哩
模型\线程数 | 1 | 2 | 3 | 4 | 5 | 6 | 9 | 12 |
---|---|---|---|---|---|---|---|---|
YOLOv5s - ReLU | 41.6044 | 71.6037 | 98.6057 | 98.0068 | 104.6001 | 114.7454 | 129.5693 | 140.8788 |
补充
- 异常处理尚未完善,目前仅支持RK3588/RK3588S下的运行