import gradio as gr
import tensorflow as tf
import numpy as np
title = "Cual es el estado de animo de tu perro?"
description = """
Sube una foto de el y descubrelo!
"""
model = tf.keras.models.load_model('./dogs_emotions.h5')
class_names = ['Enojado', 'Feliz', 'Relajado', 'Triste']
def inference(imagen):
#carga del modelo
#escala la imagen a la resolucion soportada
imagen = tf.keras.preprocessing.image.smart_resize(
imagen, (32, 32)
)
# expande el array para que este en una sola dimension
img_array = tf.expand_dims(imagen, 0)
# defino las diferentes clases y se hacen las predicciones
predictions = model.predict(img_array)
score = tf.nn.softmax(predictions[0])
respuesta = "Tu Perro esta {} con un {:.2f}% de seguridad.".format(class_names[np.argmax(score)], 100 * np.max(score))
return respuesta
iface = gr.Interface(fn=inference, inputs=gr.Image(label="Imagen"), outputs=gr.Text(label="Predicción de estado de ánimo"), title=title,
description=description)
iface.launch()