Ir para o conteúdo

Análise usando 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 seção inclui instruções passo a passo e trechos de código sobre como criar essas visualizações usando Python.



Assista: Como gerar Gráficos Analíticos usando Ultralytics | Gráficos de Linha, Gráficos de Barra, Área e Gráficos de Pizza

Amostras Visuais

Gráfico de Linhas Gráfico de Barras Gráfico de Setores
Gráfico de Linhas Gráfico de Barras Gráfico de Setores

Por que os gráficos são importantes?

  • Gráficos de linhas são ideais para rastrear mudanças em períodos curtos e longos e para comparar mudanças para vários grupos durante o mesmo período.
  • Gráficos de barras, por outro lado, são adequados para comparar quantidades entre diferentes categorias e mostrar relações entre uma categoria e seu valor numérico.
  • Por fim, os gráficos de pizza são eficazes para ilustrar proporções entre categorias e mostrar partes de um todo.

Analytics usando 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

Aqui está uma tabela que descreve os argumentos de Analytics:

Argumento Tipo Padrão Descrição
model str None Caminho para o arquivo do modelo Ultralytics YOLO.
analytics_type str line Tipo de gráfico, ou seja, line, bar, area, ou pie.

Também pode aproveitar diferentes track argumentos no Analytics solução.

Argumento Tipo Padrão Descrição
tracker str 'botsort.yaml' Especifica o algoritmo de rastreamento a ser usado, por exemplo, bytetrack.yaml ou botsort.yaml.
conf float 0.3 Define o limite de confiança para detecções; valores mais baixos permitem que mais objetos sejam rastreados, mas podem incluir falsos positivos.
iou float 0.5 Define o limite 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] rastreia apenas as classes especificadas.
verbose bool True Controla a exibição dos resultados de rastreamento, fornecendo uma saída visual dos objetos rastreados.
device str None Especifica o dispositivo para inferência (por exemplo, cpu, cuda:0 ou 0). Permite que os usuários selecionem entre CPU, uma GPU específica ou outros dispositivos de computação para a execução do modelo.

Adicionalmente, os seguintes argumentos de visualização são suportados:

Argumento Tipo Padrão Descrição
show bool False Se True, exibe as imagens ou vídeos anotados em uma 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. Fornece personalização visual para clareza.

Conclusão

Compreender quando e como usar diferentes tipos de visualizações é crucial para uma análise de dados eficaz. Gráficos de linhas, gráficos de barras e 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 oferece uma maneira simplificada de gerar essas visualizações a partir dos seus resultados de detecção de objetos e rastreamento, facilitando a extração de insights significativos dos seus dados visuais.

FAQ

Como crio um gráfico de linhas usando o Ultralytics YOLO11 Analytics?

Para criar um gráfico de linhas usando o Ultralytics YOLO11 Analytics, siga estes passos:

  1. Carregue um modelo YOLO11 e abra seu arquivo de vídeo.
  2. Inicializar o Analytics classe com o tipo definido como "line".
  3. Itere através de frames de vídeo, atualizando o gráfico de linhas com dados relevantes, como contagens de objetos por frame.
  4. Salvar o vídeo de saída exibindo 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 obter mais detalhes sobre a configuração do Analytics classe, visite o Análise usando Ultralytics YOLO11 secção.

Quais são os benefícios de usar o Ultralytics YOLO11 para criar gráficos de barras?

Usar o Ultralytics YOLO11 para criar gráficos de barras oferece vários benefícios:

  1. Visualização de Dados em Tempo Real: Integre perfeitamente os resultados da detecção de objetos em gráficos de barras para atualizações dinâmicas.
  2. Facilidade de Uso: API simples e funções tornam direto implementar e visualizar dados.
  3. Personalização: Personalize títulos, rótulos, cores e muito mais para atender aos seus requisitos específicos.
  4. Eficiência: Lidar eficientemente com grandes quantidades de dados e atualizar gráficos em tempo real durante o processamento de vídeo.

Use o exemplo a seguir 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 seção Gráfico de Barras no guia.

Por que devo usar Ultralytics YOLO11 para criar gráficos de pizza nos meus projetos de visualização de dados?

O Ultralytics YOLO11 é uma excelente escolha para criar gráficos de pizza porque:

  1. Integração com Detecção de Objetos: Integre diretamente os resultados da detecção de objetos em gráficos de pizza para obter insights imediatos.
  2. API Amigável: Simples de configurar e usar com o mínimo de código.
  3. Personalizável: Várias opções de personalização para cores, rótulos e muito mais.
  4. Atualizações em Tempo Real: Manipule e visualize dados em tempo real, o que é ideal para projetos de análise de vídeo.

Aqui está 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 seção Gráfico de Pizza no guia.

O Ultralytics YOLO11 pode ser usado para rastrear objetos e atualizar visualizações dinamicamente?

Sim, o Ultralytics YOLO11 pode ser usado para rastrear objetos e atualizar visualizações dinamicamente. Ele suporta o rastreamento de vários objetos 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 objetos rastreados.

Exemplo para rastrear e atualizar 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 seção Rastreamento.

O que torna o Ultralytics YOLO11 diferente de outras soluções de detecção de objetos como OpenCV e TensorFlow?

Ultralytics YOLO11 se destaca de outras soluções de detecção de objetos como OpenCV e TensorFlow por vários motivos:

  1. Precisão de Última Geração Accuracy: YOLO11 oferece precisão superior em tarefas de detecção de objetos, segmentação e classificação.
  2. Facilidade de Uso: A API amigável permite uma implementação e integração rápidas sem codificação extensa.
  3. Desempenho em Tempo Real: Otimizado para inferência de alta velocidade, adequado para aplicações em tempo real.
  4. Aplicações Diversas: Suporta várias tarefas, incluindo rastreamento de múltiplos objetos, treinamento de modelos personalizados e exportação para diferentes formatos como ONNX, TensorRT e CoreML.
  5. Documentação Abrangente: Extensa documentação e recursos de blog para guiar os usuários em cada etapa.

Para comparações e casos de uso mais detalhados, explore o nosso Blog da Ultralytics.



📅 Criado há 1 ano ✏️ Atualizado há 3 meses

Comentários