def rknn_convert(input_model, output_model, dataset_file, target_platform): # Create RKNN object rknn = RKNN() print('--> config model') rknn.config(channel_mean_value='127.5 127.5 127.5 127.5', reorder_channel='0 1 2', batch_size=1, target_platform=target_platform) # Load onnx model print('--> Loading model') ret = rknn.load_onnx(model=input_model) if ret != 0: print('Load failed!') exit(ret) # Build model print('--> Building model') ret = rknn.build(do_quantization=True, dataset=dataset_file, pre_compile=True) if ret != 0: print('Build failed!') exit(ret) # Export rknn model print('--> Export RKNN model') ret = rknn.export_rknn(output_model) if ret != 0: print('Export .rknn failed!') exit(ret) # Release RKNN object rknn.release()
def convert_to_rknn(): from rknn.api import RKNN # Create RKNN object rknn = RKNN(verbose=True) # pre-process config print('--> config model') rknn.config(channel_mean_value='127.5 127.5 127.5 128', reorder_channel='0 1 2') print('done') # Load onnx model print('--> Loading model') ret = rknn.load_onnx(model='lprnet.onnx') if ret != 0: print('Load model failed!') exit(ret) print('done') # Build model print('--> Building model') ret = rknn.build(do_quantization=False, pre_compile=True, dataset='./data/dataset.txt') if ret != 0: print('Build model failed!') exit(ret) print('done') # Export rknn model print('--> Export RKNN model') ret = rknn.export_rknn('./lprnet.rknn') if ret != 0: print('Export model failed!') exit(ret) print('done')
if __name__ == '__main__': add_perm = False # 如果设置成True,则将模型输入layout修改成NHWC # Create RKNN object rknn = RKNN(verbose=True) # pre-process config print('--> config model') rknn.config(batch_size=1, mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], reorder_channel='0 1 2', target_platform=[platform], force_builtin_perm=add_perm, output_optimize=1) print('done') # Load tensorflow model print('--> Loading model') ret = rknn.load_onnx(model=ONNX_MODEL) if ret != 0: print('Load resnet50v2 failed!') exit(ret) print('done') # Build model print('--> Building model') ret = rknn.build(do_quantization=True, dataset='./dataset.txt') if ret != 0: print('Build resnet50 failed!') exit(ret) print('done') # rknn.export_rknn_precompile_model(RKNN_MODEL) rknn.export_rknn(RKNN_MODEL)
def convert_model(model_path, out_path, pre_compile): if os.path.isfile(model_path): yaml_config_file = model_path model_path = os.path.dirname(yaml_config_file) else: yaml_config_file = os.path.join(model_path, 'model_config.yml') if not os.path.exists(yaml_config_file): print('model config % not exist!' % yaml_config_file) exit(-1) model_configs = parse_model_config(yaml_config_file) exported_rknn_model_path_list = [] for model_name in model_configs['models']: model = model_configs['models'][model_name] rknn = RKNN() rknn.config(**model['configs']) print('--> Loading model...') if model['platform'] == 'tensorflow': model_file_path = os.path.join(model_path, model['model_file_path']) input_size_list = [] for input_size_str in model['subgraphs']['input-size-list']: input_size = list(map(int, input_size_str.split(','))) input_size_list.append(input_size) pass rknn.load_tensorflow(tf_pb=model_file_path, inputs=model['subgraphs']['inputs'], outputs=model['subgraphs']['outputs'], input_size_list=input_size_list) elif model['platform'] == 'tflite': model_file_path = os.path.join(model_path, model['model_file_path']) rknn.load_tflite(model=model_file_path) elif model['platform'] == 'caffe': prototxt_file_path = os.path.join(model_path, model['prototxt_file_path']) caffemodel_file_path = os.path.join(model_path, model['caffemodel_file_path']) rknn.load_caffe(model=prototxt_file_path, proto='caffe', blobs=caffemodel_file_path) elif model['platform'] == 'onnx': model_file_path = os.path.join(model_path, model['model_file_path']) rknn.load_onnx(model=model_file_path) else: print("platform %s not support!" % (model['platform'])) print('done') if model['quantize']: dataset_path = os.path.join(model_path, model['dataset']) else: dataset_path = './dataset' print('--> Build RKNN model...') rknn.build(do_quantization=model['quantize'], dataset=dataset_path, pre_compile=pre_compile) print('done') export_rknn_model_path = "%s.rknn" % (os.path.join( out_path, model_name)) print('--> Export RKNN model to: {}'.format(export_rknn_model_path)) rknn.export_rknn(export_path=export_rknn_model_path) exported_rknn_model_path_list.append(export_rknn_model_path) print('done') return exported_rknn_model_path_list