Como utilizar YOLO com Keras

Já vimos em outro artigo como utilizar o YOLO com Darknet. Agora vamos ver como implementar utilizando Keras!

YOLO com Keras

Sem delongas, sejamos objetivos. Faça o clone do repositório:

git clone https://github.com/miranthajayatilake/YOLOw-Keras.git

Ou com YOLOv3, nesse repositório:

git clone https://github.com/qqwweee/keras-yolo3.git

Entre no diretório clonado antes de baixar os pesos:

cd keras-yolo3

Agora, baixe os pesos do site do YOLO:

wget https://pjreddie.com/media/files/yolov3.weights

Precisamos converter o formato do model para o formato utilizado no Keras. Para isso:

python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

TypeError: unicode argument expected, got ‘str’

Se seu ambiente for Python-2.7, ocorrerá um erro. Para corrigir o problema, edite o arquivo convert.py e modifique as seguintes linhas:

Linha 9 – import io

Modifique para :

from io import BytesIO as StringIO

Linha 46 – output_stream = io.StringIO()

Modifique para:

output_stream = StringIO()

Agora deve funcionar. Sem essa conversão, não tem como utililzar o dataset da Darknet no YOLO com Keras.

YOLO com Keras

ValueError: height and width must be > 0

Se obtiver esse erro também, não se angustie. Edite o arquivo yolo3/utils.py e insira antes do primeiro import:

from __future__ import division

Agora já podemos fazer uso dos recursos baixados e depois de brincar, é só estudar as conversões para entender como funciona, além do programa principal, yolo_video.py, que pode ser utilizado tanto para vídeo como para imagem:

YOLO com Keras - webcam

Para capturar diretamente da webcam como fiz acima, utilize:

python yolo_video.py --model yolov3.weights --gpu_num 0 --input /dev/video0

A saída é lançada por padrão em stdout, mostrando a classificação, a acurácia e a região de interesse. Com isso, poderíamos criar uma base fazendo crop da região para registro de evento, ou criar um log para análise de vídeo a posteriori.

Um trecho da saída do YOLO com Keras:

YOLO com Keras

Vou procurar um vídeo com mais objetos por aqui e mais tarde subo um vídeo com o Yolo em ação no nosso canal DobitAoByteBrasil no Youtube. Se ainda não é inscrito, aproveite para assinar o canal, clique no sininho para receber notificações de novos vídeos e deixe seu like para incentivar.

Assim que possível escreverei um artigo para utilizar esses recursos com seu próprio dataset. Se não leu ainda a respeito, recomendo esses dois outros artigos:

Como criar um dataset para deep learning.

Reconhecimento de armas com inteligência artificial.

Até a próxima!

Djames Suhanko

Sobre o autor: Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.