Proyecto Final de fin de curso de Python para Ciencia de Datos del Diplomado de Inteligencia Artificial de la PUCP.
Puedes ver la versión usando YOLOv4 en el siguiente enlace: MaskDetector-YoloV4
Este proyecto contiene una implementación para detectar en una imagen o un video qué personas están usando una mascarilla que le ayude a prevenir contagiarse del COVID-19.
El proceso general para obtener las detecciones de rostros con o sin mascarillas es el siguiente:
- Leer la imagen o frame de video.
- Aplicar modelo CNN_Face_Detector para detectar todos los rostros en la imagen.
- Aplicar modelo CNN_Mask_Class para determinar si el rostro tiene o no mascarilla.
- Insertar recuadro clasificador en rostro de imagen original.
- Repetir el proceso para todos los rostros en la imagen.
Conoce más sobre la arquitectura, el funcionamiento y los resultados obtenidos del proyecto en la siguiente presentación.
Este proyecto inicialmente ha sido diseñado para poder ser ejecutado en Colab y para una optimización se activó el entorno de ejecución en GPU. Colab ya trae instaladas muchas de las librerías utilizadas en este proyecto, solo fue necesario instalar adicionalmente:
- mtcnn (Detector de rostros: Multi-Task Cascaded Convolutional Neural Network)
!pip install mtcnn
📌 MODELOS:
-
models/mask_net.hdf5 : Model CNN entrenado desde cero con Keras.
-
models/best_model_conv_ft2.model : Modelo CNN pre-entrenado de ResNet18 en Pytorch, del cual se mantuvo la estructura de la red y se volvieron a entrenar los pesos en todas las capas.
📌 UTILITARIOS:
-
utils/bounding_box.py : Utilitario para incrementar en un porcentaje dato el cuadro delimitador de un rostro en una imagen.
-
utils/detect_faces.py : Utilitario para detectar las caras en las imágenes o frames de videos.
-
utils/predictor_keras.py : Utilitario para generar las predicciones con el modelo entrenado de Keras.
-
utils/predictor_pytorch.py : Utilitario para generar las predicciones con el modelo entrenado con Pytorch.
📌 ARCHIVO PRINCIPAL:
- MaskDetector.ipynb : Notebook con las pruebas end-to-end para generar sobre imágenes y videos las predicciones de si una persona está usando o no una mascarilla.
📌 ARCHIVOS MULTIMEDIA:
Básicamente puedes cargar imágenes o videos propios, pero por defecto puedes utilizar las imágenes presentes en la carpeta "multimedia/".
- Levantar el notebook principal en Colab
- Cargar los archivos necesarios al notebook
- Validar que el Tipo de Entorno de Ejecución está en GPU
- Ejecutar todo el notebook
-
notebooks/CNN_Zero_ProyectoFinal.ipynb : Notebook para generar el modelo entrenado desde cero con Keras para predecir si un rostro en una imagen tiene una mascarilla o no.
-
notebooks/VC_MaskDetector_Transfer Learning.ipynb : Notebook con Transfer Learning del modelo pre-entrenado de ResNet18 con Pytorch para predecir si un rostro en una imagen tiene una mascarilla o no.
-
dataset/ : Este folder contiene los datasets utilizados para entrenar y validar los modelos clasificadores del uso de la mascarilla. Repositorio Fuente: facial_mask_classifier (https://bit.ly/3beau7v)
Face Detection with Deep Learning using Multi Tasked Cascased CNN: https://towardsdatascience.com/face-detection-with-deep-learning-using-multi-tasked-cascased-cnn-8721435531d5
Basic classification: Classify images of clothing: https://www.tensorflow.org/tutorials/keras/classification
Train and evaluate with Keras: https://www.tensorflow.org/guide/keras/train_and_evaluate
Image classification from scratch in keras: https://towardsdatascience.com/image-detection-from-scratch-in-keras-f314872006c9
Transfer Learning for Computer Vision Tutorial: https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html
- Jorge Rodríguez Castillo - Linkedin - Github
- Keven Fernández Carrillo - Linkedin - Github
- David Fosca Gamarra - Linkedin - Github
Este proyecto está bajo la Licencia GNU General Public License v3.0 - mira el archivo LICENSE.md para más detalles.