Cálculo de distancia usando Ultralytics YOLO26

¿Qué es el cálculo de distancia?

Medir el espacio entre dos objetos se conoce como cálculo de distancia dentro de un espacio especificado. En el caso de Ultralytics YOLO26, el centroide de la caja delimitadora se emplea para calcular la distancia de las cajas delimitadoras resaltadas por el usuario.



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

Visualizaciones

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

Ventajas del cálculo de distancia

  • Precisión de localización: Mejora el posicionamiento espacial preciso en tareas de visión por computadora.
  • Estimación de tamaño: Permite estimar el tamaño de los objetos para una mejor comprensión contextual.
  • Comprensión de escenas: Mejora la comprensión de escenas en 3D para una mejor toma de decisiones en aplicaciones como vehículos autónomos y sistemas de vigilancia.
  • Evitació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 cajas delimitadoras cualesquiera con el botón izquierdo del ratón para calcular la distancia.
  • Usa el botón derecho del ratón para borrar todos los puntos dibujados.
  • Haz clic con el botón 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

Argumentos de DistanceCalculation()

Aquí tienes una tabla con los argumentos de DistanceCalculation:

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

También puedes hacer uso de varios argumentos de track en la solución DistanceCalculation.

ArgumentoTipoPredeterminadoDescripción
trackerstr'botsort.yaml'Especifica el algoritmo de seguimiento a utilizar, p. ej., bytetrack.yaml o botsort.yaml.
conffloat0.1Establece el umbral de confianza para las detecciones; valores más bajos permiten el seguimiento de más objetos pero pueden incluir falsos positivos.
ioufloat0.7Establece el umbral de Intersection over Union (IoU) para filtrar detecciones solapadas.
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 seleccionar 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 es True, muestra las imágenes o vídeos anotados en una ventana. Útil para obtener información visual inmediata durante el desarrollo o las pruebas.
line_widthint or NoneNoneEspecifica el ancho de línea de las cajas delimitadoras. Si es None, el ancho de línea se ajusta automáticamente según el tamaño de la imagen. Proporciona personalización visual para mayor claridad.
show_confboolTrueMuestra la puntuación de confianza para cada detección junto a la etiqueta. Ofrece información sobre la certeza del modelo para cada detección.
show_labelsboolTrueMuestra etiquetas para cada detección en el resultado visual. Proporciona una comprensión inmediata de los objetos detectados.

Detalles de la implementación

La clase DistanceCalculation funciona rastreando objetos a través de fotogramas de vídeo y calculando la distancia euclidiana entre los centroides de las cajas delimitadoras seleccionadas. Cuando haces clic en dos objetos, la solución:

  1. Extrae los centroides (puntos centrales) de las cajas delimitadoras seleccionadas
  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 método mouse_event_for_distance para manejar las interacciones del ratón, permitiendo a los usuarios seleccionar objetos y borrar selecciones según sea necesario. El método process 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 distancias seguras entre trabajadores y maquinaria
  • Gestión del tráfico: Analiza el espacio entre vehículos y detecta el seguimiento demasiado próximo
  • Análisis deportivo: Calcula distancias entre jugadores, el balón y posiciones clave del campo
  • Atención sanitaria: Asegura una distancia adecuada en zonas de espera y monitoriza el movimiento de 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 las cajas delimitadoras de los objetos detectados. Este proceso implica inicializar la clase DistanceCalculation 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 escenas: Mejora la comprensión de escenas en 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 sobre la marcha, haciéndolo adecuado para el análisis de vídeo en directo.
  • Capacidades de integración: Funciona a la perfección con otras soluciones de YOLO26 como el seguimiento de objetos y la 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 la detección de objetos de YOLO26 y usar la clase DistanceCalculation para calcular distancias entre objetos en fotogramas sucesivos. Para una implementación detallada, consulta el ejemplo de flujo de vídeo.

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

Para borrar puntos dibujados durante el cálculo de distancia con Ultralytics YOLO26, puedes usar un clic derecho del 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 clase DistanceCalculation 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: Indicador para mostrar el resultado.

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

Comentarios