TB-RK-3399Pro开发板fedora28安装SDK1.2.0(rknn-toolkit-V1.2.0),目前运行了官网demo中mobilenet_v1发现如下问题:
运行模型的实际推理时间~37.18ms,为何rknn.eval_perf(inputs=[img])接口打印出来是5.827ms(Total Time 5827us)?
运行模型的实际推理时间~45.79ms,为何rknn.eval_perf(inputs=[img])接口打印出来是13.852ms(Total Time 13852us)?
官方SDKrknn-toolkit-v1.2.0\example\mobilenet_v1\test.py如下:
import numpy as np
import cv2
from rknn.api import RKNN
def show_outputs(outputs):
output = outputs[0][0]
output_sorted = sorted(output, reverse=True)
top5_str = 'mobilenet_v1\n-----TOP 5-----\n'
for i in range(5):
value = output_sorted
index = np.where(output == value)
for j in range(len(index)):
if (i + j) >= 5:
break
if value > 0:
topi = '{}: {}\n'.format(index[j], value)
else:
topi = '-1: 0.0\n'
top5_str+= topi
print(top5_str)
def show_perfs(perfs):
perfs = 'perfs:{}\n'.format(outputs)
print(perfs)
if __name__ == '__main__':
#Create RKNN object
importtime
rknn = RKNN()
#pre-process config
T1=time.time()
print('--> config model')
rknn.config(channel_mean_value='103.94 116.78 123.68 58.82', reorder_channel='0 1 2')
T2=time.time()
print("config model time:%.2fms"%((T2-T1)*1000))
print('done')
#Load tensorflow model
print('--> Loading model')
ret = rknn.load_tflite(model='./mobilenet_v1.tflite')
if ret != 0:
print('Load mobilenet_v1 failed!')
exit(ret)
T3 = time.time()
print("Loading model time:%.2fms"%((T3-T2)*1000))
print('done')
#Build model
print('--> Building model')
ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
if ret != 0:
print('Build mobilenet_v1 failed!')
exit(ret)
T4 = time.time()
print("Building model time:%.2fms"%((T4-T3)*1000))
print('done')
#Export rknn model
print('--> Export RKNN model')
ret = rknn.export_rknn('./mobilenet_v1.rknn')
if ret != 0:
print('Export mobilenet_v1.rknn failed!')
exit(ret)
T5=time.time()
print("Export RKNN model time:%.2fms"%((T5-T4)*1000))
print('done')
#Set inputs
img= cv2.imread('./dog_224x224.jpg')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
T6 = time.time()
print("Set inputs time:%.2fms"%((T6-T5)*1000))
#init runtime environment
print('--> Init runtime environment')
ret = rknn.init_runtime()
if ret != 0:
print('Init runtime environment failed')
exit(ret)
T7 = time.time()
print("Init runtime environment time:%.2fms"%((T7-T6)*1000))
print('done')
#Inference
print('--> Running model')
outputs = rknn.inference(inputs=[img])
show_outputs(outputs)
T8 = time.time()
print("Inference time:%.2fms"%((T8-T7)*1000))
print('done')
#perf
print('--> Begin evaluate modelperformance')
perf_results = rknn.eval_perf(inputs=[img])
print('done')
T9=time.time()
print("perf time:%.2fms"%((T9-T8)*1000))
rknn.release()
|