运用预训练 Keras 模型来处理图像分类请求,学习如何使用从 Keras 创建 SavedModel
前置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的区别,还是需要注意学习一下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!