quickrun 是一款rk3588 rknn多模型高效高并发部署软件
软件框架
采用session思想,可以定义多个session满足不同模型的义务需求。比如充电桩检测,垃圾分类,悬崖检测,模型共用一个摄像头,采用yolov5的模型。
- 采用消息队列存放照片数据是为了防止丢帧以及高效并发,一般情况下,采集照片数据25fps,前后处理+推理时间=40ms,25fps,所以基本取消息和存消息时间相等。
- 由于是模型是640*640 输入,摄像头是640 * 480输入,解码用cv::imdecode, rgb 格式输入模型,使用rga加速等比例缩放。
- 由于三个模型设置三个session的独立线程,之间相互独立,互不干扰。
模型输出
rk3588 yolov5模型输出注意转换为onnx的时候在forward 层去掉cat的操作,直接输出2020,4040,80*80三个特征图
性能
一个模型占用npu:1.2T,cpu:40%(前处理,推理,后处理画框), 推理时间20ms。使用perf top -p 查看cpu使用率,并且可以精确到具体某一个函数的cpu使用率
源码地址 https://github.com/dreamflyforever/quickrun