Expondo o Keras como REST API

Na minha última postagem no blog sobre Keras, você aprendeu a usar o dataset dogs-vs-cats do Kaggle. Mas você gostaria que seus amigos usassem seu modelo para identificar cães e gatos em imagens? Sim, este post é sobre isso! Você aprenderá a expor seu modelo como uma REST API de maneira simples. Vamos lá!

Usaremos o código criado em “Usando datasets do Kaggle” adicionando uma modificação para salvar o modelo. Então, baixe todos os arquivos e execute o notebook jupyter para treinar e salvar seu modelo.

Faça download aqui: https://github.com/waslleysouza/keras

O arquivo requirements.txt tem uma lista de todas as bibliotecas necessárias para instalar em seu ambiente. Existem dois arquivos, um para CPU e outro para GPU.

Neste post eu estou usando uma instância de GPU da Oracle Cloud, então a versão de GPU é necessária para mim.

Crie um novo ambiente usando o arquivo requirements.txt.

conda create -n keras_api python=3.6 -y
activate keras_api
pip install --upgrade -r requirements-gpu.txt

O arquivo models.yaml define a REST API usando Swagger 2.0.
Eu defini no arquivo apenas um caminho que executa a classificação da imagem.

O arquivo dogsvscats.py possui a lógica para pré-processar imagens e executar a predição.

O arquivo server.py possui a lógica para iniciar o servidor.

Para iniciar o servidor, execute o arquivo server.py.

python server.py

Abra um navegador e acesse a URL:

http://<YOUR_IP>:5000/ui

Para testar o modelo, usei uma foto de George (um dos meus cachorros, o outro se chama Peppa).

Agora você tem uma API REST para fazer upload de uma imagem e receber uma predição se é um cachorro ou um gato.

Divirta-se!

Autor: Waslley Souza

Consultor Oracle com foco em tecnologias Oracle Fusion Middleware e SOA. Certificado Oracle WebCenter Portal, Oracle ADF e Java.