Proyecto final para el Bootcamp en Visión Computacional para los Objetivos de Desarrollo Sostenible Hackcities
- El Backend del proyecto final de HackCities fue desarrollado en Pycharm y Colaboratory utilizando librerías de Procesamiento de Imágenes y Aprendizaje Profundo.
Los accidentes de tránsito son un grave problema en nuestro país, y aunque los efectos del alcohol y el cambio de carril sean las principales causas de dichos accidentes, la tercera más relevante es la somnolencia de los conductores, problema que puede ser atacado con una solución que implemente visión computacional en dispositivos de bajo costo.
Dentro de los Objetivos de Desarrollo Sostenible, este proyecto se concentra principalmente en 2: ODS 3 "Salud y bienestar", buscando mejorar la seguridad vial de peatones y conductores; y el ODS 11 "Industria, innovación e infraestructura", buscando proponer soluciones innovadoras en nuestro entorno que puedan tener un impacto económico positivo.
- Arduino mega
- 2 leds (rojo y verde)
- Motor de 5Vdc
- Cables
- Numpy
- Pandas
- OpenCV
- TensorFlow
- Keras
- face_recognition
- Extracción del área de los ojos para una clasificación más precisa
- Modelo de Redes Neuronales Convolucionales de varias capas con una precisión alta (>90%)
- Clasificación en tiempo real de somnolencia con etiquetas
- Adición de un prototipo que alerta de manera sensorial, auditiva y visual en el modelo en vivo en caso de somnolencia
-
Es importante tener instaladas, fuera de las librerías típicas de Ciencia de Datos (Numpy, MatPlotLib, Pandas), librerías como OpenCV, TensorFlow, Keras, face_recognition, playsound (A través del comando pip)
-
Se recomienda tener la cámara web activa en un entorno Desktop
-
Se recomienda tener la GPU activa (En Colaboratory)
-
En algunos sistemas operativos puede ser necesario instalar homebrew, cmake, dlib antes de instalar face_recognition, OpenCV y Playsound
- Para la aplicación en vivo (Aplicacion del modelo final con la cámara web) se recomienda un IDE de escritorio (Pycharm, Spyder) corriendo un entorno virtual con todas las librerías necesarias
En este caso se establecieron 9600 baudios para establecer una comunicación Serial y de igual manera, se determinaron los siguientes comandos para el funcionamiento de las alertas:
- Para el encendido del LED Rojo y el motor, debemos mandar por Serial el caracter 'R'.
- Para el encendido del LED Verde, debemos mandar por Serial 'N'.
- Se le configura En ambos LN & CR para modificar la funcionalidad del Hardware con el teclado.
- Israel Algodón (25 %)
- Bruno Bustos (25 %)
- Tracy Loza (50 %)
-
Funciones de detección adaptadas de: https://towardsdatascience.com/drowsiness-detection-using-convolutional-neural-networks-face-recognition-and-tensorflow-56cdfc8315ad
-
GitHub del autor del artículo: https://github.com/dustin-stew
-
Estructura de las Redes Neuronales Convolucionales inspiradas de: https://github.com/EdwinTSalcedo/Bootcamp-Computer-Vision-for-the-SDGs/blob/master/notebooks/Laboratorio%2011_%20Redes%20Neuronales%20Convolucionales.ipynb
-
Base para el uso de imágenes en Colab a través de OpenCV: https://github.com/EdwinTSalcedo/Bootcamp-Computer-Vision-for-the-SDGs/blob/087b9e0474e5497a03c6c8073e79721d24da3ce1/notebooks/Laboratorio%201_%20Introducci%C3%B3n%20a%20Colab,%20OpenCV%20y%20Numpy.ipynb
-
Github del autor de los últimos 2 Notebooks: https://github.com/EdwinTSalcedo
-
Métricas del modelo decididas a partir de: https://towardsdatascience.com/a-look-at-precision-recall-and-f1-score-36b5fd0dd3ec
-
Objetivos de desarrollo sostenible decididos a partir de la información proveída por Natalia Guerreros Lima en: https://github.com/EdwinTSalcedo/Bootcamp-Computer-Vision-for-the-SDGs/blob/f2dd3b0eb4edb18d308a472bb5904c74b8eefe09/slides/ODS%20primera%20parte.pdf
Secciones adicionales (Los resultados experimentales son más profundizados en el video y en nuestras imágenes importantes)
Garcés M., Salgado J., Cruz J., Cañon W. (2015), Sistemas de Detección de Somnolencia en Conductores: inicio, desarrollo y futuro. https://dialnet.unirioja.es/descarga/articulo/5432283.pdf Gupta, V. (22 de octubre de 2018). Learn OpenCV. https://www.learnopencv.com/face-detection-opencv-dlib-and-deep-learning-c-python/ Ramzan M, Ullah H, Mahmood S., Amina I., Ilyas M. (1 mayo 2019), A Survey on State-of-the-Art Drowsiness Detection Techniques. https://ieeexplore.ieee.org/abstract/document/8704263 Sanchez E., Limaquispe M., (junio 2018), Sistema de Detección de somnolencia mediante Inteligencia Artificial en Conductores de Vehículos para Alertar la Ocurrencia de Accidentes de Tránsito. https://repositorio.unh.edu.pe/bitstream/handle/UNH/2327/TESIS-2018-INGENIERIA%20ELECTRONICA-LIMAQUISPE%20MIGUEL.pdf?sequence=1&isAllowed=y
Los pasos a seguir durante este proyecto fueron inspirados en: A How-to-Model Guide for Neuroscience, combinando con funcionalidades de un sistema completo aprendidas durante el presente Bootcamp, ya que:
- Se definió un objetivo
- Se revisó la literatura
- Se determinaron los ingredientes básicos de un posible modelo (Explorando las alternativas aprendidas durante el bootcamp)
- Se definió una posible hipótesis (Proponiendo encontrar un modelo que supere el 90% de accuracy)
Dentro de la implementación del modelo:
- Se seleccionaron las herramientas a ser implementadas, donde se consideraron enfoques alternativos
- Se planificó el modelo, la arquitectura y la aplicación en vivo utilizados durante el proyecto
- Se implementó el modelo en Colaboratory de Google y Jupyter Notebooks
- Se completó el modelo modificando posibles hiperparámetros
- Se testeó y evaluó el modelo en vivo alcanzando muy buenas métricas y combinandolo con un sistema de retroalimentación multisensorial
Para finalmente:
- Publicarlo en este Bootcamp
The MIT License
Copyright (c) 2022 SplitVision
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.