Skip to content
/ tfcv Public

Projeto de visão computacional para gestão do trânsito, mediante uso de ferramentas de IA para detecção, classificação, rastreamento e contagem de veículos.

Notifications You must be signed in to change notification settings

guiajf/tfcv

Repository files navigation

image

Projeto

Neste projeto, será utilizado o modelo pré-treinado yolov8n.pt, para detecção de objetos.

O código foi desenvolvido em Python, no Google Colab.

Arquivo de entrada

Utilizaremos um arquivo baixado do portal da Prefeitura Municipal de Juiz de Fora, com a captura do vídeo da câmara 16 (http://camerasjf.gctnet.com.br:8880/cameras/?cam=16), do cruzamento da Avenida Brasil com a Avenida Rio Branco, do dia 16/10/2023, com início às 10:49:32, e duração de 60 segundos, resolução 1920x1080, Codec de vídeo H.265, frame rate de 29.97 fps, bitrate de 448 kbps, fornecido em um container mkv, que é um envelope que incorpora múltiplos formatos multimídia.

Pré-processamento

Convertemos o arquivo de vídeo para o formato mp4, utilizando o seguinte script:

image

Implementação

Instalamos o pacote Ultralytics, que contém a classe YOLO:

image

Importamos as bibliotecas necessárias:

image

Uma variável recebe o arquivo de entrada:

image

Criamos um modelo de rede neural:

image

YOLOv8 é um grupo de modelos de rede neural, criados e treinados com a biblioteca Pytorch, exportados para arquivos com a extensão .pt. Há cinco tipos de modelos para cada tarefa (classificação, detecção, segmentação), e cinco modelos para cada tipo, de acordo com o tamanho do número de parâmetros de treinamento.

image

Lemos o arquivo de entrada:

image

Utilizamos a classe VideoWriter do opencv para criar o objeto de saída, no formato mp4. Utilizada para gravar arquivos de vídeo, recebe como parâmetros o nome do arquivo de saída, o codec utilizado para compressão, definido por um código de 4 caracteres(fourcc), a taxa de frames por segundo e o tamanho do vídeo:

image

Listamos as classes do dataset COCO, com 80 categorias, desenvolvido pela Microsoft (https://cocodataset.org/#home):

image

Criamos dicionários auxiliares:

image

Realizamos a leitura dos frames:

image

Ao processar a entrada, o modelo retorna os objetos que foram detectados e suas propriedades. Utilizamos o método "track" com o parâmetro "persist=True", para garantir que cada "id" seja único para o mesmo veículo:

image

Mapeamos algumas propriedades da caixa delimitadora:

  • cls: descreve a classe do objeto

  • conf: expressa o nível de confiança da predição

  • id: denota o identificador único do objeto

  • xyxy: indica as coordenadas da caixa delimitadora

image

Adicionamos rótulos às caixas delimitadoras, para exibir a classe e nível de confiança (ou id) do objeto detectado, desde que duas condições sejam atendidas simultaneamente (que a classe predita esteja contida no dicionário class_names e que a probabilidade seja superior a 0.3):

image

Inserimos no frame a contagem de veículos por tipo (a legenda deve ser posicionada à esquerda e centralizada verticalmente):

image

Salvamos o arquivo de saída, liberamos os objetos de captura e gravação e fechamos todos os frames:

image

Pós-processamento

Compactamos o arquivo de saída(reduzido a um terço do original):

image

Exibimos o arquivo de saída:

image


  1. Vídeo de saída com etiqueta contendo tipo de veículo e nível de confiança:

https://youtu.be/c38tcOMGmqE

  1. Vídeo de saída com etiqueta contendo tipo de veículo e id:

https://youtu.be/kaJSz4WAKGE

About

Projeto de visão computacional para gestão do trânsito, mediante uso de ferramentas de IA para detecção, classificação, rastreamento e contagem de veículos.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published