🇫🇷 Français
pose_estimation
🇺🇸 English | 🇮🇳 हिंदी | 🇯🇵 日本語 | 🇨🇳 简体ä¸ć–‡ | 🇪🇸 Español | 🇧🇷 PortuguĂŞs (Brasil) | 🇰🇷 한ęµě–´ | 🇩🇪 Deutsch | 🇫🇷 Français

[!NOTE] Ceci est une version traduite du README. La version anglaise fait foi.
Un conteneur pour l’estimation de pose à partir d’images 2D.
Correspondance des bones Pose-to-VRM
Le backend renvoie des pose keypoints et des bone pairs de type BODY_25. En MediaPipe mode, Neck est synthétisé à partir de LShoulder et RShoulder, et MidHip est synthétisé à partir de LHip et RHip. Utilisez le tableau ci-dessous lors du transfert de la pose estimée vers un VRM humanoid skeleton.
| Vecteur de pose estimé | Keypoints d’entrée | VRM humanoid bone | Priorité | Notes |
|---|---|---|---|---|
| Racine du corps | MidHip, LHip, RHip |
hips |
Required | Utilisez-le principalement pour la root rotation. Évitez de vous fier à la root translation à partir d’une seule image. |
| Spine | MidHip -> Neck |
spine |
Required | Direction principale du haut du corps. |
| Chest | MidHip -> Neck |
chest |
Recommended | Appliquez-le avec un weight plus faible que spine afin d’éviter une flexion exagérée. |
| Upper chest | MidHip -> Neck |
upperChest |
Optional | À utiliser uniquement lorsque le VRM model chargé possède ce bone. |
| Neck | Neck -> Nose |
neck |
Recommended | Appliquez-le avec modération, car les landmarks de head et neck sont bruités dans l’estimation de pose à partir d’une seule image. |
| Head | Neck -> Nose, Nose -> LEye, Nose -> REye, LEye -> LEar, REye -> REar |
head |
Recommended | Un simple fallback peut n’utiliser que Neck -> Nose; les eye et ear points peuvent améliorer la direction du regard. |
| Left shoulder | Neck -> LShoulder |
leftShoulder |
Optional | À utiliser uniquement lorsque le VRM possède des shoulder bones. L’arm peut tout de même être piloté sans ce bone. |
| Left upper arm | LShoulder -> LElbow |
leftUpperArm |
Required | Rotation principale du haut du bras gauche. |
| Left lower arm | LElbow -> LWrist |
leftLowerArm |
Required | Rotation principale de l’avant-bras gauche. |
| Left hand | LElbow -> LWrist or hand landmarks |
leftHand |
Optional | BODY_25 ne fournit pas assez d’informations de wrist orientation. Utilisez un fallback faible sauf si les hand landmarks sont disponibles. |
| Right shoulder | Neck -> RShoulder |
rightShoulder |
Optional | À utiliser uniquement lorsque le VRM possède des shoulder bones. |
| Right upper arm | RShoulder -> RElbow |
rightUpperArm |
Required | Rotation principale du haut du bras droit. |
| Right lower arm | RElbow -> RWrist |
rightLowerArm |
Required | Rotation principale de l’avant-bras droit. |
| Right hand | RElbow -> RWrist or hand landmarks |
rightHand |
Optional | BODY_25 ne fournit pas assez d’informations de wrist orientation. Utilisez un fallback faible sauf si les hand landmarks sont disponibles. |
| Left upper leg | LHip -> LKnee |
leftUpperLeg |
Required | Rotation principale de la cuisse gauche. |
| Left lower leg | LKnee -> LAnkle |
leftLowerLeg |
Required | Rotation principale du tibia gauche. |
| Left foot | LAnkle -> LBigToe, LAnkle -> LHeel |
leftFoot |
Recommended | Utilisez les toe et heel points lorsqu’ils sont visibles. |
| Left toes | LHeel -> LBigToe |
leftToes |
Optional | À utiliser uniquement lorsque le VRM possède des toe bones et que les toe landmarks sont stables. |
| Right upper leg | RHip -> RKnee |
rightUpperLeg |
Required | Rotation principale de la cuisse droite. |
| Right lower leg | RKnee -> RAnkle |
rightLowerLeg |
Required | Rotation principale du tibia droit. |
| Right foot | RAnkle -> RBigToe, RAnkle -> RHeel |
rightFoot |
Recommended | Utilisez les toe et heel points lorsqu’ils sont visibles. |
| Right toes | RHeel -> RBigToe |
rightToes |
Optional | À utiliser uniquement lorsque le VRM possède des toe bones et que les toe landmarks sont stables. |
| Left eye | Nose -> LEye |
leftEye |
Optional | Nécessaire uniquement pour les fonctionnalités de gaze ou d’expression. |
| Right eye | Nose -> REye |
rightEye |
Optional | Nécessaire uniquement pour les fonctionnalités de gaze ou d’expression. |
Les VRM bones utiles au minimum sont spine, leftUpperArm, leftLowerArm, rightUpperArm, rightLowerArm, leftUpperLeg, leftLowerLeg, rightUpperLeg et rightLowerLeg. Une fois ces éléments stables, ajoutez hips, chest, neck, head, leftFoot et rightFoot pour obtenir une avatar pose plus lisible.
Démarrer le projet
cp .env.example .env
docker compose up --build
Ouvrez le navigateur :
http://localhost:8081
Vérifiez l’API :
curl http://localhost:8000/api/v1/health
Utilisation
- Appuyez sur “Select image”.
- Sélectionnez une image.
- Vérifiez les 2D keypoints superposés sur l’image.
- Vérifiez la pose direction dans la vue inférieure “3D skeleton check”.
Tests
Exécuter les backend tests :
docker compose -f docker-compose.test.yml run --rm backend_test
Exécuter le frontend smoke test :
docker compose -f docker-compose.yml -f docker-compose.test.yml run --rm frontend_test
License
- Apache License 2.0