Ir al contenido

Análisis mediante Ultralytics YOLO11

Introducción

Esta guía proporciona una visión general 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.



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

Muestras visuales

Gráfico lineal Diagrama de barras Gráfico circular
Gráfico lineal Diagrama de barras Gráfico circular

Por qué son importantes los gráficos

  • Los gráficos de líneas son ideales para seguir los cambios durante periodos cortos y largos y para comparar los cambios de varios grupos durante el mismo periodo.
  • Los diagramas de barras, por su parte, son adecuados para comparar cantidades entre distintas categorías y mostrar las relaciones entre una categoría y su valor numérico.
  • Por último, los gráficos circulares son eficaces para ilustrar proporciones entre categorías y mostrar partes de un todo.

Análisis con 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

He aquí una tabla con los argumentos de Analytics:

Argumento Tipo Por defecto Descripción
model str None Ruta al archivo del modeloYOLO Ultralytics .
analytics_type str line Tipo de gráfico, es decir line, bar, areao pie.

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

Argumento Tipo Por defecto Descripción
tracker str 'botsort.yaml' Especifica el algoritmo de seguimiento a utilizar, por ejemplo, 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 las detecciones solapadas.
classes list None Filtra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] sólo rastrea las clases especificadas.
verbose bool True Controla la visualización de los resultados del rastreo, proporcionando una salida visual de los objetos rastreados.
device str None Especifica el dispositivo para la inferencia (por ejemplo, cpu, cuda:0 o 0). Permite a los usuarios seleccionar entre CPU, un GPU específico u otros dispositivos de cálculo para la ejecución del modelo.

Además, se admiten los siguientes argumentos de visualización:

Argumento Tipo Por defecto Descripción
show bool False Si Truemuestra las imágenes o vídeos anotados en una ventana. Resulta ú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 NoneEl 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

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

PREGUNTAS FRECUENTES

¿Cómo puedo crear un gráfico de líneas con Ultralytics YOLO11 Analytics?

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

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

Por 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 más detalles sobre la configuración del Analytics visite la página Análisis mediante Ultralytics YOLO11 sección.

¿Cuáles son las ventajas de utilizar 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 perfectamente los resultados de detección de objetos en gráficos de barras para actualizaciones dinámicas.
  2. Facilidad de uso: la API y las funciones sencillas facilitan la aplicación y visualización de los datos.
  3. Personalización: Personalice títulos, etiquetas, colores y mucho más para adaptarlos a sus requisitos específicos.
  4. Eficacia: Maneje eficazmente grandes cantidades de datos y actualice los gráficos en tiempo real durante el procesamiento de vídeo.

Utilice el siguiente ejemplo para generar un gráfico 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 Trama de barras de la guía.

¿Por qué debería utilizar 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 utilizar con un código mínimo.
  3. Personalizable: Varias opciones de personalización para colores, etiquetas y mucho más.
  4. Actualizaciones en tiempo real: Maneje y visualice datos en tiempo real, lo que resulta ideal para proyectos de análisis de vídeo.

He aquí 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, consulte la sección Gráfico circular de la guía.

¿Puede utilizarse Ultralytics YOLO11 para rastrear objetos y actualizar dinámicamente las visualizaciones?

Sí, Ultralytics YOLO11 puede utilizarse para rastrear objetos y actualizar visualizaciones dinámicamente. Admite el seguimiento de varios objetos en tiempo real y puede actualizar diversas visualizaciones, como gráficos de líneas, diagramas de barras y gráficos circulares, basándose en los datos de los objetos rastreados.

Ejemplo de seguimiento y actualización de un gráfico lineal:

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 conocer la funcionalidad completa, consulte la sección Seguimiento.

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

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

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

Para obtener comparaciones y casos de uso más detallados, consulte nuestro blogUltralytics .

Creado hace 10 meses ✏️ Actualizado hace 8 días

Comentarios