Análise utilizando Ultralytics YOLO11
Introdução
Este guia fornece uma visão geral abrangente de três tipos fundamentais de visualizações de dados: gráficos de linhas, gráficos de barras e gráficos de pizza. Cada secção inclui instruções passo a passo e snippets de código sobre como criar estas visualizações utilizando Python.
Ver: Como gerar gráficos analíticos utilizando Ultralytics | Gráficos de linhas, gráficos de barras, gráficos de área e gráficos de pizza
Amostras visuais
Gráfico de linhas | Traçado de barras | Gráfico de pizza |
---|---|---|
![]() |
![]() |
![]() |
Porque é que os gráficos são importantes
- Os gráficos de linhas são ideais para acompanhar alterações em períodos curtos e longos e para comparar alterações de vários grupos durante o mesmo período.
- Os gráficos de barras, por outro lado, são adequados para comparar quantidades em diferentes categorias e mostrar relações entre uma categoria e o seu valor numérico.
- Por último, os gráficos de pizza são eficazes para ilustrar proporções entre categorias e mostrar partes de um todo.
Análise utilizando o 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
Eis um quadro que descreve os argumentos analíticos:
Argumento | Tipo | Predefinição | Descrição |
---|---|---|---|
model |
str |
None |
Caminho para o ficheiro do modelo Ultralytics YOLO . |
analytics_type |
str |
line |
Tipo de gráfico, ou seja line , bar , area , ou pie . |
Também é possível tirar partido de diferentes track
argumentos no Analytics
solução.
Argumento | Tipo | Predefinição | Descrição |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
Especifica o algoritmo de seguimento a utilizar, por exemplo, bytetrack.yaml ou botsort.yaml . |
conf |
float |
0.3 |
Define o limiar de confiança para as detecções; valores mais baixos permitem o seguimento de mais objectos, mas podem incluir falsos positivos. |
iou |
float |
0.5 |
Define o limiar de Intersecção sobre União (IoU) para filtrar detecções sobrepostas. |
classes |
list |
None |
Filtra os resultados por índice de classe. Por exemplo, classes=[0, 2, 3] só rastreia as classes especificadas. |
verbose |
bool |
True |
Controla a apresentação dos resultados do seguimento, fornecendo uma saída visual dos objectos seguidos. |
device |
str |
None |
Especifica o dispositivo para inferência (por exemplo, cpu , cuda:0 ou 0 ). Permite aos utilizadores selecionar entre CPU, um GPU específico, ou outros dispositivos de computação para a execução do modelo. |
Além disso, são suportados os seguintes argumentos de visualização:
Argumento | Tipo | Predefinição | Descrição |
---|---|---|---|
show |
bool |
False |
Se True apresenta as imagens ou vídeos anotados numa janela. Útil para feedback visual imediato durante o desenvolvimento ou teste. |
line_width |
None or int |
None |
Especifica a largura da linha das caixas delimitadoras. Se None A largura da linha é ajustada automaticamente com base no tamanho da imagem. Proporciona uma personalização visual para maior clareza. |
Conclusão
Compreender quando e como utilizar diferentes tipos de visualizações é crucial para uma análise de dados eficaz. Os gráficos de linhas, os gráficos de barras e os gráficos de pizza são ferramentas fundamentais que podem ajudá-lo a transmitir a história dos seus dados de forma mais clara e eficaz. A solução Ultralytics YOLO11 Analytics fornece uma forma simplificada de gerar estas visualizações a partir dos resultados da deteção e seguimento de objectos, facilitando a extração de informações significativas dos seus dados visuais.
FAQ
Como é que crio um gráfico de linhas utilizando Ultralytics YOLO11 Analytics?
Para criar um gráfico de linhas utilizando Ultralytics YOLO11 Analytics, siga estes passos:
- Carregue um modelo YOLO11 e abra o seu ficheiro de vídeo.
- Inicializar o
Analytics
com o tipo definido como "linha". - Iterar através dos fotogramas de vídeo, actualizando o gráfico de linhas com dados relevantes, como a contagem de objectos por fotograma.
- Guarde o vídeo de saída que apresenta o gráfico de linhas.
Exemplo:
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 mais pormenores sobre a configuração do Analytics
aula, visite o site Análise utilizando Ultralytics YOLO11 secção.
Quais são as vantagens de utilizar Ultralytics YOLO11 para criar gráficos de barras?
A utilização de Ultralytics YOLO11 para criar gráficos de barras oferece várias vantagens:
- Visualização de dados em tempo real: Integre perfeitamente os resultados da deteção de objectos em gráficos de barras para actualizações dinâmicas.
- Facilidade de utilização: A API e as funções simples facilitam a implementação e a visualização de dados.
- Personalização: Personalize títulos, etiquetas, cores e muito mais para atender às suas necessidades específicas.
- Eficiência: Lidar eficazmente com grandes quantidades de dados e atualizar os gráficos em tempo real durante o processamento de vídeo.
Utilize o seguinte exemplo para gerar um 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 saber mais, visite a secção Traçado de barras no guia.
Por que razão devo utilizar Ultralytics YOLO11 para criar gráficos de pizza nos meus projectos de visualização de dados?
Ultralytics YOLO11 é uma excelente escolha para criar gráficos de pizza porque:
- Integração com a deteção de objectos: Integre diretamente os resultados da deteção de objectos em gráficos de pizza para obter informações imediatas.
- API de fácil utilização: Simples de configurar e utilizar com um código mínimo.
- Personalizável: Várias opções de personalização para cores, etiquetas e muito mais.
- Actualizações em tempo real: Manipular e visualizar dados em tempo real, o que é ideal para projectos de análise de vídeo.
Eis um exemplo 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 obter mais informações, consulte a secção Gráfico de pizza no guia.
O Ultralytics YOLO11 pode ser utilizado para localizar objectos e atualizar visualizações de forma dinâmica?
Sim, o Ultralytics YOLO11 pode ser utilizado para seguir objectos e atualizar visualizações de forma dinâmica. Suporta o seguimento de vários objectos em tempo real e pode atualizar várias visualizações, como gráficos de linhas, gráficos de barras e gráficos de pizza, com base nos dados dos objectos seguidos.
Exemplo de seguimento e atualização de um gráfico de linhas:
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 saber mais sobre a funcionalidade completa, consulte a secção Seguimento.
O que torna o Ultralytics YOLO11 diferente de outras soluções de deteção de objectos como o OpenCV e o TensorFlow?
Ultralytics YOLO11 destaca-se de outras soluções de deteção de objectos como o OpenCV e o TensorFlow por várias razões:
- Precisão topo de gama: YOLO11 proporciona uma precisão superior em tarefas de deteção, segmentação e classificação de objectos.
- Facilidade de utilização: A API de fácil utilização permite uma implementação e integração rápidas sem necessidade de codificação extensiva.
- Desempenho em tempo real: Optimizado para inferência a alta velocidade, adequado para aplicações em tempo real.
- Diversas aplicações: Suporta várias tarefas, incluindo rastreio de vários objectos, formação de modelos personalizados e exportação para diferentes formatos, como ONNX, TensorRT e CoreML.
- Documentação abrangente: Documentação extensa e recursos de blogue para orientar os utilizadores em cada passo.
Para comparações mais detalhadas e casos de utilização, explore o nosso blogueUltralytics .