Python: cree interfaces de usuario para crear prototipos del modelo de aprendizaje automático con Gradio

Gradio es una biblioteca de Python de código abierto que le permite crear rápidamente componentes de interfaz de usuario personalizables y fáciles de usar para su modelo ML, cualquier API o cualquier función arbitraria en solo unas pocas líneas de código. Puede integrar la GUI directamente en su cuaderno de Python o puede compartir el enlace con cualquier persona.
Requisitos: 
 

 

Ejemplo : 
 

Podemos crear interfaces con Gradio usando la función gradio.Interface(). 
gradio.Interface(self, fn, entradas, salidas, ejemplos=Ninguno, live=False, 
         capture_session=False, title=Ninguno, descripción=Ninguno)
Parámetros: 
 

  • fn: (Llamable) la función para envolver una interfaz.
  • entradas: (Union[str, List[Union[str, AbstractInput]]]) un único componente de entrada de Gradio o una lista de componentes de entrada de Gradio.
  • Salidas: (Union[str, List[Union[str, AbstractOutput]]]) un único componente de salida de Gradio o una lista de componentes de salida de Gradio.
  • live: (bool) si la interfaz debe recargarse automáticamente al cambiar.
  • capture_session: (bool) si es True, captura el gráfico y la sesión predeterminados (necesario para Tensorflow 1.x)
  • title: (str) un título para la interfaz; si se proporciona, aparece encima de los componentes de entrada y salida.
  • descripción: (str) una descripción para la interfaz; si se proporciona, aparece encima de los componentes de entrada y salida.
  • ejemplos: (List[List[Any]]) entradas de muestra para la función; si se proporciona, aparece debajo de los componentes de la interfaz de usuario y se puede usar para completar la interfaz. Debe ser una lista anidada, en la que la lista exterior consta de muestras y cada lista interior consta de una entrada correspondiente a cada componente de entrada.

La interfaz de usuario para la interfaz puede generarse mediante la función gradio.Interface, launch(). 
gradio.Interface.launch(self, share=False)
Parámetros: 
 

share: (bool) - whether to create a publicly shareable link from your computer for the interface.

Hay varios componentes de entrada y salida dados para el parámetro de entrada y salida de gradio.Interface().
 

Componentes de entrada Componentes de salida
Micrófono Control deslizante de cuadro de texto Casilla de verificación Casilla de verificación Radio de grupo Imagen desplegable Sketchdown Cámara web Imagen de etiqueta de cuadro de texto Valores clave de imagen

Código: función que devuelve el factorial de un número. 
 

Python3

def factorial(integer):
    """ Returns factorial of the given integer"""
    n = int(integer)
    if n<=1:
        return 1
    fact=1
    for i in range(1, n+1):
        fact*=i
    return fact

Ahora, para envolver esta función con la interfaz de gradio, escriba el siguiente código en el mismo archivo.
 

Python3

import gradio
gradio.Interface(factorial, inputs="text", outputs="text").launch(share=True)

Cuando ejecuta las celdas de código anteriores en un cuaderno jupyter. Generará una interfaz de usuario como esta: 
 

También puede copiar el enlace y compartirlo con cualquier persona, se abrirá la misma interfaz de usuario en el navegador. Ahora, le mostraremos cómo crear una interfaz para un modelo de aprendizaje automático. 
Para la demostración, cargaremos un modelo Inception Net Image Classification previamente entrenado con tensorflow. Dado que este es un modelo de clasificación de imágenes, usaremos la interfaz de entrada de imágenes. Daremos salida a un diccionario de etiquetas y sus puntuaciones de confianza correspondientes con la interfaz de salida de etiquetas.
Código: 
 

Python3

# imported necessary libraries
import gradio as gr
import tensorflow as tf
import numpy as np
import requests
 
# loading the model
inception_net = tf.keras.applications.InceptionV3()
 
# Download human-readable labels.
response = requests.get("https://git.io/JJkYN")
labels = response.text.split("\n")
 
def classify_image(image):
    """ Returns a dictionary with key as label and values
    as the predicted confidence for that label"""
    # reshaping the image
    image = image.reshape((-1, 299, 299, 3))
    # preprocessing the image for inception_v3
    image = tf.keras.applications.inception_v3.preprocess_input(image)
    # predicting the output
    prediction = inception_net.predict(image).flatten()
    return {labels[i]: float(prediction[i]) for i in range(1000)}
 
# initializing the input component
image = gr.inputs.Image(shape = (299, 299, 3))
# initializing the output component
label = gr.outputs.Label(num_top_classes = 3)
 
# launching the interface
gr.Interface(fn = classify_image, inputs = image,
             outputs = label, capture_session = True).launch()

Cuando ejecute la celda de código anterior, generará la interfaz de usuario de esta manera: 
 

Aquí puede arrastrar y soltar la imagen en la sección izquierda de la interfaz de usuario y hacer clic en Enviar obtendrá el resultado como: 
 

Además, si copia el enlace y lo pega en su navegador, su interfaz se verá así: 
 

No es localhost, por lo que puede abrir el mismo enlace en cualquier dispositivo. 
Para obtener más información sobre los componentes de entrada y salida, consulte la documentación de Gradio .
Recurso: documentación de Gradio
 

Publicación traducida automáticamente

Artículo escrito por hritikgupta7080 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *