Essa é uma série de posts sobre detecção e segmentação de imagens. Vamos falar um pouco sobre a nossa experiência na utilização de ferramentas de reconhecimento de objetos em tempo real, utilizando dois projetos: YOLO e Mask R-CNN, e realizar uma comparação entre eles.
CPU: i7 7700HQ RAM: 16GB de 2400MHZ GPU: GTX 1050ti CUDA: 9.1
O YOLO é um sistema de detecção de objetos que utiliza uma abordagem diferente da maioria dos sistemas com esse objetivo: ele aplica uma rede neural para toda imagem, uma única vez. Essa rede retorna uma outra imagem com caixas ao redor de possíveis objetos conhecidos por essa rede já treinada. E o conjunto dessas caixas reforça a certeza na detecção desses objetos, pois quanto maior a espessura da caixa, maior a precisão na detecção. Para utilizar esse sistema, Joseph Redmon criou uma implementação desse estudo, chamada darknet: fácil de instalar, rodar e foi escrito em C e CUDA.
Quando iniciamos os nossos testes (início de março de 2018) o YOLO ainda estava na versão 2 e foi essa que utilizamos. No nosso clone local, estamos no commit 80d9bec, commit especificado pois os desenvolvedores resolveram não utilizar tags/releases e esse commit em especial representa a versão 2.
O início da configuração não tem muito mistério: seguimos basicamente os mesmos passos para a versão 3 que estão no site da darknet:
git clone https://github.com/pjreddie/darknet
cd darknet
make
Easy Peasy Lemon Squeezy!
A parte complicada vem agora: queríamos utilizar a GPU para acelerar o processamento e utilizar uma webcam como input da detecção dos objetos. Então precisamos compilar o darknet com o CUDA e OpenCV. Segue o alerta deixado pelo Joseph:
É importante ter a última versão do driver da sua GPU NVidia instalado. Utilizamos a versão 390.30. Você pode verificar qual versão está utilizando nas configurações de “Drivers Adicionais” caso esteja usando Ubuntu, ou rodar o seguinte comando no terminal:
nvidia-smi
Seguindo para a instalação do CUDA 9.1, você vai precisar baixar um arquivo grande, de 1,2GB. Só seguir o tutorial de acordo com o seu sistema.
Instale também os patches de atualização, são importantes.
Você também precisará do OpenCV. Utilizamos o versão 3.4.0.
Utilizamos uma rede pré-treinada. Os pesos estão neste link, ou você pode utilizar os indicados para a versão 3 do YOLO.
Conseguimos ótimos resultados: utilizando a Webcam e o Kazam para capturar as imagens do frame gerado:
E compilando um vídeo gravado no celular
https://www.instagram.com/p/BgBiAzvg6It/?taken-by=novatics_
Durante a instalação tivemos alguns problemas com o driver da GPU e quebramos o ambiente gráfico algumas vezes. Mas não se preocupe, caso isso ocorra, entre no modo de login pelo terminal e reinstale o driver da nvidia seguindo essa resposta no AskUbuntu (lembre-se de trocar o número da versão do driver).
E então partimos para testar o Mask R-CNN. Na parte 2 dessa série vamos contar essa nossa experiência.
Obrigado pela leitura e até a próxima!