Skip to content

This repository tries to solve the problem with social distance that is require to prevent from COVID-19

License

Notifications You must be signed in to change notification settings

jjrodcast/SocialDistanceDetector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Social Distance Detector

Proyecto Final de fin de curso de Desarrollo de Aplicaciones con Visión Artificial del Diplomado de Inteligencia Artificial de la PUCP.

Objetivo 🚀

Este proyecto contiene una implementación para detectar en una imagen o en un video las personas que cumplen o no el distanciamiento social necesario que ayude a reducir el incremento de contagios por COVID-19.

Resultado

Más Resultados aquí.

También puedes ver el video resultante en el siguiente link: https://www.youtube.com/watch?v=XxR2PXG9Zgk

Procedimiento 🛠️

El proceso general para detectar el cumplimiento del distanciamiento social es el siguiente:

  1. Leer un frame del video.
  2. Aplicar modelo CNN-Yolov3 para detectar los bounding box de las personas.
  3. Obtener los puntos de interés (puntos centro-inferior) a partir de los bounding boxes generados.
  4. Mapear los puntos de interés hacia la vista Bird's Eye utilizando la matriz de transformación de perpectiva pre-calculada. Se considera estos puntos puestos que son los que nos brindan la referencia de la ubicación de las personas desde una perspectiva top-down.
  5. Calcular todas las distancias entre los puntos transformados para determinar en base a un threshold definido las personas que cumplen una distancia mínima requerida o no.
  6. Mostrar los resultados, se colorean de ROJO los que NO CUMPLEN, y en su defecto de VERDE a los que SÍ CUMPLEN.
  7. Repetir el proceso para todos los frames en el video.

Pre-Requisitos 📋

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 descargar:

  • yolov3.cfg
  • coco.names
  • yolov3.weights

Nota: La descarga de estos archivos en la siguiente ruta son opcionales. También se encuentran en la carpeta "models/" de este repositorio.

!wget "https://raw.githubusercontent.com/pjreddie/darknet/master/cfg/yolov3.cfg"
!wget "https://raw.githubusercontent.com/pjreddie/darknet/master/data/coco.names"
!wget "https://pjreddie.com/media/files/yolov3.weights"

Archivos necesarios para la ejecución 🛠️

📌 MODELOS:

  • _models/ : Carpeta con los archivos necesarios para levantar el modelo CNN-YOLO y realizar la detección de personas.

    • yolov3.cfg : Configuración del Modelo de CNN-YOLO para la detección de objetos

    • coco.names : Clases de objetos que detecta la red neuronal

    • yolov3.weights : Pesos de la red neuronal

📌 UTILITARIOS:

  • utils/functions.py : Utilitario con las funciones utilizadas durante todo el proceso central.

  • utils/view.py : Utilitario con las funciones gráficas utilizadas para la generación de las vistas.

📌 ARCHIVO PRINCIPAL:

  • Social Distance Detector.ipynb : Notebook con el desarollo y las pruebas end-to-end para detectar el cumplimiento del distanciamiento social

📌 ARCHIVOS MULTIMEDIA:

  • multimedia/calibration_frame.jpg : Imagen

  • multimedia/TownCentre-test.mp4 : Video

Proceso de Ejecución ⚙️

  • 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

Documentación de apoyo 📚

Autores ✒️

Licencia 📄

Este proyecto está bajo la Licencia GNU General Public License v3.0 - mira el archivo LICENSE.md para más detalles.

About

This repository tries to solve the problem with social distance that is require to prevent from COVID-19

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •