Ultralytics YOLOv8 para la estimación de velocidad en proyectos de visión por ordenador
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 código.

Probablemente todos hemos visto señales de límite de velocidad en carretera. Algunos incluso podemos haber recibido por correo postal o electrónico una notificación automática por superar el límite de velocidad. Los sistemas de gestión del tráfico basados en inteligencia artificial (IA) pueden detectar automáticamente las infracciones por exceso de velocidad gracias a la visión artificial. Las imágenes en tiempo real capturadas por cámaras situadas en semáforos y autopistas se utilizan para estimar la velocidad y reforzar la seguridad vial.
La estimación de la velocidad no se limita a la seguridad en autopistas. También puede utilizarse en deportes, vehículos autónomos y muchas otras aplicaciones. En este artículo, veremos cómo puedes utilizar el modelo Ultralytics YOLOv8 para estimar la velocidad en tus proyectos de visión artificial. También recorreremos paso a paso un ejemplo de código para que puedas probarlo por tu cuenta. ¡Empecemos!
La estimación de la velocidad facilita la gestión del tráfico#
Según la Organización Mundial de la Salud (WHO), aproximadamente 1,19 millones de personas mueren cada año en accidentes de tráfico como consecuencia del exceso de velocidad. Además, entre 20 y 50 millones de personas 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, salvar vidas y mantener nuestras carreteras seguras y eficientes.
La estimación de la velocidad mediante visión artificial consiste en detectar y seguir objetos en fotogramas de vídeo para calcular a qué velocidad se mueven. Algoritmos como Ultralytics YOLOv8 pueden identificar y seguir objetos, como vehículos, en fotogramas consecutivos. El sistema mide la distancia que recorren estos objetos mediante cámaras calibradas o puntos de referencia para calcular distancias del mundo real. Al medir cuánto tardan los objetos en desplazarse entre dos puntos, el sistema calcula su velocidad utilizando la relación entre distancia y tiempo.

Fig. 1. Estimación de la velocidad mediante el modelo Ultralytics YOLOv8.
Además de detectar a quienes superan el límite de velocidad, los sistemas de estimación de la velocidad integrados con IA pueden recopilar datos para realizar predicciones sobre el tráfico. Estas predicciones pueden ayudar en tareas de gestión del tráfico, como optimizar la sincronización de los semáforos y la asignación de recursos. La información sobre los patrones de tráfico y las causas de la congestión puede utilizarse para planificar nuevas carreteras y reducir la congestión.
Aplicaciones de la estimación de la velocidad en otros sectores#
Las aplicaciones de la estimación de la velocidad van más allá de la vigilancia de las carreteras. También puede resultar útil para supervisar el rendimiento de los atletas, ayudar a los vehículos autónomos a comprender la velocidad de los objetos que se mueven a su alrededor, detectar comportamientos sospechosos, etc. Siempre que pueda utilizarse una cámara para medir la velocidad de un objeto, puede emplearse la estimación de la velocidad mediante visión artificial.
Estos son algunos ejemplos de usos de la estimación de la velocidad:
- Los coches autónomos de Tesla utilizan la estimación de la velocidad basada en visión para evitar colisiones.
- La visión artificial 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 supervisar las velocidades al caminar y mejorar la movilidad y la seguridad urbanas. Estos sistemas pueden alertar a los conductores de la presencia de peatones y prevenir accidentes.
- Los sistemas de supervisión del comportamiento animal utilizan la estimación de la velocidad para seguir los movimientos 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 artificial#
Los sistemas de estimación de la velocidad basados en visión están sustituyendo a los métodos tradicionales basados en sensores gracias a su mayor precisión, rentabilidad y flexibilidad. A diferencia de los sistemas que dependen de sensores caros como LiDAR, la visión artificial utiliza cámaras estándar para supervisar y analizar la velocidad en tiempo real. Las soluciones de visión artificial para estimar la velocidad pueden integrarse fácilmente con la infraestructura de tráfico existente. Además, estos sistemas pueden diseñarse para realizar diversas tareas complejas, como identificar el tipo de vehículo y analizar los patrones de tráfico, con el fin de mejorar el flujo general del tráfico y la seguridad.
Pruébalo tú mismo: estimación de la velocidad mediante Ultralytics YOLOv8#
Ahora que entendemos claramente 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 artificial mediante código. Detectaremos vehículos en movimiento y estimaremos su velocidad utilizando el modelo Ultralytics YOLOv8.
Este ejemplo utiliza un vídeo de coches circulando por una carretera, descargado de Internet. Puedes utilizar el mismo vídeo o cualquier otro vídeo relevante. El modelo Ultralytics YOLOv8 identifica el centro de cada vehículo y calcula su velocidad en función de la rapidez con la que este centro cruza una línea horizontal en el fotograma del vídeo.
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 completamente 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 el símbolo del sistema o el terminal y ejecuta el comando que se muestra a continuación.
pip install ultralyticsConsulta nuestra guía de instalación de Ultralytics para obtener instrucciones paso a paso y conocer las prácticas recomendadas para el proceso de instalación. Si encuentras algún problema al instalar los paquetes necesarios para YOLOv8, nuestra guía de problemas comunes incluye soluciones y consejos útiles.
Paso 2: A continuación, importaremos las bibliotecas necesarias. La biblioteca OpenCV nos ayudará a gestionar el procesamiento de vídeo.
import cv2
from ultralytics import YOLO, solutionsPaso 3: Después, cargaremos el modelo Ultralytics YOLOv8 y recuperaremos los nombres de las clases que el modelo puede detectar.
model = YOLO("yolov8n.pt")
names = model.model.namesConsulta todos los modelos compatibles para saber qué modelo se adapta mejor a tu proyecto.
Paso 4: En este paso, abriremos el archivo de vídeo de entrada mediante 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 escritor de vídeo para guardar los resultados finales de la estimación de la velocidad. El archivo de vídeo de salida se guardará como «speed_estimation.avi».
video_writer = cv2.VideoWriter("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))Paso 6: A continuación, podemos definir los puntos de la línea para la estimación de la velocidad. En nuestro vídeo de entrada, esta línea se colocará horizontalmente en el centro del fotograma. Puedes modificar los valores para colocar la línea en las posiciones más adecuadas según tu vídeo de entrada.
line_pts = [(0, 360), (1280, 360)]Paso 7: Ahora podemos inicializar el objeto de estimación de la velocidad utilizando los puntos de la línea definidos y los nombres de las clases.
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. Leemos cada fotograma y detectamos y seguimos los objetos. Se estima la velocidad de los objetos seguidos y el fotograma anotado se escribe en el vídeo de salida.
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
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 de captura y escritura de vídeo y cerramos las ventanas de OpenCV.
cap.release()
video_writer.release()
cv2.destroyAllWindows()Paso 10: Guarda el script. Si trabajas desde el terminal o el símbolo del sistema, ejecuta el script con el siguiente comando:
python your_script_name.pyLos desafíos de la estimación de la velocidad basada en visión#
También es importante comprender los desafíos que implica implementar la estimación de la velocidad mediante visión artificial. 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 que estos sistemas sigan y estimen con precisión la velocidad del vehículo objetivo. Las malas condiciones de iluminación, que provocan sombras o reflejos del sol, también pueden complicar aún más la tarea de estimar la velocidad.
Otro desafío está relacionado con la potencia computacional. Para estimar la velocidad en tiempo real, tenemos que procesar una gran cantidad de datos visuales procedentes de cámaras de tráfico de alta calidad. Es posible que tu solución necesite hardware caro para gestionar todo esto y garantizar que funcione rápidamente y sin retrasos.
Después está el problema de la privacidad. Los datos recopilados por estos sistemas pueden incluir información sobre el vehículo de una persona, como la marca, el modelo y la matrícula, obtenida sin su consentimiento. Algunas cámaras HD modernas pueden incluso capturar imágenes de los ocupantes del interior del coche. Esta recopilación de datos puede plantear graves problemas éticos y legales que deben abordarse con el máximo cuidado.
Acelerando hacia el futuro#
Utilizar el modelo Ultralytics YOLOv8 para estimar la velocidad ofrece una solución flexible y eficiente para muchos usos. Aunque existen desafíos, como mantener la precisión en condiciones difíciles y abordar los problemas de privacidad, las ventajas son numerosas. La estimación de la velocidad mediante visión artificial es más rentable, adaptable y precisa que los métodos antiguos. Resulta útil en diversos sectores, como el transporte, el deporte, la vigilancia y los vehículos autónomos. Con todas sus ventajas y aplicaciones, está destinada a convertirse en una parte fundamental de los futuros sistemas inteligentes.
¿Te interesa la IA? ¡Conecta con nuestra comunidad! Explora nuestro repositorio de GitHub para obtener más información 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! 🚀









