運用預訓練 Keras 模型來處理影像分類請求,學習如何使用從 Keras 建立 SavedModel

敲码中....请耐心等待發表於2024-04-09

前置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的區別,還是需要注意學習一下

相關文章