Toybrick

如何提高算法fps

rlgl

注册会员

积分
101
楼主
发表于 2020-4-23 16:23:09    查看: 6861|回复: 7 | [复制链接]    打印 | 只看该作者
现将姿态检测算法移植到RK3399Pro开发板上,该算法由两个子模块组成:“人体检测模型yolov3”和“单人姿态检测模型”。算法大致原理是先使用yolov3将输入图像中的人体都检测出来,然后将检测出的人体裁剪出来,一个个送进“单人姿态检测模型”检测关节点位置。

原算法运行在pc上,主要通过多线程(两个模型同时在运行)+大batchsize(yolo的batchsize=5,单人姿态检测模型的batchsize=60)提高fps。
我目前的程序未使用任何优化,按上面将的流程,从头到尾进行处理。想问下如果想在不对模型进行量化的情况下,如何通过优化程序,来提高fps。
如:
    1. 能否通过使用多线程,使得两个模型同时在npu上运行,以提高fps;
    2. 如何增大batchsize,使得模型一次推理多张图,以提高fps。


回复

使用道具 举报

jefferyzhang

版主

积分
12952
沙发
发表于 2020-4-23 16:36:08 | 只看该作者

回帖奖励 +10 金钱

1. 意义不大,NPU是分时复用系统,处理一个单位算法复杂度是O,那处理2个就是2O,多线程处理和单线程处理在NPU没有空闲情况下是一样的,除非你NPU出现空闲,那多线程有一定意义。
2. 增大batch意义也不大,同上,分时复用。理论上能提高NPU利用率,但实际上效果跟1个1个送差不多。
回复

使用道具 举报

rlgl

注册会员

积分
101
板凳
 楼主| 发表于 2020-4-23 16:43:46 | 只看该作者
jefferyzhang 发表于 2020-4-23 16:36
1. 意义不大,NPU是分时复用系统,处理一个单位算法复杂度是O,那处理2个就是2O,多线程处理和单线程处理在 ...

那请问想提高fps能有其他的什么思路吗
回复

使用道具 举报

rlgl

注册会员

积分
101
地板
 楼主| 发表于 2020-4-23 16:47:48 | 只看该作者
jefferyzhang 发表于 2020-4-23 16:36
1. 意义不大,NPU是分时复用系统,处理一个单位算法复杂度是O,那处理2个就是2O,多线程处理和单线程处理在 ...

另,百度了下分时复用系统,请问意思是npu在运行一个模型的时候,就已经把npu的所有资源都用上了的意思吗?所以,即使同时跑多个模型,也不会再提高npu的利用率?
抱歉,分时复用理解的不是很清楚...
回复

使用道具 举报

jefferyzhang

版主

积分
12952
5#
发表于 2020-4-23 17:08:21 | 只看该作者
rlgl 发表于 2020-4-23 16:47
另,百度了下分时复用系统,请问意思是npu在运行一个模型的时候,就已经把npu的所有资源都用上了的意思吗 ...

你就当GPU看就好了,GPU也是分时复用。只是我们的MACs运算单元没有多到gpu那个级别,多个batch并行处理并不会用到更多计算单元
回复

使用道具 举报

jefferyzhang

版主

积分
12952
6#
发表于 2020-4-23 17:09:29 | 只看该作者
除非你的模型比如只需要跑30ms,但是你送来运算的间隔是33ms,那这里会空闲3ms NPU不干活。这种情况你多线程就会有意义。
回复

使用道具 举报

rlgl

注册会员

积分
101
7#
 楼主| 发表于 2020-4-24 10:45:43 | 只看该作者
jefferyzhang 发表于 2020-4-23 17:09
除非你的模型比如只需要跑30ms,但是你送来运算的间隔是33ms,那这里会空闲3ms NPU不干活。这种情况你多线 ...

另问个与本题无关的问题:如何将模型运行在与pc相连的RK3399ProD上,文档“Rockchip_User_Guide_RKNN_Toolkit_V1.3.0_CN.pdf”中3.2.2节的写到“确保开发板的USB OTG连接到pc,并且正确连接到设备”,请问这里开发板是通过那个接口与pc相连接。

我的目的是在pc上写程序,然后在RK3399ProD的npu上运行RKNN模型。而不用把代码拷贝到开发板上再运行
回复

使用道具 举报

jefferyzhang

版主

积分
12952
8#
发表于 2020-4-24 14:27:37 | 只看该作者
rlgl 发表于 2020-4-24 10:45
另问个与本题无关的问题:如何将模型运行在与pc相连的RK3399ProD上,文档“Rockchip_User_Guide_RKNN_Too ...

TypeC那个口是OTG, mini-usb扁口那个是串口,大的三个usb都是host
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表