0

按照本教程,我使用 Tensorflow Model Maker 创建了一个简单的图像分类模型。我将导出格式从 tflite 更改为 Saved Model,因为我打算将它与 tfjs-node 一起使用,如此处所示

# model.export(export_dir='.') 
model.export(export_dir='.', export_format=ExportFormat.SAVED_MODEL)

在 python 中使用图像测试 tflite 模型会返回非常好的结果(所需类接近 95%):

    import numpy as np
    from PIL import Image
    import tensorflow as tf
    
    model_file = "model.tflite"
    image_file = "my_image_name.jpg"
    
    interpreter = tf.lite.Interpreter(model_path=model_file)
    interpreter.allocate_tensors()
    
    input_details = interpreter.get_input_details()
    output_details = interpreter.get_output_details()
    
    image = Image.open(image_file)
    input_data = np.expand_dims(image, axis=0)
    
    interpreter.set_tensor(input_details[0]['index'], input_data)
    interpreter.invoke()
    output_data = interpreter.get_tensor(output_details[0]['index'])
    results = np.squeeze(output_data)
    for result in results:
        print(float(result / 255.0))
        # 0.011764705882352941 0.043137254901960784 0.9490196078431372

使用 Saved Model 格式的预测结果完全不同且错误:

    import numpy as np
    from PIL import Image
    from tensorflow.keras.models import load_model
    
    model_file = "saved_model"
    image_file = "my_image_name.jpg"
    
    model = load_model(model_file)    
    image = Image.open(image_file)
    input_tensor = np.expand_dims(image,axis=0)   
   
    predictions = model.predict(input_tensor)
    print(predictions)
    #0.0564433 0.69343865 0.25011805

当我将保存的模型与 tfjs-node 一起使用时,同样的问题。

1.) 你知道如何解决这个问题或者我可以在哪里看看吗?2.) 还有什么可能有帮助的:tensorflow 中是否有任何受支持的方式可以将 tflite 模型与 tfjs-node 一起使用?

我在许多其他事情中尝试过的事情:

  • 在创建模型之前将图像调整为所需大小以消除图像处理中的差异
  • 将 input_tensor 转换为 float32 没有任何区别 (tf.convert_to_tensor(input_tensor, dtype=tf.float32))
4

1 回答 1

0

使用保存的模型时,我们需要对模型进行归一化和调整大小。请参考https://github.com/tensorflow/examples/blob/master/tensorflow_examples/lite/model_maker/core/task/image_preprocessing.py#L62

mean_rgbstddev_rgb位于https://github.com/tensorflow/examples/blob/master/tensorflow_examples/lite/model_maker/core/task/model_spec/image_spec.py#L33 _

于 2022-01-24T21:53:13.190 回答