Toybrick

RK1808前向推理时间不一致的问题

yupanpan

注册会员

积分
80
楼主
发表于 2019-10-22 16:54:48    查看: 11616|回复: 9 | [复制链接]    打印 | 只看该作者
对tensorflow的ssd_mobilenet_v2模型使用两种方法测试rk1808的性能:


方法一:按照教程里对tensorflow的ssd_mobilenet_v2模型的步骤:
a. python step1.py
b. modify ssd_mobilenet_v2.quantization.cfg
c. python step2.py
d. python step3.py

方法二:直接在一个demo里进行模型加载,模型量化,模型转换和模型测试(就像例子中的mobilenet_v2,mobilenet_v1,只使用了一个test.py)

这两种方法得到的eval_perf_fps的结果不一样,而且差别挺大的,是为什么呢?


回复

使用道具 举报

jefferyzhang

版主

积分
13578
沙发
发表于 2019-10-23 09:06:02 | 只看该作者
本帖最后由 jefferyzhang 于 2019-10-23 11:47 编辑

eval_perf_fps 是模拟运行一次的结果(修正)
你这两个方法一个混合量化,一个全部量化,运算量和运算类型完全不一样,怎么可能FPS会一样呢?
回复

使用道具 举报

yupanpan

注册会员

积分
80
板凳
 楼主| 发表于 2019-10-23 10:33:07 | 只看该作者
jefferyzhang 发表于 2019-10-23 09:06
eval_perf_fps 是根据op的时间和空间复杂度和NPU频率直接计算出的理论FPS,
你这两个方法一个混合量化,一 ...

你的意思是说如果我使用第二种方法就是全部量化了,对吗?

那如果我使用第一种方法,但是不修改ssd_mobilenet_v2.quantization.cfg, 这种情形是混合量化还是全部量化呢?
回复

使用道具 举报

jefferyzhang

版主

积分
13578
地板
发表于 2019-10-23 11:10:40 | 只看该作者
本帖最后由 jefferyzhang 于 2019-10-23 11:47 编辑
yupanpan 发表于 2019-10-23 10:33
你的意思是说如果我使用第二种方法就是全部量化了,对吗?

那如果我使用第一种方法,但是不修改ssd_mobi ...

具体问题具体分析,要看他里头的dtype什么的精度是否变了。

你的混合量化是什么都没改么?
回复

使用道具 举报

yupanpan

注册会员

积分
80
5#
 楼主| 发表于 2019-10-23 11:19:57 | 只看该作者
jefferyzhang 发表于 2019-10-23 11:10
具体问题具体分析,要看他里头的dtype什么的精度是否变了。
perf的结果不会说谎,他是按模型计算的,而非 ...

对,混合量化没有改动,没有改动第一种方法中第一步生成的quantization.cfg。

因为第二种方法没有生成这些中间文件,所以我不清楚这是混合量化还是全部量化
回复

使用道具 举报

jefferyzhang

版主

积分
13578
6#
发表于 2019-10-23 11:47:02 | 只看该作者
本帖最后由 jefferyzhang 于 2019-10-23 11:48 编辑

我提交了这个问题给相关部门了,他们会测试下。
他们建议你直接运行模型(不用perf)看看结果会不会有差距
回复

使用道具 举报

yupanpan

注册会员

积分
80
7#
 楼主| 发表于 2019-10-25 10:35:09 | 只看该作者
jefferyzhang 发表于 2019-10-23 11:47
我提交了这个问题给相关部门了,他们会测试下。
他们建议你直接运行模型(不用perf)看看结果会不会有差距 ...

直接运行模型,计算inference的时间,这两个方法得到的结果也是相差很大。但是具体的目标检测结果是否一样,还没有测
回复

使用道具 举报

jefferyzhang

版主

积分
13578
8#
发表于 2019-10-25 11:36:44 | 只看该作者
yupanpan 发表于 2019-10-25 10:35
直接运行模型,计算inference的时间,这两个方法得到的结果也是相差很大。但是具体的目标检测结果是否一 ...

了解了,我已经上报问题了,等待NPU部门回复
回复

使用道具 举报

jefferyzhang

版主

积分
13578
9#
发表于 2019-11-5 11:40:26 | 只看该作者
已回复:
我用C API在RK1808 EVB板上实测,这两种方式生成的RKNN模型性能并没有什么差距:一个是16.31ms(直接调build接口生成的),一个是16.35ms(调用hybrid step1/step2生成的)。如果客户是用rknn.inference统计时间的话,建议直接load_rknn/inference,并且inference多次(大于100次)算平均值。
回复

使用道具 举报

shopping

中级会员

积分
410
10#
发表于 2019-11-14 16:49:29 | 只看该作者
楼主,问一下。请问你用rk1808跑过 mobilnet-ssd 这类的目标检测模型吗?我想知道 fps 多大?
回复

使用道具 举报

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

本版积分规则

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


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