alainno / SocialDistanceDetector

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

License:GNU General Public License v3.0


Languages

Language:Jupyter Notebook 99.8%Language:Python 0.2%