按照本教程,我使用 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))