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 |
---|---|---|
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.
Ejemplos de análisis
yolo solutions analytics show=True
# pass the source
yolo solutions analytics source="path/to/video/file.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/file.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))
# Video writer
out = cv2.VideoWriter(
"ultralytics_analytics.avi",
cv2.VideoWriter_fourcc(*"MJPG"),
fps,
(1920, 1080), # This is fixed
)
# Init analytics
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], # If you want to count specific classes i.e person and car with COCO pretrained model.
)
# Process video
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if success:
frame_count += 1
im0 = analytics.process_data(im0, frame_count) # update analytics graph every frame
out.write(im0) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
Argumento Analytics
Aquí tiene una tabla con los Analytics
argumentos:
Nombre | Tipo | Por defecto | Descripción |
---|---|---|---|
analytics_type |
str |
line |
Tipo de gráfico: "línea", "barra", "área", "tarta". |
model |
str |
None |
Ruta de acceso al archivo del modelo Ultralytics YOLO |
line_width |
int |
2 |
Grosor de línea de los cuadros delimitadores. |
show |
bool |
False |
Indicador para controlar si se muestra el flujo de vídeo. |
Argumentos model.track
Argumento | Tipo | Por defecto | Descripción |
---|---|---|---|
source |
str |
None |
Especifica el directorio de origen de las imágenes o vídeos. Admite rutas de archivo y URL. |
persist |
bool |
False |
Permite el seguimiento persistente de objetos entre fotogramas, manteniendo los ID en todas las secuencias de vídeo. |
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. |
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 lineales, de barras y circulares son herramientas fundamentales que pueden ayudarte a transmitir la historia de tus datos de forma más clara y eficaz.
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:
- Cargue un modelo YOLO11 y abra su archivo de vídeo.
- Inicializar el
Analytics
con el tipo "línea". - 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.
- 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/file.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,
(1920, 1080), # 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
im0 = analytics.process_data(im0, frame_count) # update analytics graph every frame
out.write(im0) # 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 Analítica utilizando 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:
- 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.
- Facilidad de uso: la API y las funciones sencillas facilitan la aplicación y visualización de los datos.
- Personalización: Personalice títulos, etiquetas, colores y mucho más para adaptarlos a sus requisitos específicos.
- 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/file.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,
(1920, 1080), # 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
im0 = analytics.process_data(im0, frame_count) # update analytics graph every frame
out.write(im0) # 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:
- 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.
- API fácil de usar: Fácil de configurar y utilizar con un código mínimo.
- Personalizable: Varias opciones de personalización para colores, etiquetas y mucho más.
- 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/file.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,
(1920, 1080), # 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
im0 = analytics.process_data(im0, frame_count) # update analytics graph every frame
out.write(im0) # 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/file.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,
(1920, 1080), # 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
im0 = analytics.process_data(im0, frame_count) # update analytics graph every frame
out.write(im0) # 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:
- Precisión de vanguardia: YOLO11 proporciona una precisión superior en tareas de detección, segmentación y clasificación de objetos.
- 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.
- Rendimiento en tiempo real: Optimizado para la inferencia de alta velocidad, adecuado para aplicaciones en tiempo real.
- 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.
- 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 .