Detalles del Proyecto

Sistema avanzado de asistencia al conductor (ADAS) que integra detección de carriles, vehículos y monitorización de fatiga para prevenir accidentes en tiempo real.

Sistema de Seguridad Vial

Tabla de Contenidos

Lista de todas las secciones en este post. Haz clic para ir a esa sección.

Sistema de Asistencia a la Conducción (ADAS) basado en Visión por Computador

1. Resumen del Proyecto

Este proyecto consiste en el desarrollo de un Sistema Avanzado de Asistencia al Conductor (ADAS) diseñado para mitigar los riesgos asociados a la distracción al volante y condiciones adversas en carretera. El sistema integra múltiples algoritmos de visión artificial para realizar tres tareas críticas en tiempo real: detección y seguimiento de carriles, detección de vehículos circundantes y monitorización del estado de atención del conductor.

El objetivo principal fue implementar una solución eficiente capaz de ejecutarse en hardware convencional (CPU), optimizando el balance entre precisión y latencia.

2. Arquitectura y Stack Tecnológico

El núcleo del sistema está desarrollado en Python utilizando OpenCV como motor principal de procesamiento de imágenes. La arquitectura se divide en tres módulos concurrentes:

  • Lenguaje: Python 3.x
  • Visión por Computador: OpenCV (cv2), NumPy.
  • Deep Learning: YOLOv4-tiny (red neuronal convolucional para detección de objetos).
  • Algoritmos Clásicos: Haar Cascades, Transformada de Hough, Algoritmo EM (Expectation-Maximization).

3. Implementación Técnica

Lane Detection Pipeline

A. Detección de Carriles (Pipeline Híbrido)

En lugar de depender únicamente de redes neuronales profundas (que consumen muchos recursos), diseñé un pipeline robusto de visión clásica combinado con técnicas estadísticas:

  1. Preprocesamiento y ROI: Definición dinámica de la Región de Interés y aplicación de filtros gaussianos para reducción de ruido.
  2. Detección de Bordes: Uso del algoritmo Canny con umbrales dinámicos calculados en base a la media y desviación estándar de la intensidad de píxeles del frame actual.
  3. Extracción de Líneas: Aplicación de la Transformada de Hough Probabilística (Probabilistic Hough Transform) para identificar segmentos de líneas rectas.
  4. Clustering con Expectation-Maximization (EM): Este fue el desafío técnico más significativo. Para agrupar los segmentos de líneas dispersos en “carril izquierdo” y “carril derecho”, implementé el algoritmo EM. Esto permite modelar la distribución de las líneas detectadas y clasificarlas con mayor precisión que un simple filtrado por pendiente, mejorando la estabilidad de la detección entre frames.

B. Detección de Vehículos

Para la detección de obstáculos, integré el modelo YOLOv4-tiny. Se seleccionó esta versión “tiny” específicamente para mantener una alta tasa de imágenes por segundo (FPS) en entornos sin aceleración por GPU dedicada. El sistema filtra las detecciones para identificar exclusivamente la clase “coche” y calcula si estos se encuentran dentro de la región de peligro definida por los carriles detectados.

C. Monitorización del Conductor

Se implementó un módulo de seguridad activa mediante Haar Cascades. El sistema procesa el flujo de vídeo de una cámara interna para detectar el rostro y los ojos del conductor. Mediante el cálculo de la relación de aspecto y la persistencia temporal, el algoritmo dispara alertas visuales y sonoras si detecta signos de fatiga (ojos cerrados) o distracción (desvío de la mirada) durante un umbral de tiempo predefinido.

4. Desafíos y Resultados

Uno de los mayores retos fue la persistencia temporal. Las líneas de la carretera pueden perderse momentáneamente debido a sombras o cambios de iluminación. Para solucionar esto, implementé estructuras de datos tipo deque para mantener una memoria de los últimos frames, suavizando la visualización y extrapolando la posición del carril cuando la detección instantánea falla.

El resultado final es un sistema funcional capaz de operar en tiempo real, proporcionando feedback visual aumentado (realidad aumentada sobre el video) y alertas de seguridad proactivas.

Este proyecto demuestra cómo algoritmos complejos pueden traducirse en aplicaciones prácticas que salvan vidas, todo ejecutándose en tu propio portátil.