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 import numpy as np # from PIL import Image, ImageOps # Load the model model = load_model("keras_model.h5", compile=False) # Load the labels class_names = open("labels.txt", "r",encoding="utf-8").readlines() def greet(img): data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32) image = Image.fromarray(img).convert('RGB') size = (224, 224) image = ImageOps.fit(image, size, Image.ANTIALIAS) image_array = np.asarray(image) normalized_image_array = (image_array.astype(np.float32) / 127.0) - 1 data[0] = normalized_image_array prediction = model.predict(data) max_index = np.argmax(prediction) # 確率が一番高いインデクスを抽出 class_name = class_names[max_index] return class_name[2:] demo = gr.Interface( fn=greet, inputs=gr.Image(sources=["webcam"], streaming=True), outputs="text", ) # demo.launch(debug=True, share=True) demo.launch()