Esempio n. 1
0
def main():
    os.makedirs(SAVEDMODEL_DIR, exist_ok=True)

    if os.path.exists(PB_FILE):
        print(f"saved model {SAVEDMODEL_DIR} found")
        model = tf.keras.models.load_model(SAVEDMODEL_DIR)
    else:
        print(f"saved model {SAVEDMODEL_DIR} not found")
        model = get_model(HUB_URL, (224, 224, 3))

    preprocess = TFImagePreprocessTransformer(image_size=(224, 224),
                                              prediction_shape=(1, 224, 224,
                                                                3))
    postprocess = SoftmaxTransformer()

    image = Image.open(SAMPLE_IMAGE)

    validate(image, preprocess, model, postprocess)

    tf.saved_model.save(model, SAVEDMODEL_DIR)

    modelname = "mobilenetv2_plant"
    interface_filename = f"{modelname}.yaml"
    preprocess_filename = f"{modelname}_preprocess_transformer.pkl"
    postprocess_filename = f"{modelname}_softmax_transformer.pkl"
    preprocess_filepath = os.path.join(MODEL_DIR, preprocess_filename)
    postprocess_filepath = os.path.join(MODEL_DIR, postprocess_filename)
    dump_sklearn(preprocess, preprocess_filepath)
    dump_sklearn(postprocess, postprocess_filepath)

    save_interface(
        modelname,
        os.path.join(MODEL_DIR, interface_filename),
        [1, 224, 224, 3],
        "float32",
        [1, 2102],
        "float32",
        DATA_TYPE.IMAGE,
        [{
            preprocess_filepath: MODEL_RUNTIME.SKLEARN
        }, {
            SAVEDMODEL_DIR: MODEL_RUNTIME.TF_SERVING
        }, {
            postprocess_filepath: MODEL_RUNTIME.SKLEARN
        }],
        PREDICTION_TYPE.CLASSIFICATION,
        "src.app.ml.mobilenetv2_plant.mobilenetv2_predictor",
        label_filepath=LABEL_FILEPATH,
        model_spec_name="mobilenetv2_plant",
        model_spec_signature_name="serving_default",
        input_name="input_1",
        output_name="keras_layer",
    )
Esempio n. 2
0
def main():
    os.makedirs(SAVEDMODEL_DIR, exist_ok=True)

    if os.path.exists(PB_FILE):
        print(f'saved model {SAVEDMODEL_DIR} found')
        model = tf.keras.models.load_model(SAVEDMODEL_DIR)
    else:
        print(f'saved model {SAVEDMODEL_DIR} not found')
        model = get_model(HUB_URL, (299, 299, 3))

    preprocess = TFImagePreprocessTransformer()
    postprocess = SoftmaxTransformer()

    image = Image.open(SAMPLE_IMAGE)

    validate(image, preprocess, model, postprocess)

    tf.saved_model.save(model, SAVEDMODEL_DIR)

    modelname = 'inceptionv3'
    interface_filename = f'{modelname}.yaml'
    preprocess_filename = f'{modelname}_preprocess_transformer.pkl'
    postprocess_filename = f'{modelname}_softmax_transformer.pkl'
    preprocess_filepath = os.path.join(MODEL_DIR, preprocess_filename)
    postprocess_filepath = os.path.join(MODEL_DIR, postprocess_filename)
    dump_sklearn(preprocess, preprocess_filepath)
    dump_sklearn(postprocess, postprocess_filepath)

    save_interface(modelname,
                   os.path.join(MODEL_DIR,
                                interface_filename), [1, 299, 299, 3],
                   'float32', [1, 1001],
                   'float32',
                   DATA_TYPE.IMAGE,
                   [{
                       preprocess_filepath: MODEL_RUNTIME.SKLEARN
                   }, {
                       SAVEDMODEL_DIR: MODEL_RUNTIME.TF_SERVING
                   }, {
                       postprocess_filepath: MODEL_RUNTIME.SKLEARN
                   }],
                   PREDICTION_TYPE.CLASSIFICATION,
                   'src.app.ml.inceptionv3.inceptionv3_predictor',
                   label_filepath=LABEL_FILEPATH,
                   model_spec_name='inceptionv3',
                   model_spec_signature_name='serving_default',
                   input_name='input_1',
                   output_name='keras_layer')
def test_dump_sklearn(mocker):
    mocker.patch('joblib.dump', return_value=None)
    save_helper.dump_sklearn("", "test.pkl")
Esempio n. 4
0
def main():
    modelname = "resnet50_onnx"
    interface_filename = f"{modelname}.yaml"

    model = resnet50(pretrained=True)
    x_dummy = torch.rand((1, 3, 224, 224), device="cpu")
    model.eval()
    torch.onnx.export(
        model,
        x_dummy,
        MODEL_FILEPATH,
        export_params=True,
        opset_version=10,
        do_constant_folding=True,
        input_names=["input"],
        output_names=["output"],
        verbose=False,
    )

    labels = load_labels(LABEL_FILEPATH)

    preprocess = PytorchImagePreprocessTransformer()

    image = Image.open(SAMPLE_IMAGE)
    np_image = preprocess.transform(image)
    print(np_image.shape)

    preprocess_name = f"{modelname}_preprocess_transformer"
    preprocess_filename = f"{preprocess_name}.pkl"
    preprocess_filepath = os.path.join(MODEL_DIR, preprocess_filename)
    dump_sklearn(preprocess, preprocess_filepath)

    sess = rt.InferenceSession(MODEL_FILEPATH)
    inp, out = sess.get_inputs()[0], sess.get_outputs()[0]
    print(f"input name='{inp.name}' shape={inp.shape} type={inp.type}")
    print(f"output name='{out.name}' shape={out.shape} type={out.type}")
    pred_onx = sess.run([out.name], {inp.name: np_image})

    postprocess = SoftmaxTransformer()
    postprocess_name = f"{modelname}_softmax_transformer"
    postprocess_filename = f"{postprocess_name}.pkl"
    postprocess_filepath = os.path.join(MODEL_DIR, postprocess_filename)
    dump_sklearn(postprocess, postprocess_filepath)
    prediction = postprocess.transform(np.array(pred_onx))

    print(prediction.shape)
    print(labels[np.argmax(prediction[0])])

    save_interface(
        modelname,
        os.path.join(MODEL_DIR, interface_filename),
        [1, 3, 224, 224],
        "float32",
        [1, 1000],
        "float32",
        DATA_TYPE.IMAGE,
        [{
            preprocess_filepath: MODEL_RUNTIME.SKLEARN
        }, {
            MODEL_FILEPATH: MODEL_RUNTIME.ONNX_RUNTIME
        }, {
            postprocess_filepath: MODEL_RUNTIME.SKLEARN
        }],
        PREDICTION_TYPE.CLASSIFICATION,
        "src.app.ml.resnet50_onnx.resnet50_predictor",
        label_filepath=LABEL_FILEPATH,
    )