Saltar para o conteúdo

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
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.

Exemplos de análise

 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

Aqui está uma tabela com os Analytics argumentos:

Nome Tipo Predefinição Descrição
analytics_type str line Tipo de gráfico, ou seja, "linha", "barra", "área", "tarte"
model str None Caminho para Ultralytics YOLO Modelo de ficheiro
line_width int 2 Espessura da linha para caixas delimitadoras.
show bool False Sinalizador para controlar se o fluxo de vídeo deve ser apresentado.

Argumentos model.track

Argumento Tipo Predefinição Descrição
source str None Especifica o diretório de origem para imagens ou vídeos. Suporta caminhos de ficheiros e URLs.
persist bool False Permite o rastreio persistente de objectos entre fotogramas, mantendo as IDs nas sequências de vídeo.
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.

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.

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:

  1. Carregue um modelo YOLO11 e abra o seu ficheiro de vídeo.
  2. Inicializar o Analytics com o tipo definido como "linha".
  3. Iterar através dos fotogramas de vídeo, actualizando o gráfico de linhas com dados relevantes, como a contagem de objectos por fotograma.
  4. 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/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 mais pormenores sobre a configuração do Analytics aula, visite o site Análises 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:

  1. 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.
  2. Facilidade de utilização: A API e as funções simples facilitam a implementação e a visualização de dados.
  3. Personalização: Personalize títulos, etiquetas, cores e muito mais para atender às suas necessidades específicas.
  4. 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/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 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:

  1. 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.
  2. API de fácil utilização: Simples de configurar e utilizar com um código mínimo.
  3. Personalizável: Várias opções de personalização para cores, etiquetas e muito mais.
  4. 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/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 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/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 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:

  1. Precisão topo de gama: YOLO11 proporciona uma precisão superior em tarefas de deteção, segmentação e classificação de objectos.
  2. 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.
  3. Desempenho em tempo real: Optimizado para inferência a alta velocidade, adequado para aplicações em tempo real.
  4. 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.
  5. 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 .

📅C riado há 6 meses ✏️ Atualizado há 10 dias

Comentários