{"id":28,"date":"2025-02-08T22:39:40","date_gmt":"2025-02-08T22:39:40","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb1\/?p=28"},"modified":"2025-02-09T04:20:26","modified_gmt":"2025-02-09T04:20:26","slug":"diyas-status-report-for-02-08","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb1\/2025\/02\/08\/diyas-status-report-for-02-08\/","title":{"rendered":"Diya&#8217;s Status Report for 02\/08"},"content":{"rendered":"<p><span style=\"font-weight: 400\">This week my primary focus was researching gesture recognition algorithms and setting up the necessary environment to begin implementation. Since I am relatively new to this field, I dedicated a significant amount of time to understanding the different approaches that I can use to implement real time gesture recognition and looking at the feasibility for integration into the CookAR glasses.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">I have detailed some algorithms I have researched below:\u00a0<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Google MediaPipe &#8211; MediaPipe Hand Tracking\u00a0<\/span>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The MediaPipe Hand Tracking offers real time hand tracking and provides 21 3D hand landmarks so this allows us to determine the hand position, orientation and gesture.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">It has a &gt; 90% real time accuracy and it is designed to be lightweight so it can be run on a microcontroller which has limited processing power\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">For the environment set up, I am using python, specifically the MediaPipe Python Package\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Next steps include defining the gestures we want the algorithm to recognize so this includes swipe left, right for next, open palm for pause etc and then record the landmark data for each gesture. After this, I will extract the relevant features from the landmark data like the distance between key joints, angle between fingers, velocity of the hand movement.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">I am planning to use a simple rule based system approach based on thresholds for distances\/angles as the model for gesture classification. I looked into more robust models such as training a machine learning classifier using the extracted features. Here, I could use TensorFlow Lite to run the model efficiently on the microcontroller. I am first going to start off by just using the simple rule based approach and pivot to the more robust model if needed.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Since we are using Unity for the AR display, I also have to create a script that receives the gesture data and updates the AR elements accordingly. This is something I am looking more into.\u00a0<\/span><\/li>\n<\/ol>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Hidden Markov Models for Dynamic Gestures:\u00a0<\/span>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Used to recognize sequences of movements so this would be ideal for gestures that can involve a lot of different hand positions over time\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Dataset of recorded gestures for training. I found a preliminary dataset with gestures<\/span>\n<ol>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/www.visionbib.com\/bibliography\/contentspeople.html#Face%20Recognition,%20Detection,%20Tracking,%20Gesture%20Recognition,%20Fingerprints,%20Biometrics\"><span style=\"font-weight: 400\">https:\/\/www.visionbib.com\/bibliography\/contentspeople.html#Face%20Recognition,%20Detection,%20Tracking,%20Gesture%20Recognition,%20Fingerprints,%20Biometrics<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">American Sign Language Dataset to recognize basic gestures\u00a0<\/span><\/li>\n<\/ol>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Implement using Tensorflow but it would need gesture sequence data for effective training\u00a0<\/span><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p><b>Technical Challenges\u00a0<\/b><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">I need to gather data in different lighting condition and different backgrounds to make sure the testing is robust<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">I can also synthetically create more training data by adding noise, varying the lighting and rotating hand images\u00a0<\/span><\/li>\n<\/ol>\n<p><b>Setting up the Development Environment<\/b><\/p>\n<p><span style=\"font-weight: 400\">Since this is my first time working with gesture recognition, I spent time getting the necessary tools and dependencies installed:\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Installed necessary libraries like OpenCV, MediaPipe, TensorFlow\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Configured Jupyter Notebook for testing different models and algorithms\u00a0<\/span><\/li>\n<\/ul>\n<p><b>Progress Update<\/b><\/p>\n<p><span style=\"font-weight: 400\">\u00a0I would say that I am slightly behind schedule in terms of actual implementation but on track in terms of understanding the concepts and setting up the groundwork. The research and initial setup phase took longer than expected but now that I have a better understanding of the algorithms and their implementation, I should be able to move forward with actually implementing code.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">To catch up, I plan to:\u00a0<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Run and analyze sample gesture recognition models in Python\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Begin experimenting with CNN models for static gesture classification\u00a0<\/span><\/li>\n<\/ol>\n<p><b>Next Week\u2019s Deliverables:\u00a0<\/b><\/p>\n<p><span style=\"font-weight: 400\">By the end of the week, I aim to have:\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A working mediapipe hand tracking prototype capturing and displaying hand keypoints\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A basic CNN model for static gesture classification\u00a0<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week my primary focus was researching gesture recognition algorithms and setting up the necessary environment to begin implementation. Since I am relatively new to this field, I dedicated a significant amount of time to understanding the different approaches that I can use to implement real time gesture recognition and looking at the feasibility for &hellip; <a href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb1\/2025\/02\/08\/diyas-status-report-for-02-08\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Diya&#8217;s Status Report for 02\/08<\/span><\/a><\/p>\n","protected":false},"author":1073,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5,1],"tags":[3],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb1\/wp-json\/wp\/v2\/posts\/28"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb1\/wp-json\/wp\/v2\/users\/1073"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb1\/wp-json\/wp\/v2\/comments?post=28"}],"version-history":[{"count":1,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb1\/wp-json\/wp\/v2\/posts\/28\/revisions"}],"predecessor-version":[{"id":30,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb1\/wp-json\/wp\/v2\/posts\/28\/revisions\/30"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb1\/wp-json\/wp\/v2\/media?parent=28"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb1\/wp-json\/wp\/v2\/categories?post=28"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb1\/wp-json\/wp\/v2\/tags?post=28"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}