from keras.models import load_model # TensorFlow is required for Keras to work
from PIL import Image, ImageOps # Install pillow instead of PIL
import numpy as np
import gradio as gr
def image_classifier(image):
Disable scientific notation for clarity
np.set_printoptions(suppress=True)
Load the model
model = load_model("keras_model.h5", compile=False)
Load the labels
class_names = open("labels.txt", "r").readlines()
Create the array of the right shape to feed into the keras model
The 'length' or number of images you can put into the array is
determined by the first position in the shape tuple, in this case 1
data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)
Replace this with the path to your image
image = Image.fromarray(image.astype("uint8"),"RGB")
resizing the image to be at least 224x224 and then cropping from the center
size = (224, 224)
image = ImageOps.fit(image, size, Image.Resampling.LANCZOS)
turn the image into a numpy array
image_array = np.asarray(image)
normalized_image_array = (image_array.astype(np.float32) / 127.5) - 1
data[0] = normalized_image_array
Predicts the model
prediction = model.predict(data)
index = np.argmax(prediction)
class_name = class_names[index]
confidence_score = prediction[0][index]
Print prediction and confidence score
result = class_name[2:]
return result
print("Confidence Score:", confidence_score)
iface = gr.Interface(
fn=image_classifier,
inputs=gr.Image(), # 画像を入力として受け取ります。
outputs="text" # 結果をテキストで表示します。
)
#インターフェースを起動します。
iface.launch()