YOLO Vision 2026:

Cálculo de distancia usando Ultralytics YOLO26#

¿Qué es el cálculo de distancia?#

El cálculo de distancia es el proceso de medir el espacio entre dos objetos detectados dentro de una imagen o fotograma de video. En el caso de Ultralytics YOLO26, se emplea el centroide de la bounding box para calcular la distancia de los bounding boxes 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
Ultralytics YOLO26 Distance Calculation

Ventajas del cálculo de distancia#

  • Precision de localización: Mejora el posicionamiento espacial preciso en tareas de computer vision.
  • Estimación de tamaño: Permite estimar el tamaño de un objeto para una mejor comprensión contextual.
  • Comprensión de escenas: 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 la supervisión de las distancias entre objetos en movimiento.
  • Análisis espacial: Facilita el análisis de las relaciones e interacciones entre objetos dentro del entorno supervisado.
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 izquierdo en cualquier parte 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 en 2D, que carecen de información de profundidad.

Calcula distancias con YOLO26#

La solución DistanceCalculation rastrea objetos a través de fotogramas y mide la distancia euclidiana, en píxeles, entre los centroides de dos bounding boxes cualesquiera que selecciones con el ratón. Ejecuta el ejemplo a continuación, luego haz clic izquierdo en dos objetos para trazar la línea de conexión y leer la distancia; haz clic derecho para borrar tu selección.

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 YOLO de Ultralytics.
line_widthint2Grosor de línea para las cajas, puntos clave y recuentos que dibuja la solución.
verboseboolTrueHabilita el registro por fotograma de la solución sobre la forma de entrada, los recuentos de clases y la velocidad de procesamiento. La llamada de seguimiento en sí siempre es silenciosa.

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 que se va a utilizar. Opciones integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Establece 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 superpuestas.
classeslistNoneFiltra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo realiza el seguimiento de las clases especificadas.
devicestrNoneEspecifica el dispositivo para la inferencia (por ejemplo, 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. Es útil para obtener retroalimentación visual inmediata durante el desarrollo o las pruebas.
show_confboolTrueMuestra la puntuación de confianza para cada detección junto a la etiqueta. Proporciona 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#

La clase DistanceCalculation funciona rastreando objetos a través de fotogramas de video y calculando la distancia euclidiana entre los centroides de los bounding boxes seleccionados. 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 gestionar las interacciones del ratón, lo que permite a los usuarios seleccionar objetos y borrar selecciones según sea necesario. El método process gestiona el procesamiento fotograma por fotograma, el rastreo 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 de los clientes a los productos y analiza la eficacia de la distribución de la tienda
  • Seguridad industrial: Supervisa las distancias de seguridad entre los trabajadores y la maquinaria
  • Gestión del tráfico: Analiza el espaciado de los vehículos y detecta el seguimiento demasiado cercano
  • Análisis deportivo: Calcula las distancias entre los jugadores, el balón y posiciones clave del campo
  • Asistencia sanitaria: Garantiza un distanciamiento adecuado en las zonas de espera y supervisa el movimiento de los pacientes
  • Robótica: Permite a los robots mantener las distancias adecuadas respecto a obstáculos y personas

FAQ#

  • Para calcular distancias entre objetos utilizando Ultralytics YOLO26, necesitas identificar los centroides de los bounding boxes de los objetos detectados. Este proceso implica inicializar la clase DistanceCalculation del módulo solutions de Ultralytics y utilizar las salidas de rastreo del modelo para calcular las distancias.

  • 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 los 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, lo que lo hace adecuado para el análisis de vídeo en directo.
    • Capacidades de integración: Funciona sin problemas con otras soluciones de YOLO26 como el object tracking y la estimación de velocidad.
  • Sí, puedes realizar cálculos de distancia en transmisiones de video en tiempo real con Ultralytics YOLO26. El proceso implica capturar fotogramas de video utilizando OpenCV, ejecutar la object detection de YOLO26 y utilizar la clase DistanceCalculation para calcular las distancias entre objetos en fotogramas sucesivos. Para una implementación detallada, consulta el ejemplo de transmisión de video.

  • Para eliminar puntos trazados 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 trazado. Para más detalles, consulta la sección de notas bajo el ejemplo de cálculo de distancia.

  • 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 (Solutions usa por defecto botsort.yaml).
    • conf: Umbral de confianza para las detecciones.
    • show: Indicador para mostrar la salida.

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

Comentarios