def main(): args = args_parser.parse_args() if args.sub_command == 'onnx2tnn': onnx_path = parse_path.parse_path(args.onnx_path) output_dir = parse_path.parse_path(args.output_dir) version = args.version optimize = args.optimize half = args.half onnx_path = parse_path.parse_path(onnx_path) output_dir = parse_path.parse_path(output_dir) onnx2tnn.convert(onnx_path, output_dir, version, optimize, half) elif args.sub_command == 'caffe2tnn': proto_path = parse_path.parse_path(args.proto_path) model_path = parse_path.parse_path(args.model_path) output_dir = parse_path.parse_path(args.output_dir) version = args.version optimize = args.optimize half = args.half caffe2tnn.convert(proto_path, model_path, output_dir, version, optimize, half) elif args.sub_command == 'tf2tnn': tf_path = parse_path.parse_path(args.tf_path) output_dir = parse_path.parse_path(args.output_dir) input_names = args.input_names output_names = args.output_names version = args.version optimize = args.optimize half = args.half tf2tnn.convert(tf_path, input_names, output_names, output_dir, version, optimize, half) else: print("Do not support convert!")
def convert(tf_path, input_names, output_names, output_dir, version, optimize, half, align=False, not_fold_const=False, input_path=None, refer_path=None): logging.info("Converter Tensorflow to TNN model\n") checker.check_file_exist(tf_path) model_name = os.path.basename(tf_path) if output_dir is None or not os.path.isdir(output_dir): output_dir = os.path.dirname(tf_path) checker.check_file_exist(output_dir) model_name = model_name[:-len(".pb")] onnx_path = os.path.join(output_dir, model_name + ".onnx") if tf2onnx(tf_path, input_names, output_names, onnx_path, not_fold_const) is False: logging.error("Oh No, tf2onnx failed :(\n") sys.exit(return_code.CONVERT_FAILED) else: logging.info("Convert TensorFlow to ONNX model succeed!\n") if version is None: version = "v1.0" checker.check_file_exist(onnx_path) onnx2tnn.convert(onnx_path, output_dir, version, optimize, half) if align is True: proto_suffix = '.tnnproto' model_suffix = '.tnnmodel' onnx_base_name = os.path.basename(onnx_path) if optimize is True: tnn_proto_name = onnx_base_name[:-len('.onnx')] + '.opt' + proto_suffix tnn_model_name = onnx_base_name[:-len('.onnx')] + '.opt' + model_suffix else: tnn_proto_name = onnx_base_name[:-len('.onnx')] + proto_suffix tnn_model_name = onnx_base_name[:-len('.onnx')] + model_suffix tnn_proto_path = os.path.join(output_dir, tnn_proto_name) tnn_model_path = os.path.join(output_dir, tnn_model_name) align_model.align_model(onnx_path, tnn_proto_path, tnn_model_path, input_path, refer_path)
def convert(proto_path, model_path, output_dir, version, optimize, half, align=False, input_path=None, refer_path=None): logging.info("Converter Caffe to ONNX Model\n") checker.check_file_exist(proto_path) checker.check_file_exist(model_path) if output_dir is None: output_dir = os.path.dirname(proto_path) checker.check_file_exist(output_dir) proto_name = os.path.basename(proto_path) proto_name = proto_name[:-len(".prototxt")] onnx_path = os.path.join(output_dir, proto_name + ".onnx") if caffe2onnx(proto_path, model_path, onnx_path) is False: logging.error("Oh No, caff2onnx failed :(\n") sys.exit(return_code.CONVERT_FAILED) else: logging.info("Congratulations! caffe2onnx succeed!\n") if version is None: version = "v1.0" is_ssd = checker.is_ssd_model(proto_path) if is_ssd: onnx2tnn.convert(onnx_path, output_dir, version, False, half, is_ssd=True) else: onnx2tnn.convert(onnx_path, output_dir, version, optimize, half) if is_ssd and ((input_path is None) or (refer_path is None)): align = False optimize = False if align is True: proto_suffix = '.tnnproto' model_suffix = '.tnnmodel' onnx_base_name = os.path.basename(onnx_path) if optimize is True: tnn_proto_name = onnx_base_name[:-len('.onnx' )] + '.opt' + proto_suffix tnn_model_name = onnx_base_name[:-len('.onnx' )] + '.opt' + model_suffix else: tnn_proto_name = onnx_base_name[:-len('.onnx')] + proto_suffix tnn_model_name = onnx_base_name[:-len('.onnx')] + model_suffix tnn_proto_path = os.path.join(output_dir, tnn_proto_name) tnn_model_path = os.path.join(output_dir, tnn_model_name) align_model.align_model(onnx_path, tnn_proto_path, tnn_model_path, input_path, refer_path)
def main(): args = args_parser.parse_args() if args.sub_command == 'onnx2tnn': onnx_path = parse_path.parse_path(args.onnx_path) output_dir = parse_path.parse_path(args.output_dir) input_names = args.input_names version = args.version optimize = args.optimize half = args.half align = args.align input_file = args.input_file_path ref_file = args.refer_file_path onnx_path = parse_path.parse_path(onnx_path) output_dir = parse_path.parse_path(output_dir) input_file = parse_path.parse_path(input_file) ref_file = parse_path.parse_path(ref_file) onnx2tnn.convert(onnx_path, output_dir, version, optimize, half, align, input_file, ref_file, input_names) elif args.sub_command == 'caffe2tnn': proto_path = parse_path.parse_path(args.proto_path) model_path = parse_path.parse_path(args.model_path) output_dir = parse_path.parse_path(args.output_dir) version = args.version optimize = args.optimize half = args.half align = args.align input_file = args.input_file_path ref_file = args.refer_file_path input_file = parse_path.parse_path(input_file) ref_file = parse_path.parse_path(ref_file) caffe2tnn.convert(proto_path, model_path, output_dir, version, optimize, half, align, input_file, ref_file) elif args.sub_command == 'tf2tnn': tf_path = parse_path.parse_path(args.tf_path) output_dir = parse_path.parse_path(args.output_dir) input_names = args.input_names output_names = args.output_names version = args.version optimize = args.optimize half = args.half align = args.align not_fold_const = args.not_fold_const input_file = args.input_file_path ref_file = args.refer_file_path input_file = parse_path.parse_path(input_file) ref_file = parse_path.parse_path(ref_file) tf2tnn.convert(tf_path, input_names, output_names, output_dir, version, optimize, half, align, not_fold_const, input_file, ref_file) else: print("Do not support convert!")
def convert(tf_path, input_names, output_names, output_dir, version, optimize, half): checker.check_file_exist(tf_path) model_name = os.path.basename(tf_path) if output_dir is None or not os.path.isdir(output_dir): output_dir = os.path.dirname(tf_path) checker.check_file_exist(output_dir) model_name = model_name[:-len(".pb")] onnx_path = os.path.join(output_dir, model_name + ".onnx") if tf2onnx(tf_path, input_names, output_names, onnx_path) is False: print("Oh No, tf2onnx failed") else: print("congratulations! tf2onnx succeed!") if version is None: version = "v1.0" checker.check_file_exist(onnx_path) onnx2tnn.convert(onnx_path, output_dir, version, optimize, half)
def convert(proto_path, model_path, output_dir, version, optimize, half, align=False, input_path=None, refer_path=None): checker.check_file_exist(proto_path) checker.check_file_exist(model_path) if output_dir is None: output_dir = os.path.dirname(proto_path) checker.check_file_exist(output_dir) proto_name = os.path.basename(proto_path) proto_name = proto_name[:-len(".prototxt")] onnx_path = os.path.join(output_dir, proto_name + ".onnx") if caffe2onnx(proto_path, model_path, onnx_path) is False: print("Oh No, caff2onnx failed") else: print("congratulations! caffe2onnx succeed!") if version is None: version = "v1.0" is_ssd = checker.is_ssd_model(proto_path) if is_ssd: onnx2tnn.convert(onnx_path, output_dir, version, False, half) else: onnx2tnn.convert(onnx_path, output_dir, version, optimize, half) if align is True: proto_suffix = '.tnnproto' model_suffix = '.tnnmodel' onnx_base_name = os.path.basename(onnx_path) if optimize is True: tnn_proto_name = onnx_base_name[:-len('.onnx' )] + '.opt' + proto_suffix tnn_model_name = onnx_base_name[:-len('.onnx' )] + '.opt' + model_suffix else: tnn_proto_name = onnx_base_name[:-len('.onnx')] + proto_suffix tnn_model_name = onnx_base_name[:-len('.onnx')] + model_suffix tnn_proto_path = os.path.join(output_dir, tnn_proto_name) tnn_model_path = os.path.join(output_dir, tnn_model_name) align_model.align_model(onnx_path, tnn_proto_path, tnn_model_path, input_path, refer_path)
def convert(tf_path, input_names, output_names, output_dir, version, optimize, half, align=False, not_fold_const=False, input_path=None, refer_path=None): checker.check_file_exist(tf_path) model_name = os.path.basename(tf_path) if output_dir is None or not os.path.isdir(output_dir): output_dir = os.path.dirname(tf_path) checker.check_file_exist(output_dir) model_name = model_name[:-len(".pb")] onnx_path = os.path.join(output_dir, model_name + ".onnx") if tf2onnx(tf_path, input_names, output_names, onnx_path, not_fold_const) is False: print("Oh No, tf2onnx failed") else: print("congratulations! tf2onnx succeed!") if version is None: version = "v1.0" checker.check_file_exist(onnx_path) onnx2tnn.convert(onnx_path, output_dir, version, optimize, half) if align is True: proto_suffix = '.tnnproto' model_suffix = '.tnnmodel' onnx_base_name = os.path.basename(onnx_path) if optimize is True: tnn_proto_name = onnx_base_name[:-len('.onnx' )] + '.opt' + proto_suffix tnn_model_name = onnx_base_name[:-len('.onnx' )] + '.opt' + model_suffix else: tnn_proto_name = onnx_base_name[:-len('.onnx')] + proto_suffix tnn_model_name = onnx_base_name[:-len('.onnx')] + model_suffix tnn_proto_path = os.path.join(output_dir, tnn_proto_name) tnn_model_path = os.path.join(output_dir, tnn_model_name) align_model.align_model(onnx_path, tnn_proto_path, tnn_model_path, input_path, refer_path)
def convert(proto_path, model_path, output_dir, version, optimize, half): checker.check_file_exist(proto_path) checker.check_file_exist(model_path) if output_dir is None: output_dir = os.path.dirname(proto_path) checker.check_file_exist(output_dir) proto_name = os.path.basename(proto_path) proto_name = proto_name[:-len(".prototxt")] onnx_path = os.path.join(output_dir, proto_name + ".onnx") if caffe2onnx(proto_path, model_path, onnx_path) is False: print("Oh No, caff2onnx failed") else: print("congratulations! caffe2onnx succeed!") if version is None: version = "v1.0" is_ssd = checker.is_ssd_model(proto_path) if is_ssd: onnx2tnn.convert(onnx_path, output_dir, version, False, half) else: onnx2tnn.convert(onnx_path, output_dir, version, optimize, half)
def main(): parser = args_parser.parse_args() args = parser.parse_args() debug_mode: bool = args.debug if debug_mode is True: logging.basicConfig(level=logging.DEBUG, format='') else: logging.basicConfig(level=logging.INFO, format='') logging.info("\n{} convert model, please wait a moment {}\n".format( "-" * 10, "-" * 10)) if args.sub_command == 'onnx2tnn': onnx_path = parse_path.parse_path(args.onnx_path) output_dir = parse_path.parse_path(args.output_dir) version = args.version optimize = args.optimize half = args.half align = args.align input_file = args.input_file_path ref_file = args.refer_file_path onnx_path = parse_path.parse_path(onnx_path) output_dir = parse_path.parse_path(output_dir) input_file = parse_path.parse_path(input_file) ref_file = parse_path.parse_path(ref_file) input_names = None if args.input_names is not None: input_names = "" for item in args.input_names: input_names += (item + " ") try: onnx2tnn.convert(onnx_path, output_dir, version, optimize, half, align, input_file, ref_file, input_names, debug_mode=debug_mode) except Exception as err: logging.error("Conversion to tnn failed :(\n") logging.error(err) elif args.sub_command == 'caffe2tnn': proto_path = parse_path.parse_path(args.proto_path) model_path = parse_path.parse_path(args.model_path) output_dir = parse_path.parse_path(args.output_dir) version = args.version optimize = args.optimize half = args.half align = args.align input_file = args.input_file_path ref_file = args.refer_file_path input_file = parse_path.parse_path(input_file) ref_file = parse_path.parse_path(ref_file) try: caffe2tnn.convert(proto_path, model_path, output_dir, version, optimize, half, align, input_file, ref_file, debug_mode=debug_mode) except Exception as err: logging.error("Conversion to tnn failed :(\n") logging.error(err) elif args.sub_command == 'tf2tnn': tf_path = parse_path.parse_path(args.tf_path) output_dir = parse_path.parse_path(args.output_dir) input_names = args.input_names output_names = args.output_names version = args.version optimize = args.optimize half = args.half align = args.align not_fold_const = args.not_fold_const input_file = args.input_file_path ref_file = args.refer_file_path input_file = parse_path.parse_path(input_file) ref_file = parse_path.parse_path(ref_file) try: tf2tnn.convert(tf_path, input_names, output_names, output_dir, version, optimize, half, align, not_fold_const, input_file, ref_file, debug_mode=debug_mode) except Exception as err: logging.error("\nConversion to tnn failed :(\n") logging.error(err) elif args.sub_command == 'tflite2tnn': tf_path = parse_path.parse_path(args.tf_path) output_dir = parse_path.parse_path(args.output_dir) version = args.version align = args.align input_file = args.input_file_path ref_file = args.refer_file_path input_file = parse_path.parse_path(input_file) ref_file = parse_path.parse_path(ref_file) try: tflite2tnn.convert(tf_path, output_dir, version, align, input_file, ref_file, debug_mode=debug_mode) except Exception as err: logging.error("\n Conversion to tnn failed :(\n") logging.error(err) elif args.sub_command is None: parser.print_help() else: logging.info("Do not support convert!")
def main(): parser = args_parser.parse_args() args = parser.parse_args() logging.info("\n{} convert model, please wait a moment {}\n".format( "-" * 10, "-" * 10)) if args.sub_command == 'onnx2tnn': onnx_path = parse_path.parse_path(args.onnx_path) output_dir = parse_path.parse_path(args.output_dir) input_names = args.input_names version = args.version optimize = args.optimize half = args.half align = args.align input_file = args.input_file_path ref_file = args.refer_file_path onnx_path = parse_path.parse_path(onnx_path) output_dir = parse_path.parse_path(output_dir) input_file = parse_path.parse_path(input_file) ref_file = parse_path.parse_path(ref_file) try: onnx2tnn.convert(onnx_path, output_dir, version, optimize, half, align, input_file, ref_file, input_names) except Exception as err: logging.error("Conversion to tnn failed :(\n") elif args.sub_command == 'caffe2tnn': proto_path = parse_path.parse_path(args.proto_path) model_path = parse_path.parse_path(args.model_path) output_dir = parse_path.parse_path(args.output_dir) version = args.version optimize = args.optimize half = args.half align = args.align input_file = args.input_file_path ref_file = args.refer_file_path input_file = parse_path.parse_path(input_file) ref_file = parse_path.parse_path(ref_file) try: caffe2tnn.convert(proto_path, model_path, output_dir, version, optimize, half, align, input_file, ref_file) except Exception as err: logging.error("Conversion to tnn failed :(\n") elif args.sub_command == 'tf2tnn': tf_path = parse_path.parse_path(args.tf_path) output_dir = parse_path.parse_path(args.output_dir) input_names = args.input_names output_names = args.output_names version = args.version optimize = args.optimize half = args.half align = args.align not_fold_const = args.not_fold_const input_file = args.input_file_path ref_file = args.refer_file_path input_file = parse_path.parse_path(input_file) ref_file = parse_path.parse_path(ref_file) try: tf2tnn.convert(tf_path, input_names, output_names, output_dir, version, optimize, half, align, not_fold_const, input_file, ref_file) except Exception as err: logging.error("\nConversion to tnn failed :(\n") elif args.sub_command is None: parser.print_help() else: logging.info("Do not support convert!")