Análisis mediante Ultralytics YOLO26

Introducción

Esta guía ofrece una visión general completa de tres tipos fundamentales de visualizaciones de datos: gráficos de líneas, gráficos 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 usando Python.



Watch: How to generate Analytical Graphs using Ultralytics | Line Graphs, Bar Plots, Area and Pie Charts

Ejemplos visuales

Gráfico de líneasGráfico de barrasGráfico circular
Gráfico de líneas de análisis de YOLO para seguimiento de objetosGráfico de barras de análisis de YOLO para conteos de detecciónGráfico circular de análisis de YOLO para distribución de clases

Por qué son importantes los gráficos

  • Los gráficos de líneas son ideales para seguir cambios a corto y largo plazo y para comparar cambios entre 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 eficaces para ilustrar proporciones entre categorías y mostrar partes de un todo.
Análisis mediante 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

Argumentos de Analytics

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

ArgumentoTipoPor defectoDescripción
modelstrNoneRuta a un archivo de modelo de Ultralytics YOLO.
analytics_typestr'line'Tipo de gráfico, es decir, line, bar, area o pie.

También puedes aprovechar diferentes argumentos de track en la solución de Analytics.

ArgumentoTipoPor defectoDescripción
trackerstr'botsort.yaml'Especifica el algoritmo de seguimiento que usar, p. ej., bytetrack.yaml o botsort.yaml.
conffloat0.1Establece el umbral de confianza para las detecciones; valores más bajos permiten seguir más objetos, pero pueden incluir falsos positivos.
ioufloat0.7Establece el umbral de Intersection over Union (IoU) para filtrar detecciones superpuestas.
classeslistNoneFiltra resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo realiza el seguimiento de las clases especificadas.
verboseboolTrueControla la visualización de los resultados de seguimiento, proporcionando una salida visual de los objetos seguidos.
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, se admiten los siguientes argumentos de visualización:

ArgumentoTipoPor defectoDescripción
showboolFalseSi es 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_widthint or NoneNoneEspecifica el grosor de línea de los cuadros delimitadores. Si es None, el grosor se ajusta automáticamente según el tamaño de la imagen. Proporciona personalización visual para mayor claridad.

Conclusión

Entender cuándo y cómo usar diferentes tipos de visualizaciones es crucial para un análisis de datos eficaz. Los gráficos de líneas, los gráficos de barras y los gráficos circulares son herramientas fundamentales que pueden ayudarte a transmitir la historia de tus datos con mayor claridad y eficacia. La solución Analytics de Ultralytics YOLO26 proporciona una forma simplificada de generar estas visualizaciones a partir de tus resultados de detección de objetos y seguimiento, facilitando la extracción de información significativa de tus datos visuales.

Preguntas frecuentes

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

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

  1. Carga un modelo YOLO26 y abre tu archivo de vídeo.
  2. Inicializa la clase Analytics con el tipo establecido en "line".
  3. Itera a través de los fotogramas del 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 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 de la clase Analytics, visita la sección Análisis mediante Ultralytics YOLO26.

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

Usar Ultralytics YOLO26 para crear gráficos de barras ofrece varios beneficios:

  1. Visualización de datos en tiempo real: Integra perfectamente los resultados de detección de objetos en gráficos de barras para obtener actualizaciones dinámicas.
  2. Facilidad de uso: Una API y funciones sencillas hacen que sea muy directo implementar y visualizar datos.
  3. Personalización: Personaliza títulos, etiquetas, colores y más para adaptarlos a tus necesidades específicas.
  4. Eficiencia: Maneja grandes cantidades de datos de forma eficiente y actualiza los gráficos en tiempo real durante el procesamiento de vídeo.

Usa 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, visita la sección Gráfico de barras en la guía.

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

Ultralytics YOLO26 es una excelente elección para crear gráficos circulares porque:

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

Aquí tienes 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 Gráfico circular en la guía.

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

Sí, Ultralytics YOLO26 se puede usar para seguir 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 basados en los datos de los objetos seguidos.

Ejemplo para seguimiento y 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 conocer la funcionalidad completa, consulta la sección Seguimiento.

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

Ultralytics YOLO26 destaca sobre otras soluciones de detección de objetos como OpenCV y TensorFlow por varias razones:

  1. Precisión de vanguardia: YOLO26 proporciona una precisión superior en tareas de detección de objetos, segmentación de instancias, segmentación semántica y clasificación.
  2. Facilidad de uso: Una API fácil de usar permite una implementación e integración rápidas sin necesidad de mucha programación.
  3. Rendimiento en tiempo real: Optimizado para una inferencia de alta velocidad, adecuado para aplicaciones en tiempo real.
  4. Diversas aplicaciones: Admite varias tareas, incluyendo seguimiento multi-objeto, entrenamiento de modelos personalizados y 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 más detalladas y casos de uso, explora nuestro Blog de Ultralytics.

Comentarios