pose_estimation

License OS Python

CodeQL Advanced CI Python Lint

🇺🇸 English | 🇮🇳 हिंदी | 🇯🇵 日本語 | 🇨🇳 简体中文 | 🇪🇸 Español | 🇧🇷 Português (Brasil) | 🇰🇷 한국어 | 🇩🇪 Deutsch | 🇫🇷 Français

"web_ui"

[!NOTE] これは README の翻訳版です。英語版が正本です。

2D画像から姿勢推定を行うためのコンテナです。


Pose-to-VRM ボーン対応表

バックエンドは BODY_25 形式の姿勢キーポイントとボーンペアを返します。MediaPipe モードでは、NeckLShoulderRShoulder から合成され、MidHipLHipRHip から合成されます。推定された姿勢を VRM ヒューマノイドスケルトンへ転送する際は、以下の表を使用してください。

推定姿勢ベクトル 入力キーポイント VRM humanoid bone 優先度 Notes
体幹ルート MidHip, LHip, RHip hips Required 主にルート回転に使用します。単一画像から得たルート平行移動は信頼しすぎないでください。
Spine MidHip -> Neck spine Required 上半身の主方向です。
Chest MidHip -> Neck chest Recommended 曲がりが誇張されないよう、spine より弱い weight で適用します。
Upper chest MidHip -> Neck upperChest Optional 読み込んだ VRM model にこの bone がある場合のみ使用します。
Neck Neck -> Nose neck Recommended 単一画像の姿勢推定では head と neck の landmarks がノイズを含みやすいため、控えめに適用します。
Head Neck -> Nose, Nose -> LEye, Nose -> REye, LEye -> LEar, REye -> REar head Recommended simple fallback では Neck -> Nose のみを使用できます。eye と ear points を使うと向きの推定を改善できます。
Left shoulder Neck -> LShoulder leftShoulder Optional VRM に shoulder bones がある場合のみ使用します。この bone がなくても arm は駆動できます。
Left upper arm LShoulder -> LElbow leftUpperArm Required 左上腕の主回転です。
Left lower arm LElbow -> LWrist leftLowerArm Required 左前腕の主回転です。
Left hand LElbow -> LWrist or hand landmarks leftHand Optional BODY_25 だけでは wrist orientation が十分に得られません。hand landmarks がない場合は弱い fallback として使用してください。
Right shoulder Neck -> RShoulder rightShoulder Optional VRM に shoulder bones がある場合のみ使用します。
Right upper arm RShoulder -> RElbow rightUpperArm Required 右上腕の主回転です。
Right lower arm RElbow -> RWrist rightLowerArm Required 右前腕の主回転です。
Right hand RElbow -> RWrist or hand landmarks rightHand Optional BODY_25 だけでは wrist orientation が十分に得られません。hand landmarks がない場合は弱い fallback として使用してください。
Left upper leg LHip -> LKnee leftUpperLeg Required 左大腿の主回転です。
Left lower leg LKnee -> LAnkle leftLowerLeg Required 左すねの主回転です。
Left foot LAnkle -> LBigToe, LAnkle -> LHeel leftFoot Recommended toe と heel points が見えている場合に使用します。
Left toes LHeel -> LBigToe leftToes Optional VRM に toe bones があり、toe landmarks が安定している場合のみ使用します。
Right upper leg RHip -> RKnee rightUpperLeg Required 右大腿の主回転です。
Right lower leg RKnee -> RAnkle rightLowerLeg Required 右すねの主回転です。
Right foot RAnkle -> RBigToe, RAnkle -> RHeel rightFoot Recommended toe と heel points が見えている場合に使用します。
Right toes RHeel -> RBigToe rightToes Optional VRM に toe bones があり、toe landmarks が安定している場合のみ使用します。
Left eye Nose -> LEye leftEye Optional 視線または表情機能でのみ必要です。
Right eye Nose -> REye rightEye Optional 視線または表情機能でのみ必要です。

最小限有用な VRM bones は spine, leftUpperArm, leftLowerArm, rightUpperArm, rightLowerArm, leftUpperLeg, leftLowerLeg, rightUpperLeg, rightLowerLeg です。これらが安定したら、より読み取りやすい avatar pose のために hips, chest, neck, head, leftFoot, rightFoot を追加します。


プロジェクトを開始する

cp .env.example .env
docker compose up --build

ブラウザを開きます:

http://localhost:8081

API を確認します:

curl http://localhost:8000/api/v1/health

使い方

  1. “Select image” を押します。
  2. 画像を選択します。
  3. 画像上に重ねて表示された 2D keypoints を確認します。
  4. 下部の “3D skeleton check” view で pose direction を確認します。

Tests

backend tests を実行します:

docker compose -f docker-compose.test.yml run --rm backend_test

frontend smoke test を実行します:

docker compose -f docker-compose.yml -f docker-compose.test.yml run --rm frontend_test

License

  • Apache License 2.0