def OnnxEmit(original_framework, architecture_name, architecture_path,
                 weight_path, image_path):
        from mmdnn.conversion.onnx.onnx_emitter import OnnxEmitter

        original_framework = checkfrozen(original_framework)

        # IR to code
        converted_file = original_framework + '_onnx_' + architecture_name + "_converted"
        converted_file = converted_file.replace('.', '_')
        emitter = OnnxEmitter(architecture_path, weight_path)
        emitter.run(converted_file + '.py', None, 'test')
        del emitter
        del OnnxEmitter

        # import converted model
        from onnx_tf.backend import prepare
        model_converted = __import__(converted_file).KitModel(weight_path)
        tf_rep = prepare(model_converted)

        func = TestKit.preprocess_func[original_framework][architecture_name]
        img = func(image_path)
        input_data = np.expand_dims(img, 0)

        predict = tf_rep.run(input_data)[0]

        del prepare
        del model_converted
        del tf_rep
        os.remove(converted_file + '.py')

        return predict
Beispiel #2
0
    def OnnxEmit(original_framework, architecture_name, architecture_path,
                 weight_path, image_path):
        try:
            from mmdnn.conversion.onnx.onnx_emitter import OnnxEmitter

            original_framework = checkfrozen(original_framework)

            # IR to code
            converted_file = original_framework + '_onnx_' + architecture_name + "_converted"
            converted_file = converted_file.replace('.', '_')
            emitter = OnnxEmitter(architecture_path, weight_path)
            emitter.run(converted_file + '.py', converted_file + '.npy',
                        'test')
            del emitter
            del OnnxEmitter

            # import converted model
            from onnx_tf.backend import prepare
            model_converted = imp.load_source(
                'OnnxModel',
                converted_file + '.py').KitModel(converted_file + '.npy')

            tf_rep = prepare(model_converted)

            func = TestKit.preprocess_func[original_framework][
                architecture_name]
            img = func(image_path)
            input_data = np.expand_dims(img, 0)

            predict = tf_rep.run(input_data)[0]

            return predict

        except ImportError:
            print(
                'Please install Onnx! Or Onnx is not supported in your platform.',
                file=sys.stderr)

        except:
            raise ValueError

        finally:
            del prepare
            del model_converted
            del tf_rep
            del sys.modules['OnnxModel']

            os.remove(converted_file + '.py')
            os.remove(converted_file + '.npy')
    def onnx_emit(original_framework, architecture_name, architecture_path,
                  weight_path, test_input_path):
        from mmdnn.conversion.onnx.onnx_emitter import OnnxEmitter

        # IR to code
        converted_file = TestModels.tmpdir + original_framework + '_onnx_' + architecture_name + "_converted"
        converted_file = converted_file.replace('.', '_')
        emitter = OnnxEmitter(architecture_path, weight_path)
        emitter.run(converted_file + '.py', converted_file + '.npy', 'test')
        del emitter
        del OnnxEmitter

        # import converted model
        from onnx_tf.backend import prepare
        model_converted = imp.load_source(
            'OnnxModel',
            converted_file + '.py').KitModel(converted_file + '.npy')

        tf_rep = prepare(model_converted)

        original_framework = checkfrozen(original_framework)
        func = TestKit.preprocess_func[original_framework][architecture_name]
        img = func(test_input_path)
        input_data = np.expand_dims(img, 0)

        predict = tf_rep.run(input_data)[0]

        del prepare
        del model_converted
        del tf_rep
        del sys.modules['OnnxModel']

        os.remove(converted_file + '.py')
        os.remove(converted_file + '.npy')

        return predict