Skip to main content

Deep Learning as a Cloud API Service.

Project description

Deep API

Deep Learning as Cloud APIs.

This project provides an image classification cloud service for research on Black-box Adversarial Attacks.

Quick Start

Using Docker:

docker run -p 8080:8080 wuhanstudio/deepapi

Python 3:

$ pip install deepapi

# For development
# python setup.py develop

# By default, we enable all models on the server.
# Use deepapi -h to see more options.

$ python -m deepapi
Serving on port 8080...

The website and API service are available at https://localhost:8080.

DeepAPI Client

To initiate black-box adversarial attacks, we can get predictions from a cloud API using model.predict().

Behind the scene, this model makes predictions by sending a POST request to http://localhost:8080/vgg16_cifar10.

import numpy as np
from PIL import Image

from deepapi.api import DeepAPI_VGG16_Cifar10

# Load the image
x = Image.open("dog.jpg")
x = np.array(x)

# Initialize the model
model  = DeepAPI_VGG16_Cifar10('http://localhost:8080', concurrency=8)

# Predict
y = model.predict(np.array([x]))[0]

# Print the result
model.print(y)

Using Curl

export IMAGE_FILE=test/cat.jpg
(echo -n '{"file": "'; base64 $IMAGE_FILE; echo '"}') | \
curl -H "Content-Type: application/json" \
     -d @- http://127.0.0.1:8080/vgg16_cifar10

Using Python Request

You can also implement the API client from scratch using the request module.

def classification(url, file):
    # Load the input image and construct the payload for the request
    image = Image.open(file)
    buff = BytesIO()
    image.save(buff, format="JPEG")

    data = {'file': base64.b64encode(buff.getvalue()).decode("utf-8")}
    return requests.post(url, json=data).json()

res = classification('http://127.0.0.1:8080/vgg16_cifar10', 'cat.jpg')

This python script is available in the test folder. You should see prediction results by running python3 minimal.py:

cat            0.99804
deer           0.00156
truck          0.00012
airplane       0.00010
dog            0.00009
bird           0.00005
ship           0.00003
frog           0.00001
horse          0.00001
automobile     0.00001

Concurrent requests

Sending 5 concurrent requests to the API server:

$ python3 multi-client.py --num_workers 5 cat.jpg

You should see the result:

----- start -----
Sending requests
Sending requests
Sending requests
Sending requests
Sending requests
------ end ------
Concurrent Requests: 5
Total Runtime: 2.441638708114624

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deepapi-0.4.3.tar.gz (38.7 kB view details)

Uploaded Source

Built Distribution

deepapi-0.4.3-py3-none-any.whl (56.2 kB view details)

Uploaded Python 3

File details

Details for the file deepapi-0.4.3.tar.gz.

File metadata

  • Download URL: deepapi-0.4.3.tar.gz
  • Upload date:
  • Size: 38.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.13

File hashes

Hashes for deepapi-0.4.3.tar.gz
Algorithm Hash digest
SHA256 b42df41793c9e87431eba0945e01c80487a2d14d4776a6951e51c0c7f7c6f257
MD5 4f5955c1f4f9a5566cacf1d7945b3670
BLAKE2b-256 2774462068bcf025f6dad53b1de1541d45e4968f6fe1d744fd8988d2a437dadc

See more details on using hashes here.

File details

Details for the file deepapi-0.4.3-py3-none-any.whl.

File metadata

  • Download URL: deepapi-0.4.3-py3-none-any.whl
  • Upload date:
  • Size: 56.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.13

File hashes

Hashes for deepapi-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8efedc2056ebdd14811bd4466ad90d203d3a535fec488ac03eff3d3cc0f3bc85
MD5 658f08b0f0d4602f7726c816d835f3e2
BLAKE2b-256 79412ab038fc38b96bcf78f61b7864ea83bd313851edc72786345ac4517c62d1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page