腕立て伏せ検出器(Pushup-Detector)
概要
Pushup-Detectorは、Webカメラ映像を入力として人の姿勢を追跡し、腕立て伏せを自動で検出・カウントするシンプルなツールです。MediaPipeのPoseモジュールを用いたボディポーズ検出に基づき、関節(主に肩・肘)の角度をリアルタイムに算出。角度の上下変化を閾値で判定することで「下り」「上がり」の状態遷移を検出し、一連の上下動で1回とカウントします。画面上には角度値やカウント数、姿勢の可視化が重ねられるため、ユーザーは自身のフォームを確認しながらトレーニングできます。動作環境はPython 3.7以上とWebカメラがあればよく、ローカルで手軽に実行可能です。(約300字)
リポジトリの統計情報
- スター数: 1
- フォーク数: 0
- ウォッチャー数: 1
- コミット数: 2
- ファイル数: 4
- メインの言語: Python
主な特徴
- リアルタイムでWebカメラ映像から腕立て伏せを検出して自動カウント
- MediaPipeを用いたボディポーズ推定による関節角度の計測と可視化
- 角度に基づく閾値判定で上下動を状態遷移として扱い誤カウントを抑制
- 軽量でローカル実行可能、必要パッケージはrequirements.txtに記載
技術的なポイント
本プロジェクトの核心は「姿勢推定→角度計算→閾値判定」というシンプルだが実用的なパイプラインにあります。まずMediaPipe Poseを利用して、カメラ画像から人体の主要ランドマーク(肩、肘、手首、腰など)を高頻度で抽出します。これにより各フレームで関節の3D(または2D)位置が得られるため、肘や肩の位置ベクトルから関節角度を算出できます。角度計算はベクトルの内積やアークコサインを用いる方法が典型で、例えば上腕と前腕のベクトル間の角度を求めることで肘の屈曲度合いを表現します。
次にカウントロジックですが、単純な閾値比較だけではノイズや瞬間的なぶれで誤検出が起きやすいため、状態遷移(state machine)の仕組みを導入するのが重要です。具体的には「上ポジション」「下ポジション」「移行中」などの状態を定義し、角度が設定した下限を下回ったときに「下」に遷移、上限を上回ったときに「上」に遷移することで、明確な上下動を1回としてカウントします。さらにデバウンス(閾値を一定フレーム継続したら確定)や移動平均による平滑化を入れると、手ブレや小さな揺れの影響が減り安定性が向上します。
可視化はOpenCVの描画APIを使って行われることが一般的です。姿勢のスケルトン線、関節角度の数値表示、カウント表示、状態表示(カラーやテキスト)を重ねることでユーザーに直感的なフィードバックを与えます。リアルタイム性を確保するために、処理はフレームごとに軽量に保つ必要があり、MediaPipe自体の最適化された推論や、必要に応じて解像度を下げる、フレームスキップを行うといった工夫が有効です。
実装上の注意点としては、カメラ視点やユーザーの体格差により角度の範囲や閾値調整が必要になる点、複数人が映る場面でのターゲット識別(現在のサンプルは単一人物想定)が挙げられます。また屋内照明や衣服によるランドマーク検出精度の低下、身体が完全にフレーム外になるケースへのロバスト化も課題です。将来的な改善策として、個人差を補正するキャリブレーション手順、時間的特徴を使った小さな分類器(簡易MLモデル)による誤動作判定、複数人対応や姿勢評価(フォームの良し悪し判定)を組み込むことが考えられます。
本リポジトリは教育用やプロトタイプ用に非常に分かりやすくまとまっており、MediaPipeとOpenCVの組み合わせで実際の運動検出アプリケーションを試すための良い出発点となります。
プロジェクトの構成
主要なファイルとディレクトリ:
- LICENSE: file
- README.md: file
- pushup_detector.py: file
- requirements.txt: file
まとめ
シンプルで実用的、学習やプロトタイプに適した腕立て伏せ自動検出ツールです。(約50字)
リポジトリ情報:
- 名前: Pushup-Detector
- 説明: 説明なし
- スター数: 1
- 言語: Python
- URL: https://github.com/AYDJI/Pushup-Detector
- オーナー: AYDJI
- アバター: https://avatars.githubusercontent.com/u/158556316?v=4
READMEの抜粋:
Pushup Detector
A Python program that detects pushups using computer vision and counts them automatically.
Features
- Real-time pushup detection using webcam
- Automatic pushup counting
- Visual feedback with angle measurements
- Body pose tracking using MediaPipe
Requirements
- Python 3.7 or higher
- Webcam (built-in or external)
Installation
- Clone or download this repository
- Install the required packages:
pip install -r requirements.tx...