Você está na página 1de 7

Melhoria no processo de detecção de bola

Ou melhor, como fazer a detecção em um jogo real de Tênis?

Figure 1: Vídeo disponível em https://youtu.be/iRlWw8GD0xc

No que tange o meu projeto de iniciação científica, tenho me dedicado ao estudo e desenvolvimento
de métodos para a detecção de uma bola de tênis em um jogo real. O objetivo principal do projeto é
calcular a posição 3D da bola utilizando visão estéreo no Robot Operating System (ROS).
A detecção de uma bola de tênis em um ambiente real apresenta uma série de desafios
significativos. A bola, quando capturada em vídeo durante um jogo, frequentemente aparece
pequena na imagem, com pouco contraste em relação ao fundo. Além disso, existem momentos em
que a bola está em pontos cegos ou é deformada devido à alta velocidade, tornando a detecção ainda
mais difícil.
Atualmente, estou utilizando um filtro HSV em Python para a detecção da bola. Este método tem se
mostrado eficaz em condições onde a bola está próxima à câmera e há um contraste significativo
entre a bola e o fundo. No entanto, o desafio reside em melhorar a detecção em condições menos
ideais, que são comuns em ambientes reais, ao contrário de ambientes controlados.
A pesquisa e o desenvolvimento deste projeto têm como objetivo final aprimorar a detecção da bola
de tênis em todas as condições de jogo, contribuindo para o avanço da tecnologia de rastreamento
de objetos em ambientes dinâmicos e desafiadores.

Principais algoritmos open source:

Tracknet (National Chiao Tung University)


Figure 2: Disponível em https://medium.com/geekculture/track-a-tennis-ball-with-
computer-vision-4f8d2f9c0412

O TrackNet é uma rede de aprendizado profundo desenvolvida para rastrear a trajetória da bola em
vídeos de transmissões de tênis. A bola de tênis em tais vídeos é geralmente pequena, borrada e às
vezes com rastros de pós-imagem ou até mesmo invisível. O TrackNet foi projetado para superar
esses desafios.

A rede TrackNet é treinada para reconhecer a imagem da bola a partir de um único quadro e
também aprender padrões de voo a partir de quadros consecutivos. Ela recebe imagens com o
tamanho de 640 × 360 para gerar um mapa de calor de detecção a partir de um único quadro ou
vários quadros consecutivos para posicionar a bola. Isso permite que o TrackNet alcance alta
precisão mesmo em vídeos de domínio público.
O TrackNet usa uma abordagem baseada em mapa de calor para rastrear a bola. A posição da bola é
representada como um pico em um mapa de calor, que é gerado usando uma distribuição gaussiana
centrada na bola. O TrackNet é capaz de rastrear a bola com precisão, mesmo quando a bola está
borrada ou oculta, aprendendo os padrões de trajetória da bola.

O TrackNet foi avaliado em um vídeo do jogo de simples masculino na Universíade de Verão de


2017, que está disponível no YouTube. A precisão, recall e medida F1 do TrackNet atingiram
99,7%, 97,3% e 98,5%, respectivamente. Para evitar o overfitting, 9 vídeos adicionais foram
parcialmente rotulados juntamente com um subconjunto do conjunto de dados anterior para
implementar a validação cruzada de 10 vezes, e a precisão, recall e medida F1 foram 95,3%, 75,7%
e 84,3%, respectivamente.

Em resumo, o TrackNet é uma rede de aprendizado profundo que usa uma abordagem baseada em
mapa de calor para rastrear a trajetória da bola em vídeos de tênis. Ele é capaz de rastrear a bola
com alta precisão, mesmo em condições desafiadoras, como quando a bola está borrada ou oculta.

Processo de instalação:
Aqui estão os passos para instalar e usar o TrackNet:
1. Instalação de Dependências
• Instale o CUDA, cuDNN e TensorFlow. Tutorial
• Instale as bibliotecas Python necessárias com pip:
• numpy
• matplotlib
• pillow
• keras
• opencv-python
• pydot
• h5py
• Instale o Graphviz com o comando sudo apt-get install graphviz.
2. Treinamento do TrackNet
• Crie um mapa de calor como Ground Truth e salve-o como um arquivo JPG. O
código está no arquivo TrackNet_Python.ipynb.
• O nome do arquivo de treinamento e teste do TrackNet deve ser exportado como um
arquivo csv. O código também está no arquivo TrackNet_Python.ipynb.
• Copie o arquivo training_model1.csv e testing_model1.csv para a pasta
TrackNet_One_Frames_Input.
• Abra a linha de comando e mude o diretório para a pasta
TrackNet_One_Frames_Input.
• Execute o comando de treinamento. Por exemplo: python train.py --
save_weights_path=weights/model --
training_images_name="training_model1.csv" --epochs=500
--n_classes=256 --input_height=360 --input_width=640 --
load_weights=1 --step_per_epochs=200 --batch_size=2
• O modelo treinado será salvo em weights/model.0.
3. Previsão com TrackNet
• Abra a linha de comando e mude o diretório para a pasta TrackNet
(TrackNet_Three_Frames_Input ou TrackNet_One_Frames_Input).
• Execute o comando de previsão. Por exemplo: python predict.py --
save_weights_path=weights/model.2
--test_images="/media/andersen/D/Thesis/Dataset/Clip" --
output_path="/media/andersen/D/Thesis/Prediction/Model2/C
lip" --n_classes=256 --input_height=360 --input_width=640
--output_height=720 --output_width=1280
4. Previsão de Vídeo com TrackNet
• Abra a linha de comando e mude o diretório para a pasta TrackNet
(TrackNet_Three_Frames_Input ou TrackNet_One_Frames_Input).
• Execute o comando de previsão de vídeo. Por exemplo: python
predict_video.py --save_weights_path=weights/model.3 --
input_video_path="/media/andersen/D/Test/Clip1.mp4" --
output_video_path="/media/andersen/D/Test/Clip1_TrackNet.
mp4" --n_classes=256

Artigo:

O artigo pode ser acessado em https://arxiv.org/abs/1907.03698.


Tennis Tracking (ArtLabs)

O projeto Tennis Tracking, hospedado no GitHub por ArtLabs, é um sistema de código aberto para
rastreamento de bolas de tênis, detecção de linhas de quadra e detecção de jogadores em vídeos de
tênis. Ele usa a rede de aprendizado profundo TrackNet para rastrear a bola e a ResNet50 para
detectar os jogadores.
Para executar o projeto, é necessário ter uma GPU compatível para instalar o TensorFlow. Os vídeos
de entrada devem ser de jogos de tênis e não devem conter comerciais, intervalos ou espectadores.
O projeto fornece instruções detalhadas sobre como clonar o repositório, baixar os pesos do
YOLOv3, instalar os requisitos necessários e executar o script de previsão em um vídeo de entrada.

O projeto também inclui a funcionalidade de um minimapa dinâmico que mostra a posição dos
jogadores e da bola. Isso pode ser ativado usando um argumento na linha de comando. Além disso,
o projeto usa a biblioteca de aprendizado de máquina para séries temporais, sktime, para prever os
pontos de quique da bola. A precisão do modelo é de 98% para negativos verdadeiros (sem
quique) e 83% para positivos verdadeiros (quique).
No entanto, o projeto tem algumas limitações. O algoritmo é lento e pode levar até 28 minutos para
processar um vídeo de 15 segundos. Além disso, o algoritmo só funciona em vídeos de partidas
oficiais de tênis.
Para futuros desenvolvimentos, os criadores do projeto planejam melhorar a detecção de linhas da
quadra, otimizar o código, adicionar um minimapa dinâmico da quadra com jogadores e a bola, e
encontrar as coordenadas da bola tocando a quadra.
O projeto Tennis Tracking é uma contribuição valiosa para a comunidade de código aberto e oferece
uma solução robusta para rastreamento de bolas de tênis, detecção de linhas de quadra e detecção de
jogadores em vídeos de tênis.

Processso de instalação
Aqui estão os passos para instalar e usar o projeto Tennis Tracking:
1. Clonar o Repositório
• Execute o comando: git clone
https://github.com/ArtLabss/tennis-tracking.git
2. Baixar Pesos do YOLOv3
• Baixe os pesos do YOLOv3 aqui e adicione-os à sua pasta Yolov3.
3. Instalar Dependências
• Execute o comando: pip install -r requirements.txt
4. Executar o Script de Previsão
• Execute o comando: python3 predict_video.py --
input_video_path=VideoInput/video_input3.mp4 --
output_video_path=VideoOutput/video_output.mp4 --
minimap=0 --bounce=0

Meu processo de instalação:


No decorrer do meu projeto, deparei-me com a necessidade de instalar o TrackNet, uma rede de
aprendizado profundo desenvolvida pela National Chiao Tung University, para rastrear objetos
em alta velocidade. Segui as instruções fornecidas no site oficial do TrackNet
(https://nol.cs.nctu.edu.tw:234/open-source/TrackNet), que incluíam o download do repositório e a
instalação de várias dependências. No entanto, apesar de estar utilizando o Ubuntu 22.04 e ter
seguido o tutorial à risca, não consegui executar o script com sucesso. Acredito que a
incompatibilidade se deva à idade do software, que provavelmente foi projetado para funcionar no
Ubuntu 16.04.
Diante desse obstáculo, decidi explorar outras opções e encontrei o Tennis Tracking, um projeto de
código aberto da ArtLabs. Segui as instruções disponíveis em https://github.com/ArtLabss/tennis-
tracking para instalar as dependências necessárias. No entanto, mesmo após a instalação, o script
não funcionou como esperado. Após uma investigação mais aprofundada, descobri que a versão do
TensorFlow que eu tinha instalado não era compatível com as versões do CUDA e cuDNN que eu
estava usando. Além disso, o driver da minha placa de vídeo (GTX 1650 NVIDIA) também parecia
estar causando problemas.
Em um esforço para resolver esses problemas, decidi aumentar o tamanho da partição do meu
sistema operacional. Utilizando um Ubuntu virtual via pendrive e o programa GParted, consegui
expandir a partição do meu Ubuntu de 40GB para 90GB sem a necessidade de formatar o sistema.
No entanto, mesmo após essa alteração, o script ainda não funcionou, provavelmente devido à
presença de várias versões do CUDA no meu sistema.
Diante desses desafios, optei por uma abordagem mais radical: formatei completamente o sistema e
instalei o Ubuntu 23.04. Infelizmente, descobri que essa versão do Ubuntu não suporta o ROS
(Robot Operating System), uma ferramenta crucial para o meu projeto. Portanto, decidi instalar o
Ubuntu 18.04, uma versão mais antiga e estável do sistema operacional. Após a instalação bem-
sucedida do ROS Kinect e a verificação de que todos os meus pacotes estavam funcionando
corretamente, tentei instalar o TrackNet novamente.
Durante a instalação das dependências, percebi que o TensorFlow 2.6.0, necessário para o TrackNet,
não estava disponível para o Python no Ubuntu 18.04. Após uma pesquisa extensa, descobri que
isso se devia à versão do sistema operacional. Portanto, atualizei o sistema para o Ubuntu 20.04 e
instalei o ROS Noetic. Após garantir que todos os nós do ROS estavam funcionando corretamente,
tentei instalar o TrackNet da ArtLabs novamente. Desta vez, consegui instalar corretamente o
CUDA, cuDNN, TensorFlow e o driver para a placa de vídeo.
No entanto, ao executar o script, deparei-me com dois problemas principais: o TensorFlow não
conseguia ler o arquivo de pesos baixado e a minha GPU, que possui 4GB de memória, não tinha
memória suficiente para executar o programa. Para resolver esses problemas, fiz a compra de um
SSD de 1TB, que ainda está a caminho. Assim que chegar, planejo testar várias versões do Linux e
instalar as duas versões do TrackNet até conseguir um funcionamento adequado.

Você também pode gostar