|
本帖最后由 protossw512 于 2019-3-8 07:11 编辑
已经发现了问题所在,原因是我在init模型的时候加入了RKNN_FLAG_COLLECT_PERF_MASK的flag,导致模型inference的速度变慢,其实不加这个flag也能够测速。
我们在将代码从python移植到c++的时候发现同样的模型在c++上要比python的速度慢一倍左右,不知道具体是什么原因。我们的模型在python上能跑到101216us,但是在c++上只能跑到197029us
除了在我们的模型上做测试,我们还在官方给出的example上进行了测试。
同样的mobilenet_v1模型,python上面的eval_perf的结果是4733um,把转好的.rnkk文件用c++的mobilenet code sample读进去跑perf_run则需要10067um。
c++的sample代码是在rk3399pro上直接编译的,并不是交叉编译的。
是因为c++的rknn版本过低么?
另外我在python mobilenet_v1的example script上面,自己测试了时间:
- for _ in range(20):
- start = time.time()
- outputs = rknn.inference(inputs=[img])
- end = time.time()
- print('eval time: {}'.format(end-start))
发现实际inference的时间是115ms左右,和eval_perf的结果(47ms)相差的比较远,是因为调用的overhead吗? |
|