Code Monkey home page Code Monkey logo

emotionserver's Introduction

EmotionServer

Build instructions

create a new GCP VM instance running Debian / GNU Linux and standard config

sudo apt-get install pip git

sudo apt-get install python3-pip

sudo apt-get install graphviz

sudo pip3 install virtualenv

sudo apt-get install python3-venv

sudo apt-get install python-scipy

sudo apt-get install nginx

pip install wheel

pip install keras

pip install tensorflow

pip install opencv-python

pip install sklearn

pip install imageio

pip install Flask

python3 -m venv EmotionEnvironment

source EmotionEnvironment/bin/activate

git clone https://github.com/thoughtworksarts/EmoPy.git

cd EmoPy

pip3 install -r requirements.txt

sudo pip3 install opencv-python

edit ./EmoPy/EmoPy/src/data_generator.py on line 5: K.set_image_dim_ordering('th') --> K.set_image_data_format('channels_last')

from ./EmoPy mv EmoPy ../EmotionEnvironment/lib/python3.7/site-packages/

edit /EmotionEnvironment/lib/python3.7/site-packages/EmoPy/src/fermodel.py add: import imageio change: misc.imread --> imageio.imread

configure nginx on port 80 to proxy to Flask server running on localhost:5000

modify predict_from_ndarray() function in fermodel.py on line 70 to return full prediction array instead of single dominant expression

Run the server:

source EmotionEnvironment/bin/activate

nohup python3 EmotionServer/server.py &

API documentation

POST to /image

request content type: "application/json"

request body: {"image":"data-uri"}

response body: { "happy": 0.46, "angry": 0.54 }

Sample CURL request

curl -X POST -H "Content-Type: application/json" -d '{"image":"data:image/jpeg;base64,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"}' http://35.236.114.44/image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.