Detección de señales de tráfico con YOLOv8: Guía completa desde la preparación de datos hasta el despliegue del modelo

1. ¿Por qué la detección de señales de tráfico es el "ojo" de la conducción autónoma?

Al conducir, ¿qué tememos más además de los complejos escenarios de tráfico? Olvidar o interpretar incorrectamente las señales de tráfico. No ver correctamente un indicador de "prohibido girar a la izquierda" puede resultar en un desvío innecesario, mientras que ignorar una señal de límite de velocidad puede llevar a una multa. Para los sistemas de conducción autónoma e inteligencia del transporte, este problema es igualmente crucial. ¿Cómo pueden las máquinas, como los humanos e incluso con mayor precisión y estabilidad, "ver" y comprender estas señales de tráfico? Esta es un desafío técnico fundamental.

Es por lo que hoy hablaremos de la detección de señales de tráfico. Puedes imaginarlo como dotar a los vehículos inteligentes o sistemas de monitoreo de tráfico con un "ojo de águila". Este ojo debe ser capaz de identificar instantáneamente cualquier señal, sin importar si es de día o de noche, soleado o lluvioso, nueva o vieja, frontal o lateral, comunicando al sistema "señal de parada adelante" o "límite de velocidad actual 80 km/h". ¿Suena interesante? Para lograr esto, se necesita una poderosa herramienta técnica: YOLOv8.

YOLOv8 es el líder actual en detección de objetos, caracterizado por su velocidad, precisión y eficiencia. Comparado con versiones anteriores, mantiene una alta velocidad mientras mejora su precisión, y es especialmente amigable para desarrolladores, con un flujo claro desde el entrenamiento hasta el despliegue. Recientemente, completé un proyecto completo de detección de señales de tráfico con esta tecnología, desde la recopilación de datos y entrenamiento del modelo hasta el despliegue final en un servidor que ofrece servicios API. A lo largo de este proceso, encontré varios desafíos y acumulé valiosa experiencia práctica. En este artículo, compartiré esta experiencia para guiarte a través de todo el proceso, paso a paso. Incluso si no tienes experiencia previa en aprendizaje profundo, siguiendo estos pasos podrás entrenar tu propio primer modelo de detección de señales de tráfico.

2. Primer paso práctico: encontrar y preparar tus "materiales de estudio"

Como cualquier aprendizaje requiere materiales de estudio, entrenar un modelo de IA necesita un conjunto de datos de imágenes de señales de tráfico de alta calidad y bien anotadas. Hay varios conjuntos de datos públicos disponibles, como GTSDB de Alemania, TT100K de China, o plataformas como Roboflow que recopilan muchos conjuntos. Para mi proyecto, utilicé un conjunto de datos con aproximadamente 2000 imágenes que contenían 21 tipos comunes de señales de tráfico, incluyendo "detente", "semáforo", "prohibido el paso" y "peatones". Esta diversidad de datos, con diferentes condiciones como luz diurna, nocturna o contraluz, es crucial para entrenar un modelo robusto que funcione en diversas situaciones.

Obtener los datos es solo el comienzo; lo importante es organizarlos en un formato que YOLOv8 pueda "leer". Aquí hay un error común: el formato de anotación incorrecto. YOLO requiere archivos de anotación en formato .txt, no XML o JSON. Cada archivo .txt corresponde a una imagen, y cada línea representa un objeto en la imagen con el siguiente formato:

<class_id> <x_center> <y_center> <width> <height>


Por ejemplo, si una imagen contiene una señal de "parada", su anotación podría ser 0 0.45 0.32 0.1 0.15. El 0 representa la clase "parada" en la lista de clases (empezando desde 0). Los cuatro números decimales siguientes no son valores de píxeles, sino proporciones relativas al ancho y alto de la imagen completa. 0.45 indica que el centro de la señal está en el 45% del ancho de la imagen; 0.32 indica que el centro está en el 32% del alto; 0.1 significa que el ancho del cuadro delimitador es el 10% del ancho de la imagen; y 0.15 indica que la altura es el 15% del alto de la imagen. Este método de normalización tiene grandes ventajas, ya que la información de anotación es universal, sin importar si las imágenes son de 1920x1080 o 640x480.

La siguiente etapa es organizar la estructura de directorios, lo cual es clave para mantener el orden. Te recomiendo seguir esta estructura:

conjunto_señales_trafico/
├── images/
│   ├── train/          # Imágenes para entrenamiento, por ejemplo 1500
│   └── val/            # Imágenes para validación, por ejemplo 500
└── labels/
    ├── train/          # Archivos txt de anotación para imágenes de entrenamiento
    └── val/            # Archivos txt de anotación para imágenes de validación

Etiquetas: YOLOv8 Detección de Objetos señales de tráfico inteligencia artificial Visión por Computadora

Publicado el 6-8 01:03