1import numpy as np 2import cv2 3from rknn.api import RKNN 4 5if __name__ == '__main__': 6 7 # Create RKNN object 8 rknn = RKNN(verbose=True) 9 10 # Pre-process config 11 print('--> Config model') 12 rknn.config(mean_values=[127.5, 127.5, 127.5], std_values=[127.5, 127.5, 127.5]) 13 print('done') 14 15 # Load model 16 print('--> Loading model') 17 ret = rknn.load_tensorflow(tf_pb='./ssd_mobilenet_v2.pb', 18 inputs=['FeatureExtractor/MobilenetV2/MobilenetV2/input'], 19 outputs=['concat_1', 'concat'], 20 input_size_list=[[1,300,300,3]]) 21 if ret != 0: 22 print('Load model failed!') 23 exit(ret) 24 print('done') 25 26 # Build model 27 print('--> hybrid_quantization_step1') 28 ret = rknn.hybrid_quantization_step1(dataset='./dataset.txt', proposal=False) 29 if ret != 0: 30 print('hybrid_quantization_step1 failed!') 31 exit(ret) 32 print('done') 33 34 # Tips 35 print('Please modify ssd_mobilenet_v2.quantization.cfg!') 36 print('==================================================================================================') 37 print('Modify Method: Fill the customized_quantize_layers with the output name & dtype of the custom layer.') 38 print('') 39 print('For example:') 40 print(' custom_quantize_layers:') 41 print(' FeatureExtractor/MobilenetV2/expanded_conv/depthwise/BatchNorm/batchnorm/add_1:0: float16') 42 print(' FeatureExtractor/MobilenetV2/expanded_conv/depthwise/Relu6:0: float16') 43 print('Or:') 44 print(' custom_quantize_layers: {') 45 print(' FeatureExtractor/MobilenetV2/expanded_conv/depthwise/BatchNorm/batchnorm/add_1:0: float16,') 46 print(' FeatureExtractor/MobilenetV2/expanded_conv/depthwise/Relu6:0: float16,') 47 print(' }') 48 print('==================================================================================================') 49 50 rknn.release() 51 52