lukelike1001's picture
updated to keras 3
dba60de verified
import gradio as gr
import numpy as np
import os
import tensorflow as tf
from tensorflow import keras
# load the pre-trained model from the appropriate file path
def predict_plant(path):
model = tf.keras.models.load_model('leaf_model.keras')
# redefine values from the model
img_height = img_width = 180
class_names = ['bear_oak', 'boxelder', 'eastern_poison_ivy',
'eastern_poison_oak', 'fragrant_sumac',
'jack_in_the_pulpit', 'poison_sumac',
'virginia_creeper', 'western_poison_ivy',
'western_poison_oak']
# load the image into a variable
img = tf.keras.utils.load_img(
path, target_size=(img_height, img_width)
)
# convert the image into a tensor and create a batch for testing
img_array = tf.keras.utils.img_to_array(img)
img_array = tf.expand_dims(img_array, 0)
# find the confidence probability for each plant
predictions = model.predict(img_array)
score = tf.nn.softmax(predictions['outputs'][0])
confidences = {class_names[i]: float(score[i]) for i in range(len(class_names))}
return confidences
# describe the model
title = "LeafTracker Interactive Model"
description = """Leaftracker is an image classification model that differentiates toxic plants from their
non-toxic look-alikes. Built on TensorFlow, this interactive model has been ported to
Hugging Face as a web application. For further documentation, check out the Github
repository at https://github.com/lukelike1001/LeafTracker, and the project's info
page at https://lukelike1001.github.io/leaf.html."""
# launch the app
app = gr.Interface(
fn=predict_plant,
inputs=gr.Image(type="filepath"),
outputs=gr.Label(num_top_classes=3),
flagging_options=["incorrect", "other"],
title=title,
description=description,
examples=[
os.path.join(os.path.dirname(__file__), "examples/000.jpg"),
os.path.join(os.path.dirname(__file__), "examples/001.jpg"),
os.path.join(os.path.dirname(__file__), "examples/002.jpg")
]
)
app.launch()