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 |
---|---|---|
![]() |
![]() |
![]() |
¿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:
- Cargue un modelo YOLO11 y abra su archivo de vídeo.
- Inicializar el
Analytics
clase con el tipo establecido en "line". - 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.
- 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:
- 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.
- Facilidad de uso: La API y las funciones sencillas facilitan la implementación y la visualización de los datos.
- Personalización: Personalice títulos, etiquetas, colores y más para que se ajusten a sus requisitos específicos.
- 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:
- 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 usar con un código mínimo.
- Personalizable: Varias opciones de personalización para colores, etiquetas y más.
- 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:
- Precisión de última generación: YOLO11 proporciona una precisión superior en tareas de detección de objetos, segmentación y clasificación.
- Facilidad de uso: La API intuitiva permite una rápida implementación e integración sin necesidad de una codificación extensa.
- Rendimiento en tiempo real: Optimizado para la inferencia de alta velocidad, adecuado para aplicaciones en tiempo real.
- 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.
- 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.