Skip to main content

Tracking é um projeto de visão computacional que otimiza o rastreamento de objetos. Combina YOLOv8 para detecção em intervalos programados, reduzindo o custo computacional, e OpenCV para rastreamento em tempo real. Uma solução eficiente e econômica para monitoramento de objetos.

Project description

Tracking

Este projeto visa a criação de uma técnica para otimizar o tempo de processamento no rastreamento de objetos, utilizando visão computacional.

O sistema consiste em empregar duas tecnologias para a detecção de objetos: YOLOv8 e OpenCV. O conceito é utilizar o YOLO em um loop com um intervalo de tempo determinado em uma thread, enquanto o OpenCV é utilizado para detectar objetos em tempo real. Em outras palavras, o YOLO (com alto custo de processamento) é executado a cada X intervalo de tempo para a detecção de objetos, e os resultados são então enviados para o OpenCV, que opera em tempo real para realizar o Tracking.

Vison Forge Result

Teoria

O YOLO, por ser uma tecnologia que demanda considerável poder de processamento, foi incorporado neste projeto como um ajuste no método de Template Matching (OpenCV), o qual requer baixo processamento. Dessa forma, o YOLO é utilizado para a detecção, enquanto o OpenCV realiza o rastreamento do objeto.

O YOLO gera caixas delimitadoras armazenadas em variáveis compartilhadas. Essas caixas são, então, repassadas para o OpenCV como imagens de template. A partir dessas delimitações, também são geradas as Larger Images, que são ajustadas com base nas configurações e variáveis: HORIZONTAL_EXPANSION e VERTICAL_EXPANSION. Essas imagens representam onde ocorre a detecção. Isso assegura um alto desempenho, mesmo no Template Matching, devido à menor área de detecção em comparação com o frame original.

Transformações das Boundig Boxes

O tempo de execução de cada ciclo do YOLO é determinado pela variável yolo_period. Esse intervalo pode ser configurado manualmente ou definido automáticamente como a média do tempo de processamento do modelo em seu computador. Esse tempo impacta principalmente na precisão da detecção, visto que é o YOLO que ajusta a detecção do OpenCV. Assim, é possível optar por um modelo mais leve do YOLO, como o YOLOv8n, ou um mais robusto, como o YOLOv8x, sem afetar o FPS.

Para compreender o processo, visualize-o como uma linha do tempo: o YOLO é executado no início para identificar todos os objetos no frame. Em seguida, esses objetos são repassados para o OpenCV, que os rastreia até que ocorra uma nova identificação pelo YOLO, reiniciando assim o ciclo.

Linha do Tempo YOLO OpenCV

Como Usar

A ideia é que, no futuro, essa técnica seja aprimorada para uma biblioteca. Por enquanto, se desejar executá-la, basta rodar o arquivo capture.py usando alguns argumentos de linha de comando:

--path, -f: Indica o caminho para um arquivo de vídeo. Não se limite apenas a arquivos; você pode digitar um link ou o endereço de uma câmera também.

--period, -t: Espaço de tempo de cada detecção do YOLO. Caso não especifique o tempo, ele será ajustado para o tempo médio de processamento do modelo YOLO.

--htracking: Essa opção habilita o ajuste na Larger Image na Horizontal.

--vtracking: Essa opção habilita o ajuste na Larger Image na Vertical.

Exemplo

Com Video .mp4

python capture.py -f video_relatorio.mp4 --htracking --vtracking

Com Câmera

python capture.py -f 0 -t 3 --htracking --vtracking

Com Link

python capture.py -f http://198.168.1.1:8550 --htracking --vtracking

É possível também configurar algumas variáveis do código:

HORIZONTAL_EXPANSION: Quantidade de Pixels que serão somados na Horizontal.

VERTICAL_EXPANSION: Quantidade de Pixels que serão somados na Vertical.

MAX_WIDTH_RESOLUTION: Variável que limita a resolução do Vídeo/Câmera.

MAX_HEIGHT_RESOLUTION: Variável que limita a resolução do Vídeo/Câmera.

model = YOLO...: Caminho do Modelo YOLO.

CONFIDENCE_YOLO: Valor Mínimo de Precisão do Modelo YOLO.

CONFIDENCE_OPENCV: Valor Mínimo de Precisão do Método OpenCV.

EUCLIDEAN_DISTANCE: Valor Máximo da Distância euclidiana.

Resultados v1.0-beta

Todos os resultados apresentados foram feitos na seguinte configuração de máquina:

Processador: Intel® Core™ i5-3470 @ 3.20GHz
GPU: Nenhuma
Ram: 8GB
SO: Windows 10

YOLO Model: YOLOv8n
yolo_period: default
Método Template Matching: TM_CCORR_NORMED

Videos: Comparação de Quadros por segundo

OBS: Pode ter ocorrido perda de FPS devido à gravação

Tracking

maxresdefault_vf.jpg Vídeo de Олександр Копєйкін no Pixabay

YOLO

maxresdefault_vf.jpg Vídeo de Олександр Копєйкін no Pixabay

É possível distinguir a taxa de quadros entre os vídeos, e essa diferença também é visível ao observarmos o FPS ao longo de todo o vídeo.

Compração de FPS Tracking x YOLO

Podemos notar que, enquanto o YOLO não ultrapassa 5 FPS, o Tracking mantém sua predominância acima dos 50 FPS. Também é perceptível a forma como o FPS se comporta, assemelhando-se a uma onda quadrática. Esse efeito está relacionado ao tempo do yolo_period, no qual a detecção do Template Matching causa a queda do FPS. Isso é evidenciado na imagem a seguir, na qual o yolo_period foi ajustado para 5 segundos.

FPS com yolo_period = 5s

Comparação de Caixas ao Longo do Vídeo

É possível comparar a quantidade de bounding boxes do Tracking em relação ao YOLO.

Tracking x Yolo Bounding Boxes

É notável que ainda existem diferenças entre o Tracking e o YOLO; no entanto, essas disparidades podem ser corrigidas com a implementação de inovações adicionais, como um sistema que leve em consideração a permanência do objeto.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

VisionForge-1.0.0.tar.gz (23.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

VisionForge-1.0.0-py3-none-any.whl (27.0 kB view details)

Uploaded Python 3

File details

Details for the file VisionForge-1.0.0.tar.gz.

File metadata

  • Download URL: VisionForge-1.0.0.tar.gz
  • Upload date:
  • Size: 23.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.7

File hashes

Hashes for VisionForge-1.0.0.tar.gz
Algorithm Hash digest
SHA256 d0be5c53f56d2c4a849e5fcaed66de5b04e452c303ee37a097de887fad81c8cd
MD5 c77a3785abf17e73cf6672a0456f0fa7
BLAKE2b-256 9d1d84d4cff8667837cfff4fd5360548cf8cf61ac43947e13cbef4f619d2a8fe

See more details on using hashes here.

File details

Details for the file VisionForge-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: VisionForge-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 27.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.7

File hashes

Hashes for VisionForge-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 234f8acee25428797469493291d97953cd6dc90263660a63b27a13a9176841c5
MD5 374b83b32de094dbbf1ce9666da3ff99
BLAKE2b-256 e9291abb9058b887aaf0f9a20992616571b6a8a73f6f753776920f389a8de292

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page