def mxnet_emit(original_framework, architecture_name, architecture_path, weight_path, test_input_path): from mmdnn.conversion.mxnet.mxnet_emitter import MXNetEmitter from collections import namedtuple Batch = namedtuple('Batch', ['data']) import mxnet # IR to code converted_file = TestModels.tmpdir + original_framework + '_mxnet_' + architecture_name + "_converted" converted_file = converted_file.replace('.', '_') output_weights_file = converted_file + "-0000.params" emitter = MXNetEmitter( (architecture_path, weight_path, output_weights_file)) emitter.run(converted_file + '.py', None, 'test') del emitter del MXNetEmitter # import converted model imported = imp.load_source('MXNetModel', converted_file + '.py') model_converted = imported.RefactorModel() model_converted = imported.deploy_weight(model_converted, output_weights_file) original_framework = checkfrozen(original_framework) if 'rnn' not in architecture_name: func = TestKit.preprocess_func[original_framework][ architecture_name] img = func(test_input_path(architecture_name)) img = np.transpose(img, (2, 0, 1)) input_data = np.expand_dims(img, 0) else: input_data = np.load(test_input_path(architecture_name)) model_converted.forward(Batch([mxnet.nd.array(input_data)])) predict = model_converted.get_outputs()[0].asnumpy() converted_predict = np.squeeze(predict) del model_converted del sys.modules['MXNetModel'] del mxnet os.remove(converted_file + '.py') os.remove(output_weights_file) return converted_predict
def MXNetEmit(original_framework, architecture_name, architecture_path, weight_path, image_path): from mmdnn.conversion.mxnet.mxnet_emitter import MXNetEmitter from collections import namedtuple Batch = namedtuple('Batch', ['data']) original_framework = checkfrozen(original_framework) import mxnet as mx print("Testing {} from {} to MXNet.".format(architecture_name, original_framework)) # IR to code converted_file = original_framework + '_mxnet_' + architecture_name + "_converted" converted_file = converted_file.replace('.', '_') output_weights_file = converted_file + "-0000.params" emitter = MXNetEmitter( (architecture_path, weight_path, output_weights_file)) emitter.run(converted_file + '.py', None, 'test') del emitter del MXNetEmitter # import converted model imported = __import__(converted_file) model_converted = imported.RefactorModel() model_converted = imported.deploy_weight(model_converted, output_weights_file) func = TestKit.preprocess_func[original_framework][architecture_name] img = func(image_path) img = np.transpose(img, (2, 0, 1)) input_data = np.expand_dims(img, 0) model_converted.forward(Batch([mx.nd.array(input_data)])) predict = model_converted.get_outputs()[0].asnumpy() converted_predict = np.squeeze(predict) del model_converted del sys.modules[converted_file] del mx os.remove(converted_file + '.py') os.remove(output_weights_file) return converted_predict
def MXNetEmit(original_framework, architecture_name, architecture_path, weight_path, image_path): from mmdnn.conversion.mxnet.mxnet_emitter import MXNetEmitter from collections import namedtuple Batch = namedtuple('Batch', ['data']) original_framework = checkfrozen(original_framework) import mxnet as mx print("Testing {} from {} to MXNet.".format(architecture_name, original_framework)) # IR to code converted_file = original_framework + '_mxnet_' + architecture_name + "_converted" converted_file = converted_file.replace('.', '_') output_weights_file = converted_file + "-0000.params" emitter = MXNetEmitter((architecture_path, weight_path, output_weights_file)) emitter.run(converted_file + '.py', None, 'test') del emitter del MXNetEmitter # import converted model imported = __import__(converted_file) model_converted = imported.RefactorModel() model_converted = imported.deploy_weight(model_converted, output_weights_file) func = TestKit.preprocess_func[original_framework][architecture_name] img = func(image_path) img = np.transpose(img, (2, 0, 1)) input_data = np.expand_dims(img, 0) model_converted.forward(Batch([mx.nd.array(input_data)])) predict = model_converted.get_outputs()[0].asnumpy() converted_predict = np.squeeze(predict) del model_converted del sys.modules[converted_file] del mx os.remove(converted_file + '.py') os.remove(output_weights_file) return converted_predict