Skip to content

Pyramid version of the Keras Rest API for image classification based on the original present on the link

License

Notifications You must be signed in to change notification settings

xyzks/simple-keras-rest-api

Repository files navigation

A Simple Keras + deep learning REST API

This repository contains the code for Building a simple Keras + deep learning REST API, published on the Keras.io blog.

The method covered here is intended to be instructional. It is not meant to be production-level and capable of scaling under heavy load. If you're interested in a more advanced Keras REST API that leverages message queues and batching, please refer to this tutorial.

For an even more advanced version that includes deploying a model to production, refer to this blog post.

Getting started

I assume you already have Keras (and a supported backend) installed on your system. From there you need to install Flask and requests:

$ pip install tensorflow keras flask gevent requests

or

$ pip install tensorflow keras pyramid gevent requests

Next, clone the repo:

$ git clone https://github.com/jrosebr1/simple-keras-rest-api.git

Starting the Keras server

Below you can see the image we wish to classify, a dog, but more specifically a beagle:

dog

The Flask + Keras server can be started by running:

$ python run_keras_server.py 
Using TensorFlow backend.
 * Loading Keras model and Flask starting server...please wait until server has fully started
...
 * Running on http://127.0.0.1:5000

You can now access the REST API via http://127.0.0.1:5000.

Submitting requests to the Keras server

Requests can be submitted via cURL:

$ curl -X POST -F [email protected] 'http://localhost:5000/predict'
{
  "predictions": [
    {
      "label": "beagle", 
      "probability": 0.9901360869407654
    }, 
    {
      "label": "Walker_hound", 
      "probability": 0.002396771451458335
    }, 
    {
      "label": "pot", 
      "probability": 0.0013951235450804234
    }, 
    {
      "label": "Brittany_spaniel", 
      "probability": 0.001283277408219874
    }, 
    {
      "label": "bluetick", 
      "probability": 0.0010894243605434895
    }
  ], 
  "success": true
}

Or programmatically:

$ python simple_request.py 
1. beagle: 0.9901
2. Walker_hound: 0.0024
3. pot: 0.0014
4. Brittany_spaniel: 0.0013
5. bluetick: 0.0011

Container

Building

[sudo] docker build -t simple-keras-rest-api .

Running

[sudo] docker run -it --rm -p 6543:6543 --name api simple-keras-rest-api

About

Pyramid version of the Keras Rest API for image classification based on the original present on the link

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published