Ultralytics YOLO27:

Cálculo de distancias con Ultralytics YOLO26#

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

El cálculo de distancias es el proceso de medir el espacio entre dos objetos detectados dentro de una imagen o fotograma de vídeo. En el caso de Ultralytics YOLO26, se utiliza el centroide de la caja delimitadora para calcular la distancia entre las cajas delimitadoras resaltadas por el usuario.



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

Elementos visuales#

Cálculo de distancias con Ultralytics YOLO26
Cálculo de distancias con Ultralytics YOLO26

Ventajas del cálculo de distancias#

  • Precisión de localización: Mejora la precisión del posicionamiento espacial en tareas de visión por ordenador.
  • Estimación del tamaño: Permite estimar el tamaño de los objetos para comprender mejor el contexto.
  • Comprensión de la escena: Mejora la comprensión de escenas 3D para tomar mejores 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 distancias
  • Haz clic con el botón izquierdo del ratón en dos cajas delimitadoras cualesquiera para calcular la distancia.
  • Utiliza el botón derecho del ratón para eliminar todos los puntos dibujados.
La distancia es una estimación

La distancia es una estimación y es posible que no sea totalmente exacta porque se calcula utilizando datos en 2D, los cuales carecen de información de profundidad.

Calcula distancias con YOLO26#

La solución DistanceCalculation realiza el seguimiento de los objetos entre fotogramas y mide la distancia euclídea, en píxeles, entre los centroides de dos cajas delimitadoras cualesquiera que selecciones con el ratón. Ejecuta el ejemplo siguiente y, después, haz clic con el botón izquierdo en dos objetos para dibujar la línea que los conecta y consultar la distancia; haz clic con el botón derecho para borrar la selección.

Cálculo de distancias con 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 al archivo del modelo YOLO de Ultralytics.
line_widthint2Grosor de línea de las cajas, los puntos clave y los recuentos que dibuja la solución.
verboseboolTrueActiva el registro por fotograma de la solución, que incluye 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 utilizar varios argumentos de track en la solución DistanceCalculation.

ArgumentoTipoPredeterminadoDescripción
trackerstr'botsort.yaml'Especifica el algoritmo de seguimiento que se utilizará. Opciones integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Establece el umbral de confianza para las detecciones; los valores más bajos permiten seguir más objetos, pero pueden incluir falsos positivos.
ioufloat0.7Establece el umbral de intersección sobre unión (IoU) para filtrar las detecciones superpuestas.
classeslistNoneFiltra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo sigue las clases especificadas.
devicestrNoneEspecifica el dispositivo para la inferencia (por ejemplo, cpu, cuda:0 o 0). Permite seleccionar entre la CPU, una GPU específica u otros dispositivos de cálculo para ejecutar el modelo.
imgszint or tuple640Tamaño de imagen de inferencia objetivo: un número entero para una imagen cuadrada o un par (height, width). Las formas se ajustan al paso del modelo.
max_detint300Número máximo de detecciones conservadas por fotograma antes del seguimiento, lo que limita los objetos que procesa una solución en escenas densas.
quantizeint or strNonePrecisión de inferencia: 16 (FP16) o 32/sin definir (FP32) para los modelos de PyTorch y TorchScript; otros formatos calculan a la precisión que seleccionan su artefacto y su motor de ejecución. Sustituye al indicador obsoleto half.

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. Es útil para obtener información visual inmediata durante el desarrollo o las pruebas.
show_confboolTrueMuestra la puntuación de confianza de cada detección junto a su etiqueta. Permite conocer el grado de certeza del modelo para cada detección.
show_labelsboolTrueMuestra las etiquetas de cada detección en la salida visual. Proporciona una comprensión inmediata de los objetos detectados.

Detalles de implementación#

La clase DistanceCalculation funciona realizando el seguimiento de los objetos entre fotogramas de vídeo y calculando la distancia euclídea entre los centroides de las cajas delimitadoras seleccionadas. Al hacer clic en dos objetos, la solución:

  1. Extrae los centroides (puntos centrales) de las cajas delimitadoras seleccionadas
  2. Calcula la distancia euclídea entre estos centroides en píxeles
  3. Muestra la distancia en el fotograma mediante 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 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 distancias 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 la separación entre vehículos y detecta la conducción demasiado cercana al vehículo precedente
  • Análisis deportivo: Calcula las distancias entre los jugadores, el balón y las posiciones clave del campo
  • Sanidad: Garantiza una distancia adecuada en las zonas de espera y supervisa el movimiento de los pacientes
  • Robótica: Permite a los robots mantener distancias adecuadas respecto a obstáculos y personas

Preguntas frecuentes#

  • Para calcular las distancias entre objetos con Ultralytics YOLO26, debes 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 utilizar las salidas de seguimiento del modelo para calcular las distancias.

  • El cálculo de distancias con Ultralytics YOLO26 ofrece varias ventajas:

    • Precisión de localización: Proporciona un posicionamiento espacial preciso de los objetos.
    • Estimación del tamaño: Ayuda a estimar los tamaños físicos, lo que contribuye a comprender mejor el contexto.
    • Comprensión de la escena: Mejora la comprensión de escenas 3D y ayuda a tomar mejores decisiones en aplicaciones como la conducción autónoma y la vigilancia.
    • Procesamiento en tiempo real: Realiza los cálculos sobre la marcha, por lo que es adecuado para el análisis de vídeo en directo.
    • Capacidades de integración: Funciona de forma fluida con otras soluciones de YOLO26, como el seguimiento de objetos y la estimación de velocidad.
  • Sí, puedes calcular distancias en transmisiones de vídeo en tiempo real con Ultralytics YOLO26. El proceso consiste en capturar fotogramas de vídeo mediante OpenCV, ejecutar la detección de objetos de YOLO26 y utilizar la clase DistanceCalculation para calcular las distancias entre objetos en fotogramas consecutivos. Para consultar una implementación detallada, visita el ejemplo de transmisión de vídeo.

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

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

    • model: Ruta al archivo del modelo YOLO26.
    • tracker: Algoritmo de seguimiento que se utilizará (las soluciones utilizan botsort.yaml de forma predeterminada).
    • conf: Umbral de confianza para las detecciones.
    • show: Indicador para mostrar la salida.

    Para consultar la lista completa y los valores predeterminados, visita los argumentos de DistanceCalculation.

Comentarios