Este proyecto se enfoca en desarrollar un sistema que detecte si una persona en una imagen es menor de edad. El sistema se implementa utilizando dos modelos de IA: uno entrenado desde cero y otro utilizando MobileNetV2 mediante transferencia de conocimiento. Los contenedores Docker se utilizan para orquestar los diferentes servicios.
- api-gateway: Servicio para manejar las solicitudes de los usuarios y redirigirlas a los otros servicios.
- ia_container: Servicio que contiene la lógica de procesamiento de imágenes y detección de rostros.
- shared: Volumen compartido para almacenar imágenes procesadas.
Siga los pasos a continuación para configurar y ejecutar el proyecto:
- Clonar el repositorio
git clone https://github.com/jesusdomingochisvert/Final_Project.git
. - Construir y ejecutar los contenedores Docker utilizando docker-compose
docker-compose up --build
. - La conexion y uso del servicio se realizaria atraves de la direccion web http://localhost:5000/.
El modelo entrenado desde cero utiliza una arquitectura de red neuronal convolucional (CNN) con múltiples capas convolucionales, de pooling y densas.
MobileNetV2 se utiliza como base para el modelo mediante transferencia de conocimiento. Este modelo congela las capas del modelo base inicialmente y luego descongela las capas superiores para un ajuste fino.
El proyecto se compone de dos contenedores Docker:
Este contenedor expone públicamente el API para los clientes y enruta las peticiones al "IA Container". Recibe una imagen, la envía al "IA Container" y devuelve la imagen procesada.
Este contenedor procesa las imágenes para detectar rostros y edades, pixelando los rostros de menores de edad y generando un log con detalles de las peticiones y el procesamiento.
- IA Caras: Encargada de detectar las caras en una foto usando Yolov8. Más información en: ultralytics.
- IA Menor Edad: Desarrollada desde cero para determinar si un rostro es de una persona menor de 18 años usando datos de entrenamiento de Kaggle.
- Entrada de imagen: 200x200.
- Cuatro bloques convolucionales con filtros y capas específicas.
- Doce modelos diferentes probados con distintas configuraciones.
- Gráficas y análisis para seleccionar el mejor modelo y ajustar el umbral adecuado.
- Implementación de transferencia de conocimiento con MobileNetV2.