1import numpy as np 2import cv2 3from rknn.api import RKNN 4 5 6def show_outputs(outputs): 7 np.save('./functions_model_pruning_0.npy', outputs[0]) 8 output = outputs[0].reshape(-1) 9 output_sorted = sorted(output, reverse=True) 10 top5_str = 'mobilenet\n-----TOP 5-----\n' 11 for i in range(5): 12 value = output_sorted[i] 13 index = np.where(output == value) 14 for j in range(len(index)): 15 if (i + j) >= 5: 16 break 17 if value > 0: 18 topi = '{}: {}\n'.format(index[j], value) 19 else: 20 topi = '-1: 0.0\n' 21 top5_str += topi 22 print(top5_str) 23 24 25if __name__ == '__main__': 26 27 # Create RKNN object 28 rknn = RKNN(verbose=True) 29 30 # Pre-process config 31 print('--> Config model') 32 rknn.config(mean_values=[103.94, 116.78, 123.68], std_values=[58.82, 58.82, 58.82], quant_img_RGB2BGR=True, model_pruning=True) 33 print('done') 34 35 # Load model 36 print('--> Loading model') 37 ret = rknn.load_caffe(model='./mobilenet_deploy.prototxt', 38 blobs='./mobilenet.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 # Tips 53 print('') 54 print('======================================== Tips ==========================================================') 55 print('When verbose is set to True, the following similar prompts will appear during the build process, ') 56 print('indicating that model pruning has been effective for this model. (This means that approximately 6.9% ') 57 print('of the weights have been removed, resulting in a saving of about 13.4% of the computational workload.)') 58 print('Please note that not all models can be pruned, only models with sparse weights are likely to benefit from pruning.') 59 print('') 60 print(' I model_pruning ...') 61 print(' I model_pruning results:') 62 print(' I -1.12144 MB (-6.9%)') 63 print(' I -0.00016 T (-13.4%)') 64 print(' I model_pruning done.') 65 print('') 66 print('=========================================+++++++========================================================') 67 print('') 68 69 # Export rknn model 70 print('--> Export rknn model') 71 ret = rknn.export_rknn('./mobilenet.rknn') 72 if ret != 0: 73 print('Export rknn model failed!') 74 exit(ret) 75 print('done') 76 77 # Set inputs 78 img = cv2.imread('./dog_224x224.jpg') 79 80 # Init runtime environment 81 print('--> Init runtime environment') 82 ret = rknn.init_runtime() 83 if ret != 0: 84 print('Init runtime environment failed!') 85 exit(ret) 86 print('done') 87 88 # Inference 89 print('--> Running model') 90 outputs = rknn.inference(inputs=[img]) 91 show_outputs(outputs) 92 print('done') 93 94 rknn.release() 95