Segmentação de Imagem parte 1: YOLO

Álvaro Fernando
Álvaro Fernando, Engenheiro de Software Fernando
3 de Maio de 2018
  • #tecnologia

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.

Especificações da máquina utilizada para os testes

CPU: i7 7700HQ
RAM: 16GB de 2400MHZ
GPU: GTX 1050ti
CUDA: 9.1

YOLO (You Only ~L̶i̶v̶e̶~ Look Once)

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.

Instalando o Darknet

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:

E realmente foi assustador!
E realmente foi assustador!

É 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

O resultado é mais ou menos assim
O resultado é mais ou menos assim

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.

Página de Download do CUDA
Página de Download do CUDA

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.

Nossos resultados

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_

Conclusão

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!

  • #tecnologia
Álvaro Fernando
Álvaro Fernando, Engenheiro de Software Fernando

qual é o seu desafio para a gente?

hello@novatics.com.br
Voltar ao topo