Verificação verde
Link copiado para a área de transferência

Melhorar as aplicações de visão por computador com visualizações

Aprende a transformar dados de aplicações de visão por computador em gráficos fáceis de compreender utilizando o pacote Ultralytics Python para obter melhores informações.

A cada minuto, são criadas enormes quantidades de dados, desde terminais de aeroportos e estações de comboios a centros comerciais. À medida que a IA se torna mais amplamente utilizada, muitos destes dados são agora analisados e decompostos. Mas, por vezes, os resultados destes modelos de IA podem dificultar a deteção de padrões ou a compreensão de tendências num relance. É aí que a visualização de dados ajuda - transforma resultados complexos em informações claras e fáceis de digerir.

Isto é especialmente verdade quando se trata de aplicações de visão por computador. A visão por computador é um ramo da inteligência artificial (IA) que ajuda as máquinas a interpretar e a compreender a informação visual do mundo circundante, como imagens e vídeos. Enquanto os modelos de IA de visão, como o Ultralytics YOLO11podem ajudar a analisar esses dados visuais para obter informações, a visualização de dados ajuda a colocar essas informações num formato fácil de compreender.

Simplificando, a visualização de dados preenche a lacuna entre os dados brutos e a compreensão real, utilizando gráficos analíticos significativos. No mundo atual, orientado para os dados, isto é fundamental porque não basta que as máquinas executem apenas tarefas - precisamos que contem uma história.

Essa necessidade de contar histórias é exatamente a razão pela qual a visualização de dados está a crescer, com o mercado a atingir 18,36 mil milhões de dólares até 2030. Anteriormente, explorámos a forma como a visão por computador pode fornecer valiosas informações comerciais. Hoje, vamos dar um passo adiante, explicando como gerar gráficos analíticos claros e perspicazes para aplicações de visão computacional usando o pacote Ultralytics . Vamos começar!

Fig. 1. Um exemplo de visualização de dados com base nos resultados do YOLO11.

Uma visão geral da visualização de dados em aplicações de visão por computador

A visualização de dados em aplicações de visão computacional envolve a transformação dos resultados de tarefas de visão computacional, como deteção e rastreamento de objetos, em gráficos ou painéis fáceis de entender. Esses recursos visuais ajudam a identificar padrões e tendências, especialmente ao trabalhar com grandes volumes de imagens de vídeo. 

Por exemplo, em vez de rever manualmente horas de vídeo de vigilância, um simples gráfico de linhas que mostre o número de carros ou pessoas detectadas ao longo do tempo pode destacar rapidamente as horas de pico ou períodos invulgarmente calmos.

Eis algumas das principais razões pelas quais a visualização de dados é útil:

  • Simplifica dados complexos: Milhares de detecções de objectos podem ser esmagadoras, mas visualizações como gráficos de barras ou de tartes facilitam a visualização do panorama geral, por exemplo, quais os objectos que aparecem com maior frequência.
  • Revela tendências: Os gráficos de linhas e barras ajudam a identificar padrões ao longo do tempo, tais como quando e onde o tráfego pedonal tende a aumentar.
  • Poupa tempo: Em vez de rever todos os fotogramas de vídeo, os gráficos podem destacar rapidamente detalhes importantes, como picos repentinos na atividade dos veículos ou aparecimento de objectos invulgares em zonas restritas.
  • Melhora a comunicação: Os recursos visuais facilitam a partilha de informações com públicos não técnicos, ajudando todos a compreender os resultados de forma mais clara.

Diferentes tipos de visualizações de dados

Diferentes tipos de gráficos analíticos podem transformar os resultados da visão computacional em imagens claras e fáceis de entender. Digamos que estás a trabalhar numa aplicação de visão por computador que detecta pessoas e veículos em imagens de vigilância. Nesse caso, um gráfico de linhas é ótimo para mostrar como o número de detecções muda ao longo do tempo, como rastrear picos de tráfego de pedestres ao longo do dia.

Da mesma forma, os gráficos de barras são úteis quando queres comparar o número de diferentes tipos de objectos detectados, por exemplo, para ver se aparecem mais carros, bicicletas ou peões no vídeo. Os gráficos de pizza, por outro lado, mostram a percentagem que cada tipo de objeto representa do total de detecções. Cada gráfico tem a sua própria utilização e ajuda a tornar os dados complexos da visão por computador mais fáceis de interpretar e partilhar.

Fig. 2. Exemplos de gráficos analíticos.

Gerar gráficos analíticos para obter informações sobre a visão por computador

Agora que já explorámos o que é a visualização de dados e porque é que os diferentes tipos de gráficos analíticos são importantes, vamos analisar mais detalhadamente como utilizar a soluçãoUltralytics Analytics para visualizar os resultados das previsões do teu modelo de visão por computador. Antes de percorrermos o processo passo a passo, vamos ver as ferramentas e as opções de configuração para treinar e utilizar o pacote Ultralytics e modelos como o YOLO11. 

O pacote Ultralytics Python facilita o treino de modelos, a deteção de objectos, a execução de previsões e a visualização de resultados. Para começar a utilizá-lo, necessitarás de um ambiente de codificação. Aqui tens três opções simples:

  • Interface de linha de comando (CLI): É uma ferramenta básica, apenas de texto, onde podes escrever comandos para executar o teu código. Não tem uma interface visual e interage com ela escrevendo instruções num terminal ou numa linha de comandos.
  • Jupyter Notebooks: É um ambiente de codificação interativo onde podes escrever, executar e testar pequenas partes de código (chamadas "células"), uma de cada vez. Mostra os resultados diretamente por baixo de cada célula, facilitando a compreensão do que está a acontecer passo a passo. É especialmente útil para a aprendizagem e a experimentação.
  • Google Colab: Esta opção é uma versão gratuita e baseada na nuvem dos Jupyter Notebooks que funciona no teu navegador Web. Não requer qualquer configuração no teu computador e dá-te acesso a GPUs gratuitas para um processamento mais rápido.

Estas ferramentas são óptimas para começar rapidamente, mas os utilizadores também podem integrar Ultralytics em ambientes de desenvolvimento integrado (IDEs) como o Visual Studio Code (VS Code) ou em pipelines de produção. Para obter mais opções, explora a documentação oficial Ultralytics .

Passo 1: Configurar o ambiente

Depois de escolheres o teu ambiente preferido, o passo seguinte é configurá-lo para executar previsões e visualizar os resultados. Podes utilizar qualquer um dos ambientes mencionados acima, dependendo do que te for mais confortável.

Se estiveres a trabalhar no Google Colab, tem em atenção que este utiliza uma CPU por predefinição, o que pode diminuir o desempenho. Para acelerar o processo, muda para uma GPU , indo ao menu "Tempo de execução", selecionando "Alterar tipo de tempo de execução" e definindo o acelerador de hardware para GPU (idealmente um T4).

Para preparares o teu ambiente, terás de instalar o pacoteUltralytics Python utilizando o comando mencionado abaixo. Em ferramentas baseadas em notebooks, como o Colab ou o Jupyter, certifica-te de que adicionas um ponto de exclamação (!) antes do comando.

pip install ultralytics

Passo 2: Transferir um ficheiro de vídeo

A seguir, precisas de um vídeo para trabalhar. Podes facilmente descarregar um de um site de stock gratuito como o Pexels. Certifica-te de que escolhes um vídeo que inclua objectos YOLO11 consiga detetar. Como o modelo é pré-treinado no conjunto de dados COCO, ele pode reconhecer objetos comuns, como pessoas, carros e bicicletas. 

Para este tutorial, vamos utilizar um vídeo de manuseamento de bagagens num terminal de aeroporto movimentado. Podes usar o mesmo vídeo ou escolher um diferente que se adeqúe ao teu projeto.

Fig. 3. Um fotograma do vídeo de entrada que mostra o manuseamento de bagagens num terminal de aeroporto.

Passo 3: Importação de pacotes

Em seguida, podes importar as bibliotecas necessárias e carregar o vídeo de entrada.

Começaremos por importar o OpenCV (cv2), que é uma biblioteca muito utilizada para trabalhar com imagens e vídeo em visão computacional. Também vamos importar a biblioteca Ultralytics , que nos ajuda a executar a deteção de objectos e a gerar análises a partir do vídeo.

Depois, vamos tentar abrir o ficheiro de vídeo especificando o seu caminho. Certifica-te de que substituis "path/to/video.mp4" pela localização real do teu ficheiro de vídeo transferido. 

Além disso, o trecho de código abaixo inclui uma verificação simples para garantir que o vídeo seja carregado corretamente. Se o caminho estiver errado ou o ficheiro estiver corrompido, o programa pára e mostra uma mensagem de erro: "Erro ao ler o ficheiro de vídeo."

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

Passo 4: Preparar o gravador de vídeo

Em seguida, configuraremos um gravador de vídeo para salvar o resultado. Quando executarmos a análise, esta parte do código criará um novo ficheiro de vídeo que regista os gráficos actualizados gerados a partir de cada fotograma do vídeo original.

No trecho de código abaixo, primeiro extraímos as principais propriedades do vídeo de entrada - sua largura, altura e quadros por segundo (fps). Estes valores são retirados diretamente do vídeo e convertidos em números inteiros para garantir que estão no formato correto para escrever o resultado.

Em seguida, usamos a função cv2.VideoWriter para criar um novo arquivo de vídeo, chamado "analytics_output.avi" (podes renomeá-lo conforme necessário). O vídeo é guardado utilizando o formato MJPG, que é um método de compressão de vídeo comum. A resolução de saída é definida para 1280×720 pixéis, independentemente do tamanho do vídeo original.

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), 
)

Passo 5: Configurar a solução Ultralytics Analytics

Agora, vamos configurar a solução Ultralytics Analytics para gerar gráficos a partir do vídeo. Podes escolher a forma como os dados são apresentados, como um gráfico de linhas, de tartes, de áreas ou de barras, e qual o modeloYOLO a utilizar. Neste exemplo, utilizaremos o modelo leve "yolo11n.pt" e mostraremos os resultados como um gráfico de área.

analytics = solutions.Analytics(
    show=True, 
    analytics_type="area", 
    model="yolo11n.pt",   
)

Passo 6: Processa o vídeo de entrada

A parte final do código executa um loop que processa o vídeo um quadro de cada vez. Cada quadro é passado para a ferramenta de análise, que atualiza o gráfico em tempo real. O gráfico atualizado é então gravado no vídeo de saída. Se um quadro não puder ser lido, o loop pára. Depois que todos os quadros são processados, o vídeo é salvo e todas as janelas abertas são fechadas.

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count) 

        out.write(results.plot_im) 
    else:
        break
cap.release()
out.release()
cv2.destroyAllWindows() 

Etapa 7: Colocar tudo junto

Finalmente, vamos juntar tudo. Com apenas algumas linhas de código extra, podemos gerar dois vídeos de saída: um que mostra os resultados dadeteção de objectos YOLO11 com caixas delimitadoras e etiquetas, e outro que mostra os gráficos analíticos em tempo real.

Para isso, vamos configurar duas instâncias VideoWriter - uma para guardar o vídeo de previsão e outra para a análise. Esta versão do código inclui o rastreio de objectos e a geração de gráficos, para que possas ver os resultados da deteção juntamente com as informações visuais.

Aqui tens o código completo, juntamente com exemplos dos resultados da previsão e da análise.

import cv2
from ultralytics import YOLO, solutions

# Load model and video
model = YOLO('yolo11n.pt')
cap = cv2.VideoCapture('path/to/video.mp4')
assert cap.isOpened(), "Error opening video"

# Get properties
w, h = int(cap.get(3)), int(cap.get(4))
fps = cap.get(5)
analytics_res = (1280, 720)

# Writers for prediction and analytics videos
out_pred = cv2.VideoWriter('output_predictions.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, (w, h))
out_ana = cv2.VideoWriter('output_analytics.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, analytics_res)

# Analytics setup
analytics = solutions.Analytics(show=True, analytics_type="area", model='yolo11n.pt')

# Process frames
frame_count = 0
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    frame_count += 1
    pred_frame = model.track(frame, persist=True)[0].plot()
    out_pred.write(pred_frame)

    resized = cv2.resize(pred_frame, analytics_res)
    out_ana.write(analytics(resized, frame_count).plot_im)

cap.release(), out_pred.release(), out_ana.release(), cv2.destroyAllWindows()

Quando o código acima for executado com êxito, ele gerará dois vídeos de saída. O ficheiro "output_predictions.avi" mostrará os resultados da deteção de objectos com caixas delimitadoras e etiquetas, enquanto o ficheiro "output_analytics.avi" mostrará os gráficos analíticos em tempo real com base nas detecções.

Fig. 4. Um fotograma do ficheiro "output_predictions.avi".

Aqui está um quadro da saída de análise com base nas previsões. Usando o gráfico de área, podemos obter informações como flutuações na contagem de malas ao longo do tempo, como um pico em torno do quadro 268, indicando movimento ou atividade de malas nessa parte do vídeo.

Fig. 5. Previsões YOLO11 visualizadas como um gráfico de área.

Utilizar gráficos em aplicações de visão computacional do mundo real

Eis algumas aplicações de visão computacional do mundo real em que a visualização de dados tem um impacto significativo:

  • Cuidados de saúde: Os sistemas de visão por computador podem monitorizar a atividade dos pacientes, o movimento do pessoal e a utilização do equipamento em tempo real. Isso gera grandes quantidades de dados visuais que, quando visualizados, podem revelar padrões - como picos de ocupação de pacientes ou atrasos de resposta.
  • Retalho e comércio eletrónico: A IA de visão pode ser utilizada para seguir o movimento dos clientes, o tempo de permanência em frente às prateleiras e as interações com os produtos. A análise visual, como gráficos de barras ou de pizza, pode destacar quais as zonas da loja ou os artigos que recebem mais atenção, ajudando os retalhistas a otimizar a colocação de produtos e a melhorar as conversões.
  • Fabrico: As câmaras equipadas com modelos de visão por computador podem monitorizar as linhas de montagem quanto a defeitos, violações de segurança ou estado do equipamento. A visualização de dados pode mostrar tendências nos tipos de defeitos mais comuns ou destacar períodos de tempo com as taxas de erro mais altas, permitindo uma tomada de decisão mais rápida e manutenção preventiva.

Principais conclusões

Com o pacote Ultralytics , podes transformar facilmente as imagens de vídeo em gráficos claros e perspicazes que revelam o que está a acontecer, como por exemplo, o número de pessoas ou objectos que aparecem ao longo do tempo. Em vez de rever manualmente horas de vídeo, pode gerar resumos visuais que destacam padrões e tendências importantes, facilitando a ação rápida. Quer seja em hospitais, lojas de retalho ou instalações de produção, estes gráficos transformam resultados complexos de IA em informações que qualquer pessoa pode compreender e utilizar.

Queres saber mais sobre IA? Explora o nosso repositório GitHub, liga-te à nossa comunidade e verifica as nossas opções de licenciamento para iniciares o teu projeto de visão por computador. Descobre mais sobre inovações como a IA no fabrico e a visão por computador na indústria logística nas nossas páginas de soluções.

Logótipo do LinkedInLogótipo do TwitterLogótipo do FacebookSímbolo de ligação de cópia

Ler mais nesta categoria

Vamos construir juntos o futuro
da IA!

Começa a tua viagem com o futuro da aprendizagem automática