{"id":50441920,"url":"https://github.com/niteshctrl/biceps-curl-counter","last_synced_at":"2026-05-31T19:33:59.178Z","repository":{"id":211634589,"uuid":"377251896","full_name":"niteshctrl/biceps-curl-counter","owner":"niteshctrl","description":"Biceps Curl Counter python app based on Mediapipe's Human Pose Estimation architecture. ","archived":false,"fork":false,"pushed_at":"2021-06-26T06:38:46.000Z","size":19,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-12-09T21:26:15.731Z","etag":null,"topics":["computer-vision","convolutional-neural-networks","mediapipe","pose-estimation","python"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/niteshctrl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-06-15T18:00:29.000Z","updated_at":"2023-12-09T21:26:29.812Z","dependencies_parsed_at":"2023-12-09T21:36:37.721Z","dependency_job_id":null,"html_url":"https://github.com/niteshctrl/biceps-curl-counter","commit_stats":null,"previous_names":["niteshctrl/biceps-curl-counter"],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/niteshctrl/biceps-curl-counter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niteshctrl%2Fbiceps-curl-counter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niteshctrl%2Fbiceps-curl-counter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niteshctrl%2Fbiceps-curl-counter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niteshctrl%2Fbiceps-curl-counter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/niteshctrl","download_url":"https://codeload.github.com/niteshctrl/biceps-curl-counter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niteshctrl%2Fbiceps-curl-counter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33746507,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computer-vision","convolutional-neural-networks","mediapipe","pose-estimation","python"],"created_at":"2026-05-31T19:33:59.116Z","updated_at":"2026-05-31T19:33:59.166Z","avatar_url":"https://github.com/niteshctrl.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!---\n# Biceps Curl Counter\n* Computer Vision based Biceps Curl Counter using Mediapipe's Pose Classification model([BlazePose](https://arxiv.org/abs/2006.10204)).\n* Inaccurate range of motion(\u003e40 degrees and \u003c160 degrees) during the exercise will not be counted forcing the user to repeat with correct physical posture and full range of motion. This will also serve as a real-time accuracy feedback to the user.\n* Angle is calculated using the coordinates of shoulder, elbow and wrist landmarks as predicted by the model.\n* OpenCV is used for illustration and visualization.\n---\u003e\n## Overview\nA biceps curl counter based on human pose estimation. The idea is to make the user aware of inaccurate range of motion in real-time so that he/she can correct it immediately without the need of a human exercising partner. Often as a novice, we are dealing with incorrect exercising postures which eventually leads to no gain or in the worst conditions, unwanted damage and tear to the muscles.\n\nThe counter doesn't tick if the range of motion during a bicep curl is within 40 degrees and 160 degrees. Hence to get the counter going, user has to curl and uncurl his/her biceps in a full range of motion. No cheating now!\n\n\n## Table of Contents\n* [Installation and Demo](#Installation-and-Demo)\n* [Description](#Description)\n* [References and Credits](#References-and-Credits)\n\n\n## Installation and Demo\n* Installing the depedencies:\n```\npip install requirements.txt\n```\n* Separate counts will be recoreded for left and right bicep curls. Press 'r' key to reset the counter anytime and 'Esc' to quit. To run the app, execute the following on the terminal:\n```\npython demo.py\n```\n\n\n## Description\nThe project is based on Mediapipe's Pose Estimation Model [Blazepose](https://arxiv.org/abs/2006.10204) at the backend which is responsible for calculating the 3D coordinates of the human body keypoints. We then extract the three: wrist, elbow and shoulder keypoints and form two straight lines joning shoulder and elbow(A) / elbow and wrist(B). Calculating the angle between the two straight lines A and B gives us the angle formed at elbow of the hand which is then used for counter increments. A binary variable 'flag' is responsible for maintaining the position of the hand during curls; UP or DOWN. A successful transition of the hand from DOWN to UP increases the counter by 1 each time. Separate counters are maintained for right and left hands.\n\n\n## Future Improvements:\n* Inclsion of custom range of motion which is currently fixed between between 40 degrees and 160 degrees so that user can use it for different forms of curls.\n\n\n## References and Credits\n1. [Guide to Human Pose Estimation with Deep Learning(Nanonets)](https://nanonets.com/blog/human-pose-estimation-2d-guide/)\n2. [Mediapipe Pose Classification(Google's Github)](https://google.github.io/mediapipe/solutions/pose_classification.html)\n3. [Real-time Human Pose Estimation in the Browser(TF Blog)](https://blog.tensorflow.org/2018/05/real-time-human-pose-estimation-in.html)\n4. [MediaPipePoseEstimation(Nicknochnack's Github)](https://github.com/nicknochnack/MediaPipePoseEstimation)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniteshctrl%2Fbiceps-curl-counter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fniteshctrl%2Fbiceps-curl-counter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniteshctrl%2Fbiceps-curl-counter/lists"}