El sitio web de la UCLM utiliza cookies propias y de terceros con fines técnicos y de análisis, pero no recaba ni cede datos de carácter personal de los usuarios. Sin embargo, puede haber enlaces a sitios web de terceros, con políticas de cookies distintas a la de la UCLM, que usted podrá aceptar o no cuando acceda a ellos.

Puede obtener más información en la Política de cookies. Aceptar

Aprendizaje automático aplicado a la regulación inteligente del tráfico en ciudad

Realizado por Iván Redondo Martínez. Curso 2019/2020.

Resumen

El objetivo de este proyecto es la propuesta de un dispositivo que, junto con el uso de redes neuronales intente solventar los actuales problemas de tráfico existentes en las ciudades. De manera que se pueda agilizar tanto el tráfico de vehículos como el flujo de peatones, sin tiempos de espera innecesarios.Para ello, se hace uso de la placa Coral Dev Board que contiene el novedoso chip de procesamiento de tensores de Google, EdgeTPU, que es capaz de acelerar enormemente la potencia de procesamiento de las redes neuronales. De manera que, permite la captura, detección y clasificación de imágenes en tiempo real.

Entrenando adecuadamente un modelo (red neuronal) que este optimizado para esta placa, y con la programación necesaria (en Python) para explotar todo el potencial de la información procesada por el modelo, es posible hacer un dispositivo que controle un semáforo, de manera que sea capaz de distinguir entre peatones y vehículos, reaccionando de manera adecuada ante las diferentes situaciones

Esta distinción de objetos permite que un semáforo permanezca en rojo solo cuando haya peatones esperando para cruzar un paso de cebra, permaneciendo el resto del tiempo en verde, agilizando el tráfico en ciudades y reduciendo la contaminación debida al tiempo extra que los coches permanecen en espera en los semáforos.

También permite implementar características adicionales como, por ejemplo, la detección de vehículos que se saltan un semáforo y el envío de la captura de la infracción a una base de datos.

Motivación

Existen muy pocas soluciones comerciales dedicadas a la regulación inteligente del tráfico y, las existentes son muy voluminosas y caras.Es por ello que el desarrollo de este proyecto viene motivado en gran medida por ofrecer un sistema barato, poco voluminoso, de forma que tenga poco impacto visual en la ciudad y, de bajo consumo energético, el cual haga uso de las redes neuronales para la administración del tráfico en tiempo real. De manera que, se controlen los estados de los semáforos en función de las imágenes capturadas por una cámara.

Objetivos

Para llevar al cabo este proyecto se definen los siguientes proyectos:

  • Detección de personas a través de redes neuronales convolucionales.
  • Detección de vehículos a través de redes neuronales convolucionales.
  • Conocimiento y cambio del estado del semáforo (Rojo-Amarillo-Verde).
  • Desarrollo de un dispositivo de bajo consumo, barato y de volumen reducido para el control de semáforos mediante visión artificial.

Desarrollo

Para la creación de este sistema se ha optado por el uso de una placa de desarrollo Coral Dev Board sobre otras opciones con coprocesadores de redes neuronales como puede ser la placa RockPi N10, debido a que es la más eficiente del mercado en la actualidad y, especialmente, por la gran cantidad de documentación de la que dispone en Internet. Además, su diseño en formato Raspberry Pi, permite que sea compatible con una gran cantidad de periféricos, librerías y otros dispositivos. También, tiene un reducido tamaño, mucho más pequeño que otros dispositivos como, por ejemplo, NVIDIA Jetson Nano.

Para acompañar a esta placa se ha elegido el módulo Coral Camera para la captura de imágenes, ya que su diseño permite una integración completa con la placa, una alta tasa de captura de fotogramas, una gran calidad de imagen y, un tamaño contenido, además de diferentes funciones de asistencia a la captura y procesamiento de las imágenes como, por ejemplo, autoenfoque.

Con los componentes elegidos, se procedió a instalar el sistema operativo Mendel OS en la placa y se configuran sus diferentes aspectos como la red WiFi o los programas necesarios para su correcto funcionamiento.

Una vez configurada la placa y realizadas las conexiones oportunas, se programa la lógica del sistema. En la siguiente figura se puede el funcionamiento del sistema de forma general.

 

Adicionalmente, con motivo de reducir el número de cámaras necesarias para el correcto funcionamiento del sistema, se creó un modelo 3D.De manera que, con la ayuda de este, se determinará cual es la mejor posición y ángulo de visión para que con solo una cámara se pueda realizar la función de detección tanto de vehículos como de peatones.Tras varias pruebas, se determinó que la mejor posición para la cámara, cuyo campo de visión es de 84º, era en lo alto del mástil del semáforo con una inclinación en el eje horizontal de 46º y de 3º en eje vertical.

 

Finalmente, se desarrolló un pequeño circuito de pruebas, buscando evitar el uso de relés y de componentes de alto consumo que no pueda alimentar la placa por si misma. Es por ello, que se optó por el uso de LEDs que funcionaran a máximo brillo para tener una mejor visibilidad. A continuación, puede observarse el circuito diseñado.

Resultados

Para obtener información de lo que ocurre dentro del código se optó por imprimir en cada ciclo: el estado del módulo, si se detectan personas, si se detectan vehículos y el valor del contador. Los resultados obtenidos por la aplicación fueron bastante satisfactorios. Según lo comprobado con el circuito experimental que ha sido usado en las diferentes pruebas se vió que:

  • Cuando se ejecuta el sistema y no detecta peatones, el semáforo se establece en verde (estado 0), y el contador en 500 (5s*100fps aproximados de la tasa de captura de la cámara). Además, como se inicializa tanto los peatones como vehículos en cero y no se ha detectado nada aun, los resultados para estas dos variables siguen siendo cero.
  • Cuando se le muestra a la cámara una persona, entonces detecta que hay un peatón, y por tanto al ser solo uno el peatón detectado, el programa pasa al estado 3 (Espera) sin alterar el color del semáforo. En dicho estado, se vuelve a comparar la cantidad de peatones que son detectados. Como en este caso sigue habiendo uno solamente, el programa resta unidades al contador.
  • Cuando el contador llega a -1 el programa pasa al estado 1, y el semáforo se pone en amarillo. Este estado permanecerá por tres segundos antes de pasar al estado 2, en el cual el semáforo se pone en rojo.
  • Cuando al sistema se le muestra más de dos peatones, entonces éste pasa directamente al estado 1 (Amarillo). Y tras tres segundos de espera, pasa al estado 2 (Rojo).
  • Si mientras el sistema está en estado 2 (Rojo) se detecta un vehículo, el sistema lo interpreta como una infracción y realiza una captura del vehículo, la cual envía a una base de datos, que en este caso es un correo electrónico asignado para reportes.
  •  

Conclusiones

En este proyecto se pretendía investigar y aprender cómo funcionan las redes neuronales y aplicar estos conocimientos para desarrollar una aplicación capaz de regular de forma eficiente el tráfico.Estos objetivos han sido cumplidos mayoritariamente, ya que se ha logrado comprender el funcionamiento interno de las redes neuronales, tanto convolucionales, como perceptrones multicapa, así como todos los procesos que se llevan al cabo para el reentrenamiento. Por lo que se pueden sacar, a rasgos generales, dos conclusiones:

  • Se ha logrado una aplicación con un funcionamiento satisfactorio, que cumple en gran medida con los objetivos marcados, a excepción del objetivo adicional de cálculo de velocidad de vehículos.
  • Los conocimientos aprendidos sobre el funcionamiento de redes han sido comprendidos. Sin embargo, se debe profundizar en los aspectos que se llevan al cabo en el entrenamiento. Ya que un correcto entrenamiento es clave para tener una red exitosa en cuanto a resolución de problemas se refiere.

Líneas futuras

Este proyecto tiene un enorme margen de mejora, como optimizar el código o implementar otras características, tales como:

  • Implementar soporte para intersecciones y vías con más de un carril.
  • Implementar el cálculo de velocidad de los vehículos.
  • Crear una aplicación móvil para ajustar los parámetros del sistema vía Bluetooth.
  • Mejorar las características actuales, añadiendo diferenciación en la detección de vehículos, de manera que se puedan diferenciar vehículos normales y vehículos que circulan en estado de emergencia.