Git Product home page Git Product logo

hajin-park / v-quip Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 3.0 205.2 MB

V-QUIP: A Vision-based Quick Impromptu Polling System for the Classroom

Home Page: http://modelingyourfuture.com/

License: GNU General Public License v3.0

Python 5.23% JavaScript 94.63% HTML 0.10% CSS 0.01% Dockerfile 0.02%
classroom-response-system computer-vision gesture-recognition mediapipe pose-estimation react-native yolo-nas

v-quip's Introduction

Hello World

v-quip's People

Contributors

adityarao127 avatar bliuzley13 avatar dependabot[bot] avatar hajin-park avatar jorgecasta0207 avatar raguilar5 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

v-quip's Issues

Pose-estimation: Proximity of body lowers pose landmark accuracy

How the system currently uses pose landmarks (for videos, not images. Image processing is a simple single-step process)
For every frame:
Each person in the frame is detected.
For each person detected, their pose landmarks are extracted
Both wrists are saved with their confidence scores (how confident the model is that the wrist exists), even if the wrists are not found/visible. A wrist that is not found/visible will have some score close to 0.
Any wrist datapoint with a high enough confidence value will be processed in the next step, otherwise ignored.
Each wrist that is found is cropped, and the cropped hand is processed by the hand landmark and gesture recognition model.
The system assumes the ordering of the people detected in each frame stays the same (as in no one switches spots). This allows the system to relate and track each wrist and person with the previous frame.
Each person/wrist detected can be saved into the history of the system as the video is processed by a simply saving the current frames data in some variables which is used to compare with the next frame, and the cycle repeats.
The “best” gesture for each person/wrist is saved by comparing the gesture confidence scores of each frame and previous frame.
The issue
When body parts (especially arms) are close together or occluded, our current YOLOv8 pose-estimation model will inaccurately draw the arms of people using the wrong arms.
The same arm may be used as the arm for two people people in one frame (so that arm’s wrist will end be being processed twice)
The confidence score of the gesture of these incorrect limbs may end up being higher than the gesture confidence scores of correctly identified limbs in other frames, so the video processing will save the wrong gestures, even if the video has the correct poses at one point.
The result may end up having more gestures than expected, or the same gesture being processed more than once as unique gestures, or both…

To solve this we either need to train our YOLOv8 model for much longer so that it can correctly draw the poses of people correctly even when body parts are close together/overlap/are obstructed, or use a different model/method entirely.
One idea is separating the human object detection and pose estimation models. Currently our YOLOv8 pose estimation model does both.
This will allow us to crop each person before processing their pose landmarks, similar to how the system crops gestures for gesture classification. This MIGHT solve the issue of incorrectly extending/attaching the wrong arms of the wrong people.

TODO

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.