Ir al contenido

Cálculo de Distancia usando Ultralytics YOLO11

¿Qué es el Cálculo de Distancia?

La medición de la distancia entre dos objetos se conoce como cálculo de distancia dentro de un espacio especificado. En el caso de Ultralytics YOLO11, el centroide del cuadro delimitador se emplea para calcular la distancia de los cuadros delimitadores resaltados por el usuario.



Ver: Cómo estimar la distancia entre objetos detectados con Ultralytics YOLO en píxeles 🚀.

Elementos visuales

Cálculo de Distancia usando Ultralytics YOLO11
Ultralytics YOLO11 Cálculo de Distancia

Ventajas del cálculo de distancias

  • Localización Precisión: Mejora el posicionamiento espacial preciso en tareas de visión artificial.
  • Estimación del tamaño: Permite la estimación del tamaño del objeto para una mejor comprensión contextual.
  • Comprensión de la escena: Mejora la comprensión de escenas 3D para una mejor toma de decisiones en aplicaciones como vehículos autónomos y sistemas de vigilancia.
  • Evitación de colisiones: Permite que los sistemas detecten posibles colisiones al monitorear las distancias entre objetos en movimiento.
  • Análisis espacial: Facilita el análisis de las relaciones e interacciones de los objetos dentro del entorno supervisado.
Cálculo de distancia
  • Haga clic en dos cuadros delimitadores cualesquiera con el botón izquierdo del ratón para calcular la distancia.
  • Utilice el botón derecho del ratón para borrar todos los puntos dibujados.
  • Haz clic con el botón izquierdo del ratón en cualquier lugar del marco para añadir nuevos puntos.
La Distancia es Estimada

La distancia es una estimación y puede no ser totalmente exacta porque se calcula utilizando datos 2D, que carecen de información de profundidad.

Cálculo de la distancia utilizando 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="yolo11n.pt",  # path to the YOLO11 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

DistanceCalculation() Argumentos

Aquí tiene una tabla con el DistanceCalculation argumentos:

ArgumentoTipoPredeterminadoDescripción
modelstrNoneRuta a un archivo de modeloYOLO Ultralytics .

También puede hacer uso de varios track argumentos en el DistanceCalculation solución.

ArgumentoTipoPredeterminadoDescripción
trackerstr'botsort.yaml'Especifica el algoritmo de seguimiento a utilizar, p. ej., bytetrack.yaml o botsort.yaml.
conffloat0.3Establece el umbral de confianza para las detecciones; los valores más bajos permiten rastrear más objetos, pero pueden incluir falsos positivos.
ioufloat0.5Establece el umbral de Intersección sobre Unión (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 del 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 cálculo para la ejecución del modelo.

Además, los siguientes argumentos de visualización están disponibles:

ArgumentoTipoPredeterminadoDescripción
showboolFalseSi 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_widthNone or intNoneEspecifica el ancho de línea de los cuadros delimitadores. Si None, el ancho de línea se ajusta automáticamente en función del tamaño de la imagen. Proporciona personalización visual para mayor claridad.
show_confboolTrueMuestra la puntuación de confianza para cada detección junto con la etiqueta. Ofrece información sobre la certeza del modelo para cada detección.
show_labelsboolTrueMuestra etiquetas para cada detección en la salida visual. Proporciona una comprensión inmediata de los objetos detectados.

Detalles de implementación

El DistanceCalculation La clase funciona rastreando objetos a través de fotogramas de vídeo y calculando la distancia euclidiana entre los centroides de los cuadros delimitadores seleccionados. Cuando hace clic en dos objetos, la solución:

  1. Extrae los centroides (puntos centrales) de los cuadros delimitadores seleccionados
  2. Calcula la distancia euclidiana entre estos centroides en píxeles
  3. Muestra la distancia en el fotograma con una línea de conexión entre los objetos.

La implementación utiliza el mouse_event_for_distance método para gestionar las interacciones del ratón, permitiendo a los usuarios seleccionar objetos y borrar selecciones según sea necesario. El process El método gestiona el procesamiento fotograma a fotograma, el seguimiento de objetos y el cálculo de distancias.

Aplicaciones

El cálculo de la distancia con YOLO11 tiene numerosas aplicaciones prácticas:

  • Análisis minorista: Mida la proximidad del cliente a los productos y analice la eficacia de la distribución de la tienda.
  • Seguridad Industrial: Supervisar las distancias de seguridad entre los trabajadores y la maquinaria
  • Gestión del tráfico: Analice el espaciamiento entre vehículos y detecte el seguimiento de cerca
  • Análisis deportivo: Calcula las distancias entre los jugadores, la pelota y las posiciones clave en el campo.
  • Atención médica: Garantizar el distanciamiento adecuado en las áreas de espera y supervisar el movimiento de los pacientes
  • Robótica: Permite a los robots mantener distancias adecuadas de obstáculos y personas.

Preguntas frecuentes

¿Cómo calculo las distancias entre objetos usando Ultralytics YOLO11?

Para calcular las distancias entre objetos utilizando Ultralytics YOLO11, necesitas identificar los centroides del cuadro delimitador de los objetos detectados. Este proceso implica la inicialización del DistanceCalculation clase de Ultralytics' solutions módulo y utilizando las salidas de seguimiento del modelo para calcular las distancias.

¿Cuáles son las ventajas de utilizar el cálculo de distancia con Ultralytics YOLO11?

Usar el cálculo de distancia con Ultralytics YOLO11 ofrece varias ventajas:

  • Precisión de la localización: Proporciona un posicionamiento espacial preciso para los objetos.
  • Estimación del tamaño: Ayuda a estimar los tamaños físicos, contribuyendo a una mejor comprensión contextual.
  • Comprensión de la escena: Mejora la comprensión de la escena 3D, lo que ayuda 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 video en vivo.
  • Capacidades de integración: Funciona a la perfección con otras soluciones YOLO11 como el seguimiento de objetos y la estimación de velocidad.

¿Puedo realizar cálculos de distancia en transmisiones de video en tiempo real con Ultralytics YOLO11?

Sí, puedes realizar el cálculo de la distancia en transmisiones de video en tiempo real con Ultralytics YOLO11. El proceso implica capturar fotogramas de video usando OpenCV, ejecutando YOLO11 detección de objetos, y utilizando el DistanceCalculation clase para calcular las distancias entre objetos en fotogramas sucesivos. Para una implementación detallada, consulte el ejemplo de flujo de video.

¿Cómo elimino los puntos dibujados durante el cálculo de la distancia usando Ultralytics YOLO11?

Para eliminar los puntos dibujados durante el cálculo de la distancia con Ultralytics YOLO11, puede utilizar el botón derecho del ratón. Esta acción borrará todos los puntos que haya dibujado. Para obtener más detalles, consulte la sección de notas en el ejemplo de cálculo de la distancia.

¿Cuáles son los argumentos clave para inicializar la clase DistanceCalculation en Ultralytics YOLO11?

Los argumentos clave para inicializar el DistanceCalculation Las clases en Ultralytics YOLO11 incluyen:

  • model: Ruta al archivo del modelo YOLO11.
  • tracker: Algoritmo de seguimiento a utilizar (el predeterminado es 'botsort.yaml').
  • conf: Umbral de confianza para las detecciones.
  • show: Indicador para mostrar la salida.

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



Creado hace 1 año ✏️ Actualizado hace 5 días
glenn-jocherRizwanMunawarMatthewNoyceUltralyticsAssistantjk4eIvorZhu331AyushExel

Comentarios