首页 > 其他分享 >运用预训练 Keras 模型来处理图像分类请求,学习如何使用从 Keras 创建 SavedModel

运用预训练 Keras 模型来处理图像分类请求,学习如何使用从 Keras 创建 SavedModel

时间:2024-04-09 18:45:37浏览次数:24  
标签:img keras Keras SavedModel 图像 tf import model save

前置import

'''
import os
import tempfile

from matplotlib import pyplot as plt
import numpy as np
import tensorflow as tf

tmpdir = tempfile.mkdtemp()
'''

介绍如何用keras检测自己找的图片

'''
file = tf.keras.utils.get_file(
"ocellated-electric-ray.jpg",#检测图片的名字
"https://img.diveadvisor.com/marine-life/ocellated-electric-ray.jpg") #这个是扫描图像的网络地址,可以自己从网络上找自己想检测的图片
img = tf.keras.utils.load_img(file, target_size=[224, 224])
plt.imshow(img)
plt.axis('off')
x = tf.keras.utils.img_to_array(img)
x = tf.keras.applications.mobilenet.preprocess_input(
x[tf.newaxis,...])

labels_path = tf.keras.utils.get_file(
'ImageNetLabels.txt',
'https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt')#文本库,模型里面可以识别出来的物体的名字,都在这里面了,可以根据这里面有的名字找检测图片
imagenet_labels = np.array(open(labels_path).read().splitlines())
pretrained_model = tf.keras.applications.MobileNet()#引入加载keras的模型
result_before_save = pretrained_model(x)

decoded = imagenet_labels[np.argsort(result_before_save)[0,::-1][:5]+1]

print("Result before saving:\n", decoded)#输出图片扫描出来的物体文本
'''

如何创建SavedModel格式文件并应用

'''

mobilenet_save_path = os.path.join(tmpdir, "mobilenet/1/")
tf.saved_model.save(pretrained_model, mobilenet_save_path)#模型的保存路径

loaded = tf.saved_model.load(mobilenet_save_path)
print(list(loaded.signatures.keys())) # ["serving_default"],
infer = loaded.signatures["serving_default"]
print(infer.structured_outputs)#查看模型的服务模式

labeling = infer(tf.constant(x))

print(pretrained_model.summary())但是之后输出summary发现是有predictions的,这就奇怪了。

[pretrained_model.output_names[0]]#加载获取模型的输出,按照官方文档看是这样,但是却报错了, labeling = infer(tf.constant(x))[pretrained_model.output_names[0]]KeyError: 'predictions'

decoded = imagenet_labels[np.argsort(labeling)[0,::-1][:5]+1]

print("Result after saving and loading:\n", decoded)#正常来说后面应该会正常输出,

'''
参考文章:https://tensorflow.google.cn/guide/saved_model?hl=zh-cn
https://blog.csdn.net/qq_37388085/article/details/115432865
后面了解到tf.saved_model和model.save的区别,还是需要注意学习一下

标签:img,keras,Keras,SavedModel,图像,tf,import,model,save
From: https://www.cnblogs.com/Noah5413/p/18124555

相关文章