Giter Site home page Giter Site logo

deeplens-simon-says's Introduction

Deeplens Simon-Says

This project is an entry into #AWSDeepLensChallenge.

Overview

Simon Says is a childhood game where the players act out the commands from Simon. When Simon says to do something you do the action, however when Simon doesn't give the command you should not do the action. Our project is building a Simon Says Deep Learning platform where everyone can join the same global game using Deeplens to verify the correct action of each player.

Fun Fact: The guinness world record for a game of Simon Says is 12,215 people set on June 14, 2007 at the Utah Summer Games.

Demo Video

IMAGE ALT TEXT HERE

Application

Define Goals

  • Have the device issue a simon says command.
  • Monitor the camera stream and classify the player's action.
  • Overlay a display of the player's pose and current action.
  • Link the device to a global simon game network.

Deeplens

The Deeplens device is used to process the video stream of the player. The video stream is formatted to fit our network of 184x184 resolution. We crop the left and right siding of the image to form a box and scale the image down keeping the aspect ratio. Our model is optimized to use the GPU which is required or processing time for one frame takes ~30-60s, compared to about .6-1s using GPU. We use the output, a series of images, to calculate the position of the body, which we refer to as the pose map. The pose map consists of ordered (x,y) positions of each body part, which we feed into a classification network to tell us the predicted action.

  • How we converted the realtimePose Model to run on Deeplens. Convert Model

  • Read More about how we classified the different poses in this notebook.

Model Download Links

AWS Backend

The Simon Says game network is built using AWS services. The process starts from cloudwatch where a chain of events is triggered every minute that will generate and distribute a new game. The first step is a lambda event that queries an S3 bucket using Athena, this query is used so we can add new game actions by just uploaded a file to S3. After the Athena query is finished the output activates a 2nd lambda which is used to generate the next game by randomly picking one action and deciding if simon says or not and it will publish the game to an IoT channel. All Deeplens devices will register to this IoT channel and it will be notified when a new game starts.

Image Generated using https://cloudcraft.co/

  • Read more about backend development here

Running The Demo

  • Before running one minor change will need to be addressed and that is audio output. In our case we were not able to hear audio until we added the aws_cam user and GreenGrass user to the audio group. If you do not hear sound please verify these group settings. sudo adduser ggc_user audio
  • We were not able to get audio playing using the deeplens deployment.

Deploy from GreenGrass Service

  1. Upload the model files to your S3 bucket for Deeplens.
  2. Create a new Lambda function using this packaged zip file simon_posetest.zip. Make sure to set the lambda handler to greengrassSimonSays.function_handler
  3. Create a new Deeplens Project with the model and lambda function.
  4. Deploy to Deeplens.

Run Directly from Device

To get setup on the device all you need to do is SSH or open a Terminal, clone this repo, download the optimized model and mxnet classification model, and install the python requirements.

  • It is best to stop GreenGrass Service before you do this. sudo systemctl stop greengrassd.service.
git clone https://github.com/MDBox/deeplens-simon-says
cd ./deeplens-simon-says/deeplens/simonsays
wget https://s3.amazonaws.com/mdbox-deeplen-simon/models/models.zip
unzip models.zip
sudo pip install -r requirments.txt
sudo python simon.py

Citations

This project uses two open source projects as reference. The original model and development is credited to them.

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.