Cheque verde
Enlace copiado en el portapapeles

Ultralytics YOLOv8 para la Estimación de la Velocidad en Proyectos de Visión Artificial

Descubre cómo puede utilizarse el modelo Ultralytics YOLOv8 para estimar la velocidad en tus proyectos de visión por ordenador. Pruébalo tú mismo con un sencillo ejemplo de codificación.

Probablemente todos hemos visto señales de tráfico de límite de velocidad. Algunos incluso habremos recibido una notificación automática de infracción del límite de velocidad por correo postal o electrónico. Los sistemas de gestión del tráfico con inteligencia artificial (IA) pueden señalar automáticamente las infracciones de velocidad gracias a la visión por ordenador. Las imágenes en tiempo real captadas por cámaras situadas en semáforos y carreteras se utilizan para estimar la velocidad y reforzar la seguridad vial.

La estimación de la velocidad no se limita a la seguridad en carretera. Puede utilizarse en deportes, vehículos autónomos y otras aplicaciones diversas. En este artículo, explicaremos cómo puedes utilizar el modeloUltralytics YOLOv8 para estimar la velocidad en tus proyectos de visión por ordenador. También recorreremos paso a paso un ejemplo de codificación para que puedas probarlo tú mismo. ¡Vamos a empezar!

La estimación de la velocidad facilita la gestión del tráfico

Según la Organización Mundial de la Salud (OMS), aproximadamente 1,19 millones de personas mueren anualmente en accidentes de tráfico como consecuencia del exceso de velocidad. Además, entre 20 y 50 millones más sufren lesiones no mortales, muchas de las cuales provocan discapacidades. No se puede exagerar la importancia de la seguridad vial, especialmente cuando la estimación de la velocidad ayuda a prevenir accidentes, salva vidas y mantiene nuestras carreteras seguras y eficientes. 

La estimación de la velocidad mediante visión por ordenador consiste en detectar y seguir objetos en fotogramas de vídeo para calcular la velocidad a la que se mueven. Algoritmos como YOLOv8 pueden identificar y seguir objetos como vehículos en fotogramas consecutivos. El sistema mide la distancia que recorren estos objetos utilizando cámaras calibradas o puntos de referencia para calibrar las distancias del mundo real. Cronometrando el tiempo que tardan los objetos en moverse entre dos puntos, el sistema calcula su velocidad utilizando la relación distancia-tiempo.

Fig. 1. Estimación de la velocidad mediante el modelo Ultralytics YOLOv8

Además de atrapar a los infractores, los sistemas de estimación de la velocidad integrados en la IA pueden recopilar datos para hacer predicciones sobre el tráfico. Estas predicciones pueden ayudar en tareas de gestión del tráfico como la optimización de los tiempos de las señales y la asignación de recursos. La información sobre las pautas de tráfico y las causas de los atascos puede utilizarse para planificar nuevas carreteras que reduzcan la congestión.

Aplicaciones de la estimación de la velocidad en otras industrias

Las aplicaciones de la estimación de la velocidad van más allá de la vigilancia de las carreteras. También puede ser útil para controlar el rendimiento de los deportistas, ayudar a los vehículos autónomos a comprender la velocidad de los objetos que se mueven a su alrededor, detectar comportamientos sospechosos, etc. En cualquier lugar donde se pueda utilizar una cámara para medir la velocidad de un objeto, se puede utilizar la estimación de la velocidad mediante visión por ordenador. 

He aquí algunos ejemplos en los que se utiliza la estimación de la velocidad:

  • Los coches autónomos de Tesla utilizan la estimación de la velocidad basada en la visión para evitar colisiones.
  • La visión por ordenador y la estimación de la velocidad se utilizarán en los Juegos Olímpicos de 2024 para mejorar el análisis del rendimiento en las pruebas de atletismo.
  • Las ciudades inteligentes están investigando el análisis de la marcha de los peatones para controlar su velocidad y aumentar la movilidad y la seguridad urbanas. Estos sistemas pueden alertar a los conductores de la presencia de peatones y evitar accidentes.
  • Los sistemas de monitorización del comportamiento animal utilizan la estimación de la velocidad para seguir el movimiento de los animales y detectar signos de angustia o enfermedad.
Fig. 2. La estimación de la velocidad puede medir la velocidad de marcha de una persona.

Ventajas de estimar la velocidad mediante visión por ordenador

Los sistemas de estimación de la velocidad basados en la visión están sustituyendo a los métodos tradicionales basados en sensores por su mayor precisión, rentabilidad y flexibilidad. A diferencia de los sistemas que dependen de sensores caros como LiDAR, la visión por ordenador utiliza cámaras estándar para controlar y analizar la velocidad en tiempo real. Las soluciones de visión por ordenador para la estimación de la velocidad pueden integrarse perfectamente en la infraestructura de tráfico existente. Además, estos sistemas pueden construirse para realizar una serie de tareas complejas, como la identificación del tipo de vehículo y el análisis de patrones de tráfico, para mejorar el flujo y la seguridad del tráfico en general.

Pruébalo tú mismo: Estimación de la velocidad con YOLOv8

Ahora que tenemos una idea clara de la estimación de la velocidad y sus aplicaciones, veamos más de cerca cómo puedes integrar la estimación de la velocidad en tus proyectos de visión por ordenador mediante código. Detectaremos vehículos en movimiento y estimaremos su velocidad utilizando el modelo YOLOv8 .

Este ejemplo utiliza un vídeo de coches en una carretera descargado de Internet. Puedes utilizar el mismo vídeo o cualquier vídeo relevante. El modelo YOLOv8 identifica el centro de cada vehículo y calcula su velocidad en función de la rapidez con que este centro cruza una línea horizontal en el fotograma del vídeo. 

Fig 3. Vídeo de entrada de coches en una carretera

Antes de entrar en materia, es importante señalar que, en este caso, el cálculo de la distancia es aproximado y se basa en la Distancia Euclídea. No se tiene en cuenta la calibración de la cámara, por lo que la estimación de la velocidad puede no ser del todo precisa. Además, la velocidad estimada puede variar en función de la velocidad de tu GPU.

Paso 1: Empezaremos instalando el paquete Ultralytics . Abre tu símbolo del sistema o terminal y ejecuta el comando que se muestra a continuación. 


pip install ultralytics

Echa un vistazo a nuestra guía de instalación deUltralytics para obtener instrucciones paso a paso y las mejores prácticas sobre el proceso de instalación. Si te encuentras con algún problema al instalar los paquetes necesarios para YOLOv8, nuestra guía de Problemas comunes contiene soluciones y consejos útiles.

Paso 2: A continuación, importaremos las bibliotecas necesarias. La biblioteca OpenCV nos ayudará a manejar el procesamiento de vídeo.


import cv2
from ultralytics import YOLO, solutions

Paso 3: A continuación, podemos cargar el modelo YOLOv8 y recuperar los nombres de las clases que el modelo puede detectar.


model = YOLO("yolov8n.pt")
names = model.model.names

Consulta todos los modelos que admitimos para saber qué modelo se adapta mejor a tu proyecto.

Paso 4: En este paso, abriremos el archivo de vídeo de entrada utilizando el módulo VideoCapture de OpenCV. También extraeremos la anchura, la altura y los fotogramas por segundo (fps) del vídeo.


cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (
cv2.CAP_PROP_FRAME_WIDTH, 
cv2.CAP_PROP_FRAME_HEIGHT, 
cv2.CAP_PROP_FPS))

Paso 5: Aquí, inicializaremos el grabador de vídeo para guardar nuestros resultados finales de la estimación de velocidad. El archivo de vídeo de salida se guardará como "estimación_velocidad.avi".


video_writer = cv2.VideoWriter(
"speed_estimation.avi",
cv2.VideoWriter_fourcc(*"mp4v"),
fps, (w, h))

‍Paso6: A continuación, podemos definir los puntos de la línea para la estimación de la velocidad. Para nuestro vídeo de entrada, esta línea se colocará horizontalmente en el centro del fotograma. Siéntete libre de jugar con los valores para colocar la línea en las posiciones más adecuadas, dependiendo de tu vídeo de entrada. 


line_pts = [(0, 360), (1280, 360)]

Paso 7: Ahora, podemos inicializar el objeto de estimación de velocidad utilizando los puntos de línea y los nombres de clase definidos.


speed_obj = solutions.SpeedEstimator(reg_pts=line_pts,
                                      names=names,
                                      view_img=True,)

Paso 8: El núcleo del script procesa el vídeo fotograma a fotograma. Se lee cada fotograma y se detectan y rastrean los objetos. Se estima la velocidad de los objetos rastreados, y el fotograma anotado se escribe en el vídeo de salida.


while cap.isOpened():
  success, im0 = cap.read()
  if not success:        
    break
  tracks = model.track(im0, persist=True, show=False)
  im0 = speed_obj.estimate_speed(im0, tracks)
  video_writer.write(im0)

Paso 9: Por último, liberamos los objetos capturador y grabador de vídeo y cerramos las ventanas de OpenCV.


cap.release()
video_writer.release()
cv2.destroyAllWindows()

Paso 10: Guarda tu script. Si estás trabajando desde tu terminal o símbolo del sistema, ejecuta el script utilizando el siguiente comando:


python your_script_name.py

Si tu código se ejecuta correctamente, tu archivo de vídeo de salida tendrá este aspecto.

Fig 4. Salida de la estimación de la velocidad mediante YOLOv8.


Los retos de la estimación de la velocidad basada en la visión

También es importante comprender los retos que plantea la aplicación de la estimación de la velocidad mediante visión por ordenador. Las condiciones meteorológicas desfavorables, como la lluvia, la niebla o la nieve, pueden causar problemas al sistema, ya que pueden obstruir la visibilidad de la carretera. Del mismo modo, las oclusiones causadas por otros vehículos u objetos pueden dificultar a estos sistemas el seguimiento y la estimación precisa de la velocidad de un vehículo objetivo. Las malas condiciones de iluminación que provocan sombras o el resplandor del sol también pueden complicar aún más la tarea de estimar la velocidad.

Otro reto tiene que ver con la potencia de cálculo. Para estimar la velocidad en tiempo real, hay que procesar muchos datos visuales de cámaras de tráfico de alta calidad. Tu solución puede requerir un hardware caro para manejar todo esto y garantizar que todo funcione rápidamente sin retrasos.

Además, está la cuestión de la privacidad. Los datos recogidos por estos sistemas pueden incluir detalles del vehículo de una persona, como la marca, el modelo y la matrícula, que se recopilan sin su consentimiento. Algunas cámaras HD modernas pueden incluso captar imágenes de los ocupantes dentro del coche. Esta recogida de datos puede plantear graves problemas éticos y legales que deben tratarse con el máximo cuidado.

Acelerando hacia el futuro

Utilizar el modeloUltralytics YOLOv8 para estimar la velocidad proporciona una solución flexible y eficaz para muchos usos. Aunque existen retos, como la precisión en condiciones difíciles y el tratamiento de los problemas de privacidad, las ventajas son múltiples. La estimación de la velocidad mediante visión por ordenador es más rentable, adaptable y precisa que los métodos antiguos. Es útil en varios sectores como el transporte, los deportes, la vigilancia y los coches autoconducidos. Con todas sus ventajas y aplicaciones, está destinada a ser una pieza clave de los futuros sistemas inteligentes.

¿Te interesa la IA? ¡Conecta con nuestra comunidad! Explora nuestro repositorio de GitHub para saber más sobre cómo utilizamos la IA para crear soluciones innovadoras en diversos sectores, como la sanidad y la agricultura. ¡Colabora, innova y aprende con nosotros! 🚀

Logotipo de FacebookLogotipo de TwitterLogotipo de LinkedInSímbolo de enlace de copia

Leer más en esta categoría

¡Construyamos juntos el futuro
de la IA!

Comienza tu viaje con el futuro del aprendizaje automático