Ir al contenido

Análisis utilizando Ultralytics YOLO11

Introducción

Esta guía proporciona una visión general completa de tres tipos fundamentales de visualizaciones de datos: gráficos de líneas, diagramas de barras y gráficos circulares. Cada sección incluye instrucciones paso a paso y fragmentos de código sobre cómo crear estas visualizaciones utilizando Python.



Ver: Cómo generar gráficos analíticos utilizando Ultralytics | Gráficos de líneas, diagramas de barras, áreas y circulares

Muestras visuales

Gráfico de líneas Gráfico de barras Gráfico circular
Gráfico de líneas Gráfico de barras Gráfico circular

¿Por qué son importantes los gráficos?

  • Los gráficos de líneas son ideales para rastrear cambios durante períodos cortos y largos, y para comparar cambios de múltiples grupos durante el mismo período.
  • Los gráficos de barras, por otro lado, son adecuados para comparar cantidades entre diferentes categorías y mostrar relaciones entre una categoría y su valor numérico.
  • Por último, los gráficos circulares son efectivos para ilustrar proporciones entre categorías y mostrar partes de un todo.

Analytics utilizando Ultralytics YOLO

yolo solutions analytics show=True

# Pass the source
yolo solutions analytics source="path/to/video.mp4"

# Generate the pie chart
yolo solutions analytics analytics_type="pie" show=True

# Generate the bar plots
yolo solutions analytics analytics_type="bar" show=True

# Generate the area plots
yolo solutions analytics analytics_type="area" show=True
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))
out = cv2.VideoWriter(
    "analytics_output.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

# Initialize analytics object
analytics = solutions.Analytics(
    show=True,  # display the output
    analytics_type="line",  # pass the analytics type, could be "pie", "bar" or "area".
    model="yolo11n.pt",  # path to the YOLO11 model file
    # classes=[0, 2],  # display analytics for specific detection classes
)

# Process video
frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame

        # print(results)  # access the output

        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()  # destroy all opened windows

Analytics Argumentos

Aquí hay una tabla que describe los argumentos de Analytics:

Argumento Tipo Predeterminado Descripción
model str None Ruta al archivo del modelo YOLO de Ultralytics.
analytics_type str line Tipo de gráfico, es decir, line, bar, area, o pie.

También puede aprovechar diferentes track argumentos en el Analytics solución.

Argumento Tipo Predeterminado Descripción
tracker str 'botsort.yaml' Especifica el algoritmo de seguimiento a utilizar, p. ej., bytetrack.yaml o botsort.yaml.
conf float 0.3 Establece el umbral de confianza para las detecciones; los valores más bajos permiten rastrear más objetos, pero pueden incluir falsos positivos.
iou float 0.5 Establece el umbral de Intersección sobre Unión (IoU) para filtrar detecciones superpuestas.
classes list None Filtra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo rastrea las clases especificadas.
verbose bool True Controla la visualización de los resultados del seguimiento, proporcionando una salida visual de los objetos rastreados.
device str None Especifica 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.

Adicionalmente, se admiten 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. Útil para obtener información visual inmediata durante el desarrollo o las pruebas.
line_width None or int None Especifica 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.

Conclusión

Comprender cuándo y cómo utilizar diferentes tipos de visualizaciones es crucial para un análisis de datos eficaz. Los gráficos de líneas, los diagramas de barras y los gráficos circulares son herramientas fundamentales que pueden ayudarte a transmitir la historia de tus datos de forma más clara y eficaz. La solución de análisis Ultralytics YOLO11 proporciona una forma optimizada de generar estas visualizaciones a partir de tus resultados de detección de objetos y seguimiento, lo que facilita la extracción de información significativa de tus datos visuales.

Preguntas frecuentes

¿Cómo creo un gráfico de líneas usando Ultralytics YOLO11 Analytics?

Para crear un gráfico de líneas utilizando Ultralytics YOLO11 Analytics, sigue estos pasos:

  1. Cargue un modelo YOLO11 y abra su archivo de vídeo.
  2. Inicializar el Analytics clase con el tipo establecido en "line".
  3. Itere a través de los fotogramas de vídeo, actualizando el gráfico de líneas con los datos relevantes, como el recuento de objetos por fotograma.
  4. Guarde el vídeo de salida que muestra el gráfico de líneas.

Ejemplo:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="line",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Para obtener más detalles sobre la configuración del Analytics clase, visite la Análisis utilizando Ultralytics YOLO11 sección.

¿Cuáles son los beneficios de usar Ultralytics YOLO11 para crear gráficos de barras?

El uso de Ultralytics YOLO11 para crear gráficos de barras ofrece varias ventajas:

  1. Visualización de datos en tiempo real: Integre a la perfección los resultados de la detección de objetos en gráficos de barras para obtener actualizaciones dinámicas.
  2. Facilidad de uso: La API y las funciones sencillas facilitan la implementación y la visualización de los datos.
  3. Personalización: Personalice títulos, etiquetas, colores y más para que se ajusten a sus requisitos específicos.
  4. Eficiencia: Maneja eficientemente grandes cantidades de datos y actualiza los gráficos en tiempo real durante el procesamiento de vídeo.

Utiliza el siguiente ejemplo para generar un diagrama de barras:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="bar",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Para obtener más información, visite la sección Gráfico de Barras en la guía.

¿Por qué debería usar Ultralytics YOLO11 para crear gráficos circulares en mis proyectos de visualización de datos?

Ultralytics YOLO11 es una excelente opción para crear gráficos circulares porque:

  1. Integración con la detección de objetos: Integre directamente los resultados de la detección de objetos en gráficos circulares para obtener información inmediata.
  2. API fácil de usar: Fácil de configurar y usar con un código mínimo.
  3. Personalizable: Varias opciones de personalización para colores, etiquetas y más.
  4. Actualizaciones en tiempo real: Maneje y visualice datos en tiempo real, lo cual es ideal para proyectos de análisis de vídeo.

Aquí tiene un ejemplo rápido:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="pie",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Para más información, consulta la sección de Gráfico Circular en la guía.

¿Se puede usar Ultralytics YOLO11 para rastrear objetos y actualizar visualizaciones de forma dinámica?

Sí, Ultralytics YOLO11 se puede usar para rastrear objetos y actualizar visualizaciones de forma dinámica. Admite el seguimiento de múltiples objetos en tiempo real y puede actualizar varias visualizaciones, como gráficos de líneas, gráficos de barras y gráficos circulares, basándose en los datos de los objetos rastreados.

Ejemplo para el seguimiento y la actualización de un gráfico de líneas:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="line",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Para obtener información sobre la funcionalidad completa, consulte la sección de Seguimiento.

¿Qué diferencia a Ultralytics YOLO11 de otras soluciones de detección de objetos como OpenCV y TensorFlow?

Ultralytics YOLO11 destaca de otras soluciones de detección de objetos como OpenCV y TensorFlow por múltiples razones:

  1. Precisión de última generación: YOLO11 proporciona una precisión superior en tareas de detección de objetos, segmentación y clasificación.
  2. Facilidad de uso: La API intuitiva permite una rápida implementación e integración sin necesidad de una codificación extensa.
  3. Rendimiento en tiempo real: Optimizado para la inferencia de alta velocidad, adecuado para aplicaciones en tiempo real.
  4. Aplicaciones diversas: Admite varias tareas, incluido el seguimiento de múltiples objetos, el entrenamiento de modelos personalizados y la exportación a diferentes formatos como ONNX, TensorRT y CoreML.
  5. Documentación Completa: Amplia documentación y recursos de blog para guiar a los usuarios en cada paso.

Para comparaciones y casos de uso más detallados, explora nuestro Blog de Ultralytics.



📅 Creado hace 1 año ✏️ Actualizado hace 5 meses

Comentarios