Inteligencia Artificial

YOLO: Detecção de objetos em tempo real

You Only Look Once ou, YOLO, é chamado “o estado da arte” da detecção de objetos em tempo real. Não importa quantos objetos estejam em cena, se estiverem na base de treinamento, todos eles serão detectados e a região de interesse cercada por retângulos. Ele é extremamente rápido e preciso, além de permitir ajustes entre precisão e velocidade. O mais impressionante é que não é necessário refazer o treinamento para tal!

O paper do YOLO pode ser visto nesse link.

Fazer detecção de objetos com YOLO utilizando um modelo pré-treinado

Podemos utilizar um modelo pré-treinado ou treinar nossos próprios models para fazer a detecção de objetos. Comecemos com um modelo pré-treinado e em um artigo posterior veremos como treinar nosso modelo para utilizar com YOLO.

Utilizando Darknet

A DarkNet é uma rede neural que funciona em GPU ou CPU. Primeiramente, baixe e compile:

Depois, baixe o modelo pré-treinado:

Agora já podemos fazer uma deteção:

O arquivo resultante:

YOLO -Detecção de objetos

A saída do programa mostra a acurácia:

YOLO -Detecção de objetos

Altíssimo o tempo de predição, reparou? Mas calma! Isso foi feito na CPU, por isso essa demora absurda.

Compilando com suporte a CUDA

Se você já te o ambiente configurado, o processo é bastante simples. Se não, pode se guiar por este tutorial para configurar CUDA em sua máquina (desde que tenha uma GPU que possa ser utilizada).

Primeiro, garanta que o nvcc esteja instalado. No meu caso está, mas não está no path. Por isso, fiz sua inclusão primeiramente:

Edite o arquivo Makefile e troque as primeiras duas variáveis para 1:

Limpe a compilação atual e faça uma nova:

Repita o teste padrão para ver como se sai sua GPU. Agora muda um pouco a composição de parâmetros:

Determinando o threshold

A confidência padrão utilizada pelo YOLO parte de 0.25 para considerar verdadeira a classificação. O valor pode ser modificado passando o parâmetro -thresh x, onde “x” é o valor.

Detecção em tempo real pela webcam ou vídeo

Do mesmo modo, podemos fazer a classificação a partir de vídeos ou da webcam, mas nesse caso é necessário ter CUDA e OpenCV habilitados na configuração. Um exemplo:

O parâmetro -c permite selecionar qual webcam utilizar.

No próximo artigo relacionado pretendo incluir um exemplo de treinamento para utiizar com YOLO. Aliás, o YOLO deve dar pelo menos mais dois artigos, vamos ver configurações diferentes.

Dessa vez fico devendo o vídeo, mas na próxima teremos, sem dúvidas!

One comment

Comments are closed.

%d blogueiros gostam disto: