Skip to main content

Cálculo de distancia usando Ultralytics YOLO26

¿Qué es el cálculo de distancia?

Medir la brecha entre dos objetos se conoce como cálculo de distancia dentro de un espacio especificado. En el caso de Ultralytics YOLO26, la coordenadas de la bbox se emplea el centroide para calcular la distancia de los bbox resaltados por el usuario.



Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀

Visuales

Cálculo de distancia usando Ultralytics YOLO26
Cálculo de distancia con Ultralytics YOLO26

Ventajas del cálculo de distancia

  • Localización Precisión: Mejora el posicionamiento espacial preciso en computer vision.
  • Estimación de tamaño: Permite la estimación del tamaño de los objetos para una mejor comprensión contextual.
  • Comprensión de la escena: Mejora la comprensión de escenas 3D para una mejor toma de decisiones en aplicaciones como vehículos autónomos y sistemas de vigilancia.
  • Prevención de colisiones: Permite a los sistemas detectar posibles colisiones mediante el seguimiento de las distancias entre objetos en movimiento.
  • Análisis espacial: Facilita el análisis de las relaciones e interacciones de los objetos dentro del entorno monitorizado.
Cálculo de distancia
  • Haz clic en dos bbox cualesquiera con el botón izquierdo del ratón para calcular la distancia.
  • Usa el botón derecho del ratón para eliminar todos los puntos dibujados.
  • Haz clic izquierdo en cualquier lugar del fotograma para añadir nuevos puntos.
La distancia es una estimación

La distancia es una estimación y puede no ser totalmente precisa porque se calcula utilizando datos 2D, los cuales carecen de información de profundidad.

Cálculo de distancia usando Ultralytics YOLO
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
    model="yolo26n.pt",  # path to the YOLO26 model file.
    show=True,  # display the output
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = distancecalculator(im0)

    print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

DistanceCalculation() Argumentos

Aquí tienes una tabla con los DistanceCalculation argumentos:

ArgumentoTipoPredeterminadoDescripción
modelstrNoneRuta a un archivo de modelo Ultralytics YOLO.

También puedes utilizar varios track argumentos en la DistanceCalculation solución.

ArgumentoTipoPredeterminadoDescripción
trackerstr'botsort.yaml'Especifica el algoritmo de seguimiento a utilizar, por ejemplo, bytetrack.yaml o botsort.yaml.
conffloat0.1Establece el umbral de confianza para las detecciones; los valores más bajos permiten el seguimiento de más objetos, pero pueden incluir falsos positivos.
ioufloat0.7Establece el Intersection over Union (IoU) umbral para filtrar detecciones superpuestas.
classeslistNoneFiltra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo sigue las clases especificadas.
verboseboolTrueControla la visualización de los resultados de seguimiento, proporcionando una salida visual de los objetos seguidos.
devicestrNoneEspecifica el dispositivo para la inferencia (p. ej., cpu, cuda:0 o 0). Permite a los usuarios elegir entre CPU, una GPU específica u otros dispositivos de computación para la ejecución del modelo.

Además, están disponibles los siguientes argumentos de visualización:

ArgumentoTipoPredeterminadoDescripción
showboolFalseSi True, muestra las imágenes o vídeos anotados en una ventana. Útil para una retroalimentación visual inmediata durante el desarrollo o las pruebas.
line_widthint or NoneNoneEspecifica el grosor de línea de las cajas delimitadoras. Si None, el grosor de línea se ajusta automáticamente en función del tamaño de la imagen. Proporciona personalización visual para mayor claridad.
show_confboolTrueMuestra la puntuación de confianza de cada detección junto a la etiqueta. Ofrece información sobre la certeza del modelo para cada detección.
show_labelsboolTrueMuestra las etiquetas para cada detección en la salida visual. Proporciona una comprensión inmediata de los objetos detectados.

Detalles de implementación

El método DistanceCalculation la clase funciona siguiendo objetos a través de fotogramas de vídeo y calculando la distancia euclidiana entre los centroides de los bbox seleccionados. Cuando haces clic en dos objetos, la solución:

  1. Extrae los centroides (puntos centrales) de los bbox seleccionados
  2. Calcula la distancia euclidiana entre estos centroides en píxeles
  3. Muestra la distancia en el fotograma con una línea que conecta los objetos

La implementación utiliza el mouse_event_for_distance método para gestionar las interacciones del ratón, permitiendo a los usuarios seleccionar objetos y borrar selecciones según sea necesario. El process método gestiona el procesamiento fotograma a fotograma, el seguimiento de objetos y el cálculo de distancias.

Aplicaciones

El cálculo de distancia con YOLO26 tiene numerosas aplicaciones prácticas:

  • Análisis minorista: Mide la proximidad del cliente a los productos y analiza la eficacia de la distribución de la tienda
  • Seguridad industrial: Monitoriza las distancias de seguridad entre trabajadores y maquinaria
  • Gestión del tráfico: Analiza la distancia entre vehículos y detecta el seguimiento demasiado cercano
  • Análisis deportivo: Calcula distancias entre jugadores, el balón y posiciones clave del campo
  • Atención sanitaria: Asegura una distancia adecuada en las zonas de espera y monitoriza el movimiento de los pacientes
  • Robótica: Permite a los robots mantener distancias adecuadas respecto a obstáculos y personas

Preguntas frecuentes

¿Cómo calculo distancias entre objetos usando Ultralytics YOLO26?

Para calcular distancias entre objetos usando Ultralytics YOLO26, necesitas identificar los centroides de los bbox de los objetos detectados. Este proceso implica inicializar la DistanceCalculation clase del módulo solutions de Ultralytics y usar las salidas de seguimiento del modelo para calcular las distancias.

¿Cuáles son las ventajas de usar el cálculo de distancia con Ultralytics YOLO26?

Usar el cálculo de distancia con Ultralytics YOLO26 ofrece varias ventajas:

  • Precisión de localización: Proporciona un posicionamiento espacial preciso para los objetos.
  • Estimación de tamaño: Ayuda a estimar tamaños físicos, contribuyendo a una mejor comprensión contextual.
  • Comprensión de la escena: Mejora la comprensión de escenas 3D, ayudando a mejorar la toma de decisiones en aplicaciones como la conducción autónoma y la vigilancia.
  • Procesamiento en tiempo real: Realiza cálculos al instante, lo que lo hace adecuado para el análisis de vídeo en vivo.
  • Capacidades de integración: Funciona sin problemas con otras soluciones YOLO26 como seguimiento de múltiples objetos y estimación de velocidad.

¿Puedo realizar cálculos de distancia en flujos de vídeo en tiempo real con Ultralytics YOLO26?

Sí, puedes realizar cálculos de distancia en flujos de vídeo en tiempo real con Ultralytics YOLO26. El proceso implica capturar fotogramas de vídeo usando OpenCV, ejecutar YOLO26 object detection, y utilizar la DistanceCalculation clase para calcular las distancias entre objetos en fotogramas sucesivos. Para una implementación detallada, consulta el ejemplo de flujo de vídeo.

¿Cómo elimino los puntos dibujados durante el cálculo de distancia usando Ultralytics YOLO26?

Para eliminar los puntos dibujados durante el cálculo de distancia con Ultralytics YOLO26, puedes hacer clic derecho con el ratón. Esta acción borrará todos los puntos que hayas dibujado. Para más detalles, consulta la sección de notas bajo el ejemplo de cálculo de distancia.

¿Cuáles son los argumentos clave para inicializar la clase DistanceCalculation en Ultralytics YOLO26?

Los argumentos clave para inicializar la DistanceCalculation clase en Ultralytics YOLO26 incluyen:

  • model: Ruta al archivo del modelo YOLO26.
  • tracker: Algoritmo de seguimiento a utilizar (el valor predeterminado es 'botsort.yaml').
  • conf: Umbral de confianza para las detecciones.
  • show: Bandera para mostrar el resultado.

Para obtener una lista exhaustiva y los valores predeterminados, consulta los argumentos de DistanceCalculation.

Comentarios