Meet YOLO26: next-gen vision AI.

Link to this sectionCálculo de distancia usando Ultralytics YOLO26#

Link to this section¿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 un fotograma de vídeo. En el caso de Ultralytics YOLO26, se emplea el centroide de la caja delimitadora 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 🚀

Link to this sectionVisuales#

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

Link to this sectionVentajas del cálculo de distancia#

  • Precisión de localización: Mejora el posicionamiento espacial preciso en tareas de visión artificial.
  • 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 en 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.

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

Link to this sectionArgumentos de DistanceCalculation()#

Aquí tienes una tabla con los argumentos de DistanceCalculation:

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

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. Opciones integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.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 superpuestas.
classeslistNoneFiltra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo rastrea las clases especificadas.
verboseboolTrueControla la visualización de los resultados de seguimiento, proporcionando una salida visual de los objetos rastreados.
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 una retroalimentación visual inmediata durante el desarrollo o las pruebas.
line_widthint or NoneNoneEspecifica el ancho de línea de los cuadros delimitadores. 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. 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.

Link to this sectionDetalles de implementación#

La clase DistanceCalculation funciona rastreando objetos a través de los 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 gestionar las interacciones del ratón, lo que permite a los usuarios seleccionar objetos y borrar las selecciones según sea necesario. El método process gestiona el procesamiento fotograma a fotograma, rastreando objetos y calculando distancias.

Link to this sectionAplicaciones#

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

Link to this sectionFAQ#

Link to this section¿Cómo calculo las distancias entre objetos usando Ultralytics YOLO26?#

Para calcular las 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.

Link to this section¿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 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 a la perfección con otras soluciones de YOLO26 como el seguimiento de objetos y la estimación de velocidad.

Link to this section¿Puedo realizar el cálculo de distancia en transmisiones de vídeo en tiempo real con Ultralytics YOLO26?#

Sí, puedes realizar el cálculo de distancia en transmisiones 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 con YOLO26 y usar la clase DistanceCalculation para calcular las distancias entre los objetos en fotogramas sucesivos. Para una implementación detallada, consulta el ejemplo de transmisión de vídeo.

Link to this section¿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 usar un clic derecho del ratón. Esta acción borrará todos los puntos que hayas dibujado. Para obtener más detalles, consulta la sección de notas en el ejemplo de cálculo de distancia.

Link to this section¿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: Marcador para mostrar la salida.

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

Comentarios