Légère et polyvalente, l'API ML Kit Pose Detection permet aux développeurs d'applications de détecter la posture du corps d'un sujet en temps réel à partir d'une vidéo continue ou d'une image statique. Une posture décrit la position du corps à un moment donné, avec un ensemble de points de repère squelettiques. Les points de repère correspondent à différentes parties du corps, telles que les épaules et les hanches. Les positions relatives des points de repère peuvent être utilisées pour distinguer une pose d'une autre.
La détection de postures du ML Kit produit une correspondance squelettique de 33 points pour l'ensemble du corps, qui inclut les points de repère du visage (oreilles, yeux, bouche et nez) ainsi que des points sur les mains et les pieds. La figure 1 ci-dessous montre les points de repère à travers l'appareil photo de l'utilisateur. Il s'agit donc d'une image miroir. Le côté droit de l'utilisateur apparaît à gauche de l'image:
La détection de postures sur ML Kit ne nécessite aucun équipement spécialisé ni expertise en ML pour obtenir d'excellents résultats. Grâce à cette technologie, les développeurs peuvent créer une expérience unique pour leurs utilisateurs avec seulement quelques lignes de code.
Le visage de l'utilisateur doit être présent pour qu'une posture puisse être détectée. La détection des postures fonctionne mieux lorsque tout le corps du sujet est visible dans le cadre, mais elle détecte également une posture partielle du corps. Dans ce cas, les points de repère qui ne sont pas reconnus se voient attribuer des coordonnées en dehors de l'image.
Capacités clés
- Compatibilité multiplate-forme : profitez de la même expérience sur Android et iOS.
- Suivi de tout le corps : le modèle renvoie 33 points de repère clés du squelette, y compris la position des mains et des pieds.
- Score InFrameLikelihood : mesure indiquant la probabilité que le point de repère se trouve dans le cadre de l'image. Le score est compris entre 0,0 et 1,0, où 1,0 indique un niveau de confiance élevé.
- Deux SDK optimisés : le SDK de base s'exécute en temps réel sur les téléphones modernes tels que le Pixel 4 et l'iPhone X. Les résultats sont renvoyés à une fréquence d'environ 30 et environ 45 FPS, respectivement. Toutefois, la précision des coordonnées des points de repère peut varier. Un SDK précis renvoie les résultats à une fréquence d'images plus lente, mais produit des valeurs de coordonnées plus précises.
- Z Coordinate pour une analyse en profondeur : cette valeur peut aider à déterminer si des parties du corps de l'utilisateur se trouvent devant ou derrière ses hanches. Pour en savoir plus, consultez la section Coordonnées Z ci-dessous.
L'API Pose Detection est semblable à l'API de reconnaissance faciale dans la mesure où elle renvoie un ensemble de points de repère et leur position. Cependant, tandis que la détection de visages tente également de reconnaître des caractéristiques telles que la bouche souriante ou les yeux ouverts, la détection des postures n'accorde aucune signification aux points de repère présents dans une posture ou à la posture elle-même. Vous pouvez créer vos propres algorithmes pour interpréter une posture. Pour obtenir des exemples, consultez la page Conseils sur la classification de Pose.
La détection des postures ne peut détecter qu'une seule personne sur une image. Si deux personnes figurent sur l'image, le modèle attribue des points de repère à la personne détectée avec le niveau de confiance le plus élevé.
Coordonnées Z
La coordonnée Z est une valeur expérimentale calculée pour chaque point de repère. Elle est mesurée en "pixels d'image" comme les coordonnées X et Y, mais il ne s'agit pas d'une véritable valeur 3D. L'axe Z est perpendiculaire à l'appareil photo et passe entre les hanches du sujet. L'origine de l'axe Z correspond approximativement au point central entre les hanches (gauche/droite et avant/arrière par rapport à la caméra). Les valeurs Z négatives sont orientées vers la caméra, alors que les valeurs positives ne sont pas éloignées de celle-ci. La coordonnée Z n'a pas de limite supérieure ou inférieure.
Exemple de résultats
Le tableau suivant montre les coordonnées et la probabilité InFrameLikelihood de quelques points de repère dans la pose de droite. Notez que les coordonnées Z de la main gauche de l'utilisateur sont négatives, car elles se trouvent devant le centre des hanches du sujet et vers la caméra.
Point de repère | Type | Poste | InFrameLikelihood |
---|---|---|---|
11 | LEFT_SHOULDER | (734.9671, 550.7924, -118.11934) | 0,9999038 |
12 | RIGHT_SHOULDER | (391.27032, 583.2485, -321.15836) | 0,9999894 |
13 | LEFT_ELBOW | (903.83704, 754.676, -219.67009) | 0,9836427 |
14 | RIGHT_ELBOW | (322.18152, 842.5973, -179.28519) | 0,99970156 |
15 | LEFT_WRIST | (1073.8956, 654.9725, -820.93463) | 0,9737737 |
16 | RIGHT_WRIST | (218.27956, 1015.70435, -683.6567) | 0,995568 |
17 | LEFT_PINKY | (1146.1635, 609.6432, -956.9976) | 0,95273364 |
18 | RIGHT_PINKY | (176.17755, 1065.838, -776.5006) | 0,9785348 |
dans le détail
Pour en savoir plus sur l'implémentation des modèles de ML sous-jacents pour cette API, consultez notre article de blog sur l'IA de Google.
Pour en savoir plus sur nos pratiques d'équité en matière de ML et sur la manière dont les modèles ont été entraînés, consultez notre fiche modèle.