Plano A:
Essa ideia consiste inicialmente em um sistema onde o usuário possa:
Na primeira release:
- Escolher e nomear o número de objetos;
- Escolher e inicializar/pausar o vídeo;
- Visualizar o campo em quadrantes;
- Visualizar e selecionar um jogador para análise;
- Escolher o ponto em que deseja iniciar a análise;
- Poder exportar o resultado da análise.
Na segunda release:
- visualizar o quadrante em que o jogador selecionado se encontra;
- Selecionar a bola;
- Distância entre o jogador e a bola.
Na terceira release:
- Vídeo pausar quando o jogador selecionado sair da tela;
- Selecionar mais de um jogador;
- Distância entre o jogador e a bola.
Resultado da prova de conceito:
Através do site PJReddie conseguimos instalar o Yolo e executar a análise de uma imagem estática. Apresentamos a seguir o resultado da imagem analisada pelo Yolo:
Em seguida procuramos validar a integração com o openCV. Para isso tivemos que instalar o openCV 2.4.9 nas máquinas e assim conseguimos simular a mesma imagem usando o Yolo com o openCV habilitado.
Quando partimos para analisar um vídeo vimos que o Yolo usa o CUDA da NVidia. O CUDA é usado para aumentar a performance da análise e roda somente nas GPUs da NVidia. Partimos, assim, para duas possibilidades: simular a analise de vídeo com e sem o CUDA, devido ao fato de que não tínhamos certeza se o cliente possuía esta GPU.
Não conseguimos validar nenhuma das possibilidades em virtude da dificuldade de instalar o CUDA e encontrar bons exemplos que analisam video na internet. Após conseguir a analisar a imagem, fomos atrás de uma API que possibilitasse usar a linguagem Java no nosso desenvolvimento, isso porque o Yolo é escrito em C e seria muito complexo desenvolver uma aplicação em C com o nosso tempo de projeto, já que a maioria dos integrantes possui apenas o conhecimento básico na linguagem C.
O TensorFlow é uma API que permite usar o Yolo com Java e uma base de conhecimento pré-treinada. Encontramos um repositórios no Git que tinha um exemplo da integração Java-Yolo-TensorFlow
Através deste projeto conseguimos visualizar um exemplo do funcionamento do TensorFlow, mas ao tentar modificar para uma imagem do campo de futebol com os jogadores o aplicativo não reconheceu nenhum jogador.
Ao tentar debugar as classes deste repositório, percebemos que precisaríamos de mais tempo para entender seu funcionamento e este tempo não teríamos no projeto.
Após a reunião em no dia 9 de abril decidimos deixar este plano em Stand by até que uma nova oportunidade apareça.