Giter VIP home page Giter VIP logo

phormatics's Introduction

This repo is NOT actively maintained and may not work out of the box as it has been 3 years since the last update. If you want to learn more about the next version of this project, check it out here: https://www.youtube.com/watch?v=tZcRYcjTwWA.

Phormatics: Using AI to Maximize Your Workout


f1: front page (the gif may be choppy at first, but it's worth it I promise)

by: Jason Chin , Charlie Lin , Brad Huang , Calvin Woo

HackNYU2018 project developed in 36 hours, focusing on using A.I. and computer vision to build a virtual personal fitness trainer. Capable of using 2D human pose estimation with commodity web-cameras to critique your form and count your repetitions.

This project won the award for "The Most Startup-Viable Hack" as awarded by Contrary Capital.

2D Human Pose Estimation:


f2: live pose estimation in a busy environment; note: here the user has over-extended their right arm (image is mirrored), which is considered bad form in this variant of the dumb bell shulder press, hence the message.

The pose estimation was based off of tf-pose-estimation by ildoonet. The model architecture, OpenPose developed by CMU Perceptual Computing Lab, consists of a deep convolutional neural network for feature extraction (MobileNet) and a two-branch multi-stage CNN for confidence maps and Part Affinity Fields (PAFs).

This feature allowed us to track the position of the user's joints using a commodity webcam.

Data Flow (Web Based):

f3: pseudo data flow diagram; note: the pose estimation model output must be processed as it returns pose estimation for all possible humans in frame (see: Future Changes [1]).

This app runs in browser and the pose estimation and form critique generation is performed on a Flask server. The webcam feed is captured using WebRTC and screenshots are sent to the server as a base64 encoded string every 50ms or as fast as the server can respond - which ever is slower (see: Future Changes [2]).

This means the server could be run in the cloud on high-performance hardware and the client could be any device with a WebRTC-supported web browser and camera. There is also the option for video to be recorded and sent to the server for post-processing if the user's network connectivity is too slow to stream a live feed.

Currently Supported Exercise Analysis:

  • Squat: exaggerated knees-forward checking
  • Dumbbell Shoulder Press: exaggerated arm bend and extension checking
  • Bicep Curls: horizontal elbow deviation from shoulder checking

Future Changes:

  1. Multiple Pose Estimations for One User

    Current: The model estimates joints for all subjects found in the input image; we then analyze the output and extract the pose that is most likely to be the user.

    Possible Improvements:

    a. Modify model and training data to only estimate a single 'best' pose.

    or

    b. Implement re-identification and support multiple users at once. This is viable as forward propagation time does not increase with multiple poses being estimated.

  2. Webcam Image Data Transfer

    Current: Webcam captures are encoded in base64 strings and a post request is sent to the server with the data (note: this was done for ease of implementation due to the hackathon time constraint).

    Possible Improvements: Implement web sockets to transfer webcam captures instead.

phormatics's People

Contributors

bradhuang1999 avatar charlielin99 avatar cwoozle avatar jrobchin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

phormatics's Issues

the server dont give me any result

when i work from the server it doesn't give me any result or any action ?
i am afraid that i am doing some thing wrong after clone this repo
so could anyone tell me what should i do after cloning this repo ?

Environment yml file does not work

The environment yml file states does not let you create a conda envoronment. Please let me know about any ways in which I can setup the environment to run this.

Liftr app

Can you please share the code for the lifr-pytorch version?

How to run this ?

Hi, can you please tell me how to make this project run?
I am not sure which conda version works well for this. I am new to the whole scenario. Any help would be appreciated

Frame freezes

Hi, I was able to get this running.
The issue now is that the frames freeze when I come in front of the camera and try to detect frames.
Is there something i can do about ths?

Tuple Trouble

Hi @jrobchin
Can you tell me how to navigate in this repository and i keep on getting this error whenever in run app.py can you help me?
namedtuple() got an unexpected keyword argument 'verbose'

AttributeError: 'TfPoseEstimator' object has no attribute 'persistent_sess'

got such errors,help!
[phormatics]# python server/app.py
Traceback (most recent call last):
File "server/app.py", line 27, in
pose_estimator = TfPoseEstimator(graph_path=settings.GRAPH_PATH, target_size=settings.PROCESSING_DIMS)
File "/data/app/yaowu/phormatics/server/helpers/estimator.py", line 257, in init
graph_def.ParseFromString(f.read())
File "/data/app/Anaconda/lib/python3.6/site-packages/tensorflow/python/lib/io/file_io.py", line 120, in read
self._preread_check()
File "/data/app/Anaconda/lib/python3.6/site-packages/tensorflow/python/lib/io/file_io.py", line 80, in _preread_check
compat.as_bytes(self.__name), 1024 * 512, status)
File "/data/app/Anaconda/lib/python3.6/site-packages/tensorflow/python/framework/errors_impl.py", line 519, in exit
c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.NotFoundError: /data/app/yaowu/phormatics/models/mobilenet/graph_opt.pb; No such file or directory
Exception ignored in: <bound method TfPoseEstimator.del of <helpers.estimator.TfPoseEstimator object at 0x7fdeb5b2da58>>
Traceback (most recent call last):
File "/data/app/yaowu/phormatics/server/helpers/estimator.py", line 280, in del
self.persistent_sess.close()
AttributeError: 'TfPoseEstimator' object has no attribute 'persistent_sess'

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.