Este post fue hecho público como parte del Blogatón de ciencia de datos.
Introducción
Aplicaciones
- Acreditación facial – Las cámaras de los teléfonos usan el acreditación facial para desbloquear el teléfono. Los sistemas de acreditación facial podrían implementarse en las puertas de entrada de los edificios de oficinas.
- Clasificación de imágenes – Se utiliza para distinguir entre varios conjuntos de imágenes. Industrias como el automóvil, el comercio minorista, los juegos, etc. lo usan para múltiples propósitos.
- Acreditación de imagen – Las compañías de seguridad usan el acreditación de imágenes para detectar varias cosas en las maletas en los aeropuertos, escáneres de imágenes, etc.
Pasos para crear la aplicación
- Obtener los datos
- Preparación de datos
- Modelado de datos
- Diseñar la interfaz de usuario
- Integrar la interfaz de usuario y el modelado
Obtener los datos
Los datos estarían en forma de imágenes, dicho de otra forma, fotografías. Las imágenes son una matriz de píxeles. Se requerirían imágenes en un número mayor para construir toda la aplicación de extremo a extremo. Los datos estarán disponibles dentro de la propia organización o deberán obtenerse de Internet abierta. Dependiendo del tipo de aplicación, el tipo de datos que se requieren variará. Si se trata de una aplicación de acreditación facial, inclusive podemos crear datos a través de la recopilación de imágenes de varias personas. Si las imágenes se van a obtener de Internet abierto, podemos raspar las imágenes de la web.
Las imágenes capturadas deben ser de alta resoluciónLa "resolución" se refiere a la capacidad de tomar decisiones firmes y cumplir con los objetivos establecidos. En contextos personales y profesionales, implica definir metas claras y desarrollar un plan de acción para alcanzarlas. La resolución es fundamental para el crecimiento personal y el éxito en diversas áreas de la vida, ya que permite superar obstáculos y mantener el enfoque en lo que realmente importa.... y pueden estar ligeramente distorsionadas. Puede haber cierta cantidad de ruido presente en las imágenes para que el algoritmo pueda categorizar las imágenes correctamente.
Ejemplo de web scraping de imágenes en una página web –
from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument('--ignore-certificate-errors') options.add_argument("--test-type") options.binary_location = "/usr/bin/chromium" driver = webdriver.Chrome(chrome_options=options) driver.get('https://imgur.com/') images = driver.find_elements_by_tag_name('img') for image in images: print(image.get_attribute('src')) driver.close()
Preparación de datos
- Es necesario cambiar el tamaño de las imágenes para que todas las imágenes tengan el mismo tamaño
- Las imágenes pueden ser nítidas con una resolución alta, así como un poco borrosas y ruidosas.
- Las operaciones de transformación como traslación, rotación y escala deben aplicarse para que las imágenes capturadas estén presentes en todos los ángulos.
- Las imágenes pueden distorsionarse o cortarse para que se generalicen bien.
- Introducir ruido en las imágenes si no está presente
- Una distribución uniforme del número de imágenes debe presentarse en cada una de las clases.
– Autor de Sapiens
Código para cambiar el tamaño de una imagen
img = cv2.imread('/home/img/python.png', cv2.IMREAD_UNCHANGED) print('Original Dimensions : ',img.shape) scale_percent = 60 width = int(img.shape[1] * scale_percent / 100) height = int(img.shape[0] * scale_percent / 100) dim = (width, height) # resize image resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
Modelado de datos
Una vez que se hayan obtenido todas las imágenes, colóquelas en la carpeta adecuada para cada una de las clases. Asegúrese de que haya una distribución adecuada de imágenes para el entrenamientoEl entrenamiento es un proceso sistemático diseñado para mejorar habilidades, conocimientos o capacidades físicas. Se aplica en diversas áreas, como el deporte, la educación y el desarrollo profesional. Un programa de entrenamiento efectivo incluye la planificación de objetivos, la práctica regular y la evaluación del progreso. La adaptación a las necesidades individuales y la motivación son factores clave para lograr resultados exitosos y sostenibles en cualquier disciplina...., la validación y los conjuntos de datos de prueba. Para la clasificación y el acreditación de imágenes tendremos que usar redes neuronales. La arquitectura de red neuronal convolucionalLas redes neuronales convolucionales (CNN) son un tipo de arquitectura de red neuronal diseñadas especialmente para el procesamiento de datos con una estructura de cuadrícula, como imágenes. Utilizan capas de convolución para extraer características jerárquicas, lo que las hace especialmente efectivas en tareas de reconocimiento de patrones y clasificación. Gracias a su capacidad para aprender de grandes volúmenes de datos, las CNN han revolucionado campos como la visión por computadora... se adapta mejor a las imágenes cuando trabajan con matrices.
Las redes neuronales convolucionales disponen diferentes capas que ayudan en las operaciones matemáticas que se realizan en las imágenes. Las capas incluyen la capa de convolución, la capa de agrupación, la capa de normalizaciónLa normalización es un proceso fundamental en diversas disciplinas, que busca establecer estándares y criterios uniformes para mejorar la calidad y la eficiencia. En contextos como la ingeniería, la educación y la administración, la normalización facilita la comparación, la interoperabilidad y la comprensión mutua. Al implementar normas, se promueve la cohesión y se optimizan recursos, lo que contribuye al desarrollo sostenible y a la mejora continua de los procesos.... por lotes, las funciones de activación y las capas totalmente conectadas. El aprendizaje de transferencia le brinda la capacidad de usar las arquitecturas de modelo de red previamente entrenadas que funcionan bien con las imágenes de conjuntos de datos estándar. Por lo tanto empiece por escribir su propia red, pero observará que las redes previamente entrenadas le darán un rendimiento mucho mejor.
Comience con algunos de los modelos básicos previamente entrenados como:
- VGG16
- Comienzo
- Xception
- MobileNet
- ResNet50
Puede utilizar las bibliotecas de Tensorflow o Keras para utilizar estos modelos que disponen sus implementaciones dentro de la biblioteca. Esto le facilitará cambiar los parámetrosLos "parámetros" son variables o criterios que se utilizan para definir, medir o evaluar un fenómeno o sistema. En diversos campos como la estadística, la informática y la investigación científica, los parámetros son fundamentales para establecer normas y estándares que guían el análisis y la interpretación de datos. Su adecuada selección y manejo son cruciales para obtener resultados precisos y relevantes en cualquier estudio o proyecto.... de las diferentes capas de la arquitectura. Puede evitar el ajuste de hiperparámetros para impulsar el rendimiento. Mientras entrena los modelos, asegúrese de guardar los valores de los coeficientes o los pesos de los modelos. Estos valores que guarde se pueden utilizar para predecir las imágenes futuras que proporcionará a su aplicación.
Código de modelo VGG16
image_size=224 from keras.applications import VGG16 from keras import models from keras import layers from keras import optimizers #Load the VGG model vgg_conv = VGG16(weights="imagenet", include_top=False, input_shape=(224, 224, 3)) for layer in vgg_conv.layers[:-4]: layer.trainable = False for layer in vgg_conv.layers: print(layer, layer.trainable) model = models.Sequential() # Add the vgg convolutional base model model.add(vgg_conv) # Add new layers model.add(layers.Flatten()) model.add(layers.Dense(1024, activation='relu')) model.add(layers.Dropout(0.5)) model.add(layers.Dense(29, activation='softmax')) # Show a summary of the model. Check the number of trainable parameters model.summary()
La biblioteca de Keras le brinda una manera fácil de guardar los coeficientes del modelo usando:
model.save('filename.h5')
Diseñar la interfaz de usuario
Una vez que el modelo está listo para utilizar, debe trabajar en la interfaz de usuario. Si está diseñando una aplicación de Android, puede diseñar la interfaz de usuario con la ayuda de Kotlin o Flutter. La interfaz de usuario debe ser fácil de leer e interpretar. Debe diseñarse de tal manera que cumpla con el fin principal de la aplicación.
Si se va a diseñar una aplicación web, Flask o Django podrían usarse para el mismo propósito. La GUI podría diseñarse usando bibliotecas de Python como Tkinter, etc.
Integrar la interfaz de usuario y el modelado
Para las aplicaciones de Android, Flutter le posibilita integrar sus modelos de clasificación con la ayuda de una biblioteca llamada Tensorflow Lite. La implementación de tensorflow lite solo necesita dos archivos para la clasificación de la imagen, dicho de otra forma, el archivo de texto de etiquetas de clase y el archivo de coeficientes o pesos del modelo. Una vez que estos dos archivos se colocan en la estructura de carpetas, la aplicación de Android estará completa y lista para ser probada. El widget de la cámara que se crea con Flutter se puede usar para tomar la imagen de entrada.
Código para incluir los dos archivos –
loadModel() async { await Tflite.loadModel( model: "assets/model_unquant.tflite", labels: "assets/labels.txt", ); }
Aquí, el archivo .tflite es el archivo de coeficientes que se crea a partir del modelo y tags.txt son los nombres de las clases de imágenes separados por una nueva línea. Incruste esto en la estructura de Android.
Para las aplicaciones web, Flask le posibilita integrar la biblioteca de Tensorflow y le posibilita utilizar los pesos del modelo para hacer el tipo correcto de predicción en la imagen de entrada.
Siguiendo este procedimiento, paso a paso, podrá construir su propio modelo de clasificación de inmediato.