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 |
|---|
![]() |
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.
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 windowsArgumentos de DistanceCalculation()#
Aquí tienes una tabla con los argumentos de DistanceCalculation:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
model | str | None | Ruta al archivo del modelo YOLO de Ultralytics. |
line_width | int | 2 | Grosor de línea de las cajas, los puntos clave y los recuentos que dibuja la solución. |
verbose | bool | True | Activa 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.
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Especifica el algoritmo de seguimiento que se utilizará. Opciones integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Establece el umbral de confianza para las detecciones; los valores más bajos permiten seguir más objetos, pero pueden incluir falsos positivos. |
iou | float | 0.7 | Establece el umbral de intersección sobre unión (IoU) para filtrar las detecciones superpuestas. |
classes | list | None | Filtra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo sigue las clases especificadas. |
device | str | None | Especifica 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. |
imgsz | int or tuple | 640 | Tamañ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_det | int | 300 | Número máximo de detecciones conservadas por fotograma antes del seguimiento, lo que limita los objetos que procesa una solución en escenas densas. |
quantize | int or str | None | Precisió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:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
show | bool | False | Si 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_conf | bool | True | Muestra 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_labels | bool | True | Muestra 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:
- Extrae los centroides (puntos centrales) de las cajas delimitadoras seleccionadas
- Calcula la distancia euclídea entre estos centroides en píxeles
- 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
DistanceCalculationdel módulosolutionsde 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
DistanceCalculationpara 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
DistanceCalculationen Ultralytics YOLO26 incluyen:model: Ruta al archivo del modelo YOLO26.tracker: Algoritmo de seguimiento que se utilizará (las soluciones utilizanbotsort.yamlde 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.
