Estás leyendo la publicación: Implemente su modelo de clasificación de imágenes basado en aprendizaje profundo con Streamlit
Trabajar con datos es diferente de implementar un modelo de aprendizaje automático en producción. Es esencial aprender a implementar modelos de aprendizaje profundo como producciones fuera de línea en producciones en línea, pero uno de los principales problemas es el gran tamaño del modelo aprendido. Este artículo se centrará en la implementación de un modelo de aprendizaje profundo clasificador de imágenes con Streamlit. Los siguientes son los temas que se tratarán en este artículo.
Tabla de contenido
- Acerca de Streamlit
- Entrenamiento y guardado del modelo DL
- Implementación con Streamlit
Comencemos con una comprensión de alto nivel de Streamlit
Acerca de Streamlit
Streamlit es un marco de Python gratuito y de código abierto. Permite a los usuarios crear rápidamente paneles interactivos y aplicaciones web de aprendizaje automático. No es necesario ningún conocimiento previo sobre HTML, CSS y Javascript. También es compatible con la recarga en caliente, para que su aplicación pueda reemplazar la estancia mientras edita y guarda su archivo. Agregar un widget es equivalente a declarar una variable. No es necesario escribir un fondo, especificar una ruta diferente o manejar una solicitud HTTP. Fácil de implementar y administrar. Si uno conoce Python, entonces todos están equipados para usar Streamlit para crear y compartir sus aplicaciones web, en horas.
¿Está buscando un repositorio completo de bibliotecas de Python utilizadas en ciencia de datos, echa un vistazo aquí.
Entrenamiento y guardado del modelo DL
Para este artículo, utilizaremos un modelo previamente entrenado debido a las limitaciones de tiempo. El modelo clasificará las imágenes. El modelo está entrenado en Imaget Dataset con 1000 clases de etiquetas. El modelo consta de 19 capas. Estas capas se dividen en 16 capas de convolución, 3 capas totalmente conectadas, 5 capas MaxPool y 1 capa SoftMax.
El preentrenado es VGG19, que es una versión de 19.600 millones de FLops del Visual Geometry Group de Keras. El VGG es un sucesor de AlexNet. A continuación se muestra una descripción de alto nivel de la arquitectura de VGG19.
Comencemos con la importación de las bibliotecas necesarias.
desde tensorflow.keras.applications.vgg19 importar VGG19
A continuación, definiremos el modelo y guardaremos el modelo preentrenado.
clasificador = VGG19( include_top=True, weights=”imagenet”, input_tensor=Ninguno, input_shape=Ninguno, pooling=Ninguno, clases=1000, classifier_activation=’softmax’ )
clasificador.save(“clasificación_imagen.hdf5”)
Comencemos con la parte de implementación.
Implementación con Streamlit
Inicialmente, necesitamos instalar el paquete streamlit.
!pip instalar -q streamlit
Cree un archivo de aplicación y escriba todos los códigos en ese archivo. Es un script de python que se ejecutará en segundo plano de la aplicación web.
%%writefile app.py import streamlit as st import tensorflow as tf from tensorflow.keras.applications.imagenet_utils import decode_predictions import cv2 from PIL import Image, ImageOps import numpy as np @st.cache(allow_output_mutation=True) def load_model(): model=tf.keras.models.load_model(‘/content/image_classification.hdf5’) devuelve el modelo con st.spinner(‘El modelo se está cargando…’): model=load_model() st.write(“”” # Imagen Clasificación “”” ) file = st.file_uploader(“Cargar la imagen a clasificar U0001F447”, type=[“jpg”, “png”]) st.set_option(‘deprecation.showfileUploaderEncoding’, False) def upload_predict(upload_image, model): size = (180,180) image = ImageOps.fit(upload_image, size, Image.ANTIALIAS) image = np.asarray(image) img = cv2.cvtColor(imagen, cv2.COLOR_BGR2RGB) img_resize = cv2.resize(img, dsize=(224, 224),interpolation=cv2.INTER_CUBIC) img_reshape = img_resize[np.newaxis,…]
predicción = model.predict(img_reshape) pred_class=decode_predictions(prediction,top=1) devuelve pred_class si el archivo es Ninguno: st.text(“Cargue un archivo de imagen”) más: image = Image.open(file) st.image (imagen, use_column_width=True) predicciones = upload_predict(imagen, modelo) image_class = str(predicciones[0][0][1]) score=np.round(predicciones[0][0][2]) st.write(“La imagen se clasifica como”,image_class) st.write(“La puntuación de similitud es aproximada”,puntuación) print(“La imagen se clasifica como “,image_class, “con una puntuación de similitud de”,puntuación )
El “st.cache” se usa porque Streamlit proporciona un mecanismo de almacenamiento en caché. El mecanismo permite que la aplicación mantenga el rendimiento al cargar datos de Internet, procesar grandes conjuntos de datos o realizar cálculos costosos.
Una vez subida la imagen que se necesita clasificar. La imagen debe coincidir con el tamaño de la entrada del modelo Keras (224,224). Para cambiar el tamaño de la imagen usando la función de cambio de tamaño de cv abierto.
Para predecir la imagen dada como entrada usando la función de predicción de TensorFlow. Para decodificar la información de la imagen de predicción utilizando la función “decode_prediction” de la utilidad Keras imagenet. Almacene los resultados de la predicción y la puntuación en una variable y para mostrar esa información use la función de escritura de streamlit. La función de escritura es como la función de impresión de Python.
Conecte el archivo de la aplicación al servidor local. Si usa el cuaderno de investigación de Google Colab, use el siguiente comando. De lo contrario, simplemente ejecute el archivo de la aplicación.
! ejecutar streamlit app.py y npx localtunnel –puerto 8501
Este código generará un enlace. Copie y pegue el enlace o haga clic en el enlace y lo redirigirá a una página de advertencia relacionada con el phishing. Haga clic en continuar y se iniciará la aplicación web streamlit. La aplicación web se parece a esto.
Conclusión
Se necesita mucho tiempo y esfuerzo para crear un modelo de aprendizaje automático. Para mostrar los esfuerzos al mundo, es necesario implementar el modelo y demostrar sus capacidades. Streamlit es una plataforma poderosa y fácil de usar que le permite lograr esto incluso si carece de la tecnología interna necesaria o la experiencia de frontend. Con este artículo, hemos entendido el uso de Streamlit en la implementación de un modelo de aprendizaje profundo.