1import numpy as np 2import cv2 3from rknn.api import RKNN 4 5 6def show_outputs(outputs): 7 output = outputs[0].reshape(-1) 8 output_sorted = sorted(output, reverse=True) 9 top5_str = 'mobilenet_v2\n-----TOP 5-----\n' 10 for i in range(5): 11 value = output_sorted[i] 12 index = np.where(output == value) 13 for j in range(len(index)): 14 if (i + j) >= 5: 15 break 16 if value > 0: 17 topi = '{}: {}\n'.format(index[j], value) 18 else: 19 topi = '-1: 0.0\n' 20 top5_str += topi 21 print(top5_str) 22 23 24if __name__ == '__main__': 25 26 # Create RKNN object 27 rknn = RKNN(verbose=True) 28 29 # Pre-process config 30 print('--> Config model') 31 rknn.config(mean_values=[103.94, 116.78, 123.68], std_values=[58.82, 58.82, 58.82], 32 quant_img_RGB2BGR=True, target_platform='rk3588') 33 print('done') 34 35 # Load model 36 print('--> Loading model') 37 ret = rknn.load_caffe(model='./../../caffe/mobilenet_v2/mobilenet_v2.prototxt', 38 blobs='./../../caffe/mobilenet_v2/mobilenet_v2.caffemodel') 39 if ret != 0: 40 print('Load model failed!') 41 exit(ret) 42 print('done') 43 44 # Build model 45 print('--> Building model') 46 ret = rknn.build(do_quantization=True, dataset='./dataset.txt') 47 if ret != 0: 48 print('Build model failed!') 49 exit(ret) 50 print('done') 51 52 # Export rknn model 53 print('--> Export rknn model') 54 ret = rknn.export_rknn('./mobilenet_v2.rknn') 55 if ret != 0: 56 print('Export rknn model failed!') 57 exit(ret) 58 print('done') 59 60 # Export encrypted RKNN model 61 print('--> Export encrypted rknn model') 62 ret = rknn.export_encrypted_rknn_model('./mobilenet_v2.rknn', None, 3) 63 64 # load rknn model 65 print('--> Load rknn model') 66 ret = rknn.load_rknn('./mobilenet_v2.rknn') 67 if ret != 0: 68 print('Load rknn model failed!') 69 exit(ret) 70 print('done') 71 72 # Set inputs 73 img = cv2.imread('./dog_224x224.jpg') 74 75 print('--> List devices') 76 rknn.list_devices() 77 78 # Init runtime environment 79 print('--> Init runtime environment') 80 ret = rknn.init_runtime(target='rk3588', perf_debug=True, eval_mem=True) 81 if ret != 0: 82 print('Init runtime environment failed!') 83 exit(ret) 84 print('done') 85 86 print('--> Get sdk version') 87 sdk_version = rknn.get_sdk_version() 88 print(sdk_version) 89 90 # eval perf 91 print('--> Eval perf') 92 rknn.eval_perf() 93 94 # eval perf 95 print('--> Eval memory') 96 rknn.eval_memory() 97 98 # Inference 99 print('--> Running model') 100 outputs = rknn.inference(inputs=[img]) 101 np.save('./functions_board_test_0.npy', outputs[0]) 102 show_outputs(outputs) 103 print('done') 104 105 # Accuracy analysis 106 print('--> Accuracy analysis') 107 ret = rknn.accuracy_analysis(inputs=['./dog_224x224.jpg'], output_dir='./snapshot', target='rk3588') 108 if ret != 0: 109 print('Accuracy analysis failed!') 110 exit(ret) 111 print('done') 112 113 rknn.release() 114