Posenerkennung

Die ML Kit Pose Detection API ist eine schlanke, vielseitige Lösung, mit der App-Entwickler die Position eines Gegenstands in Echtzeit aus einem kontinuierlichen Video oder statischen Bild erkennen können. Eine Pose beschreibt die Position des Körpers zu einem bestimmten Zeitpunkt mit einer Reihe von markanten Skelettpunkten. Die Sehenswürdigkeiten entsprechen verschiedenen Körperteilen wie Schultern und Hüften. Die relativen Positionen von Sehenswürdigkeiten können verwendet werden, um zwischen Positionen zu unterscheiden.

iOS Android

Die Pose-Erkennung von ML Kit erzeugt einen Ganzkörper-Skelettaufbau mit 33 Punkten, der Gesichtsmerkmale wie Ohren, Augen, Mund und Nase sowie Punkte an Händen und Füßen umfasst. Abbildung 1 zeigt die Sehenswürdigkeiten, die durch die Kamera auf den Nutzer blicken. Es handelt sich also um ein Spiegelbild. Die rechte Seite des Nutzers wird auf der linken Seite des Bildes angezeigt:

Abbildung 1: Sehenswürdigkeiten

Die ML Kit-Pose-Erkennung erfordert keine spezielle Ausrüstung oder ML-Fachkenntnisse, um hervorragende Ergebnisse zu erzielen. Mit dieser Technologie können Entwickler mit nur wenigen Codezeilen ein einzigartiges Erlebnis für ihre Nutzer schaffen.

Das Gesicht des Nutzers muss vorhanden sein, um eine Pose zu erkennen. Die Pose-Erkennung funktioniert am besten, wenn der gesamte Körper des Subjekts im Frame sichtbar ist, aber auch eine teilweise Körperstellung erkennt. In diesem Fall werden die nicht erkannten Sehenswürdigkeiten Koordinaten außerhalb des Bildes zugewiesen.

Hauptmerkmale

  • Plattformübergreifende Unterstützung für Android und iOS
  • Ganzkörper-Tracking: Das Modell gibt 33 wichtige Skelett Basispunkte zurück, einschließlich der Positionen von Händen und Füßen.
  • InFrameLikelihood Score: Ein Messwert, der für jede Sehenswürdigkeit angibt, mit welcher Wahrscheinlichkeit sich das Sehenswürdigkeit im Bildframe befindet. Der Wert liegt zwischen 0,0 und 1,0, wobei 1,0 für eine hohe Konfidenz steht.
  • Zwei optimierte SDKs: Das Basis-SDK wird in Echtzeit auf modernen Smartphones wie Pixel 4 und iPhone X ausgeführt. Die Ergebnisse werden mit einer Rate von ~30 bzw. ~45 fps zurückgegeben. Die Genauigkeit der Orientierungskoordinaten kann jedoch variieren. Das genaue SDK gibt Ergebnisse mit einer langsameren Framerate zurück, erzeugt aber genauere Koordinatenwerte.
  • Z Coordinate für die Tiefenanalyse: Mit diesem Wert kann ermittelt werden, ob sich Teile des Körpers vor oder hinter den Hüften der Nutzer befinden. Weitere Informationen finden Sie im Abschnitt Z Coordinate weiter unten.

Die Pose Detection API ähnelt der Facial Recognition API insofern, als sie eine Reihe von Sehenswürdigkeiten und ihren Standort zurückgibt. Während bei der Gesichtserkennung auch versucht wird, Merkmale wie ein lächelndes Mundgefühl oder offene Augen zu erkennen, hat die Posenerkennung keinen Sinn. Sie können eigene Algorithmen erstellen, um eine Pose zu interpretieren. Beispiele finden Sie unter Tipps zur Klassifikation der Ausgaben.

Die Posenerkennung kann nur eine Person auf einem Bild erkennen. Wenn sich zwei Personen im Bild befinden, weist das Modell der erkannten Person mit der höchsten Konfidenz Sehenswürdigkeiten zu.

Z-Koordinate

Z-Koordinate ist ein experimenteller Wert, der für jede Sehenswürdigkeit berechnet wird. Er wird in Bildpixeln wie den X- und Y-Koordinaten gemessen, ist aber kein wahrer 3D-Wert. Die Z-Achse ist senkrecht zur Kamera und verläuft zwischen den Hüften eines Subjekts. Der Ursprung der Z-Achse ist ungefähr der Mittelpunkt zwischen den Hüften (links/rechts und vorne/zurück im Verhältnis zur Kamera). Negative Z-Werte sind in Richtung der Kamera gerichtet, positive Werte sind davon entfernt. Die Z-Koordinate hat keine Ober- oder Untergrenze.

Beispielergebnisse

Die folgende Tabelle zeigt die Koordinaten und InFrameLikelihood für einige Sehenswürdigkeiten in der Pose auf der rechten Seite. Beachten Sie, dass die Z-Koordinaten für die linke Hand des Nutzers negativ sind, da sie sich vor der Mitte der Hüfte und in Richtung der Kamera befinden.

SehenswürdigkeitTypPositionIn-Frame-Wahrscheinlichkeit
11LINKS_SHOULDER(734.9671, 550.7924, -118.11934)0,9999038
12 RECHTSSCHLUSS (391 27032, 583 2485, -321 15836) 0,9999894
13 LINKS_UNTEN (903.83704, 754.676, -219.67009) 0,9836427
14 RECHTS_RECHTS (322 18152, 842 5973, -179,28519) 0,99970156
15 LINKS (1073,8956, 654,9725, -820,93463) 0,9737737
16 RECHTSWIRT (218.27956, 1015.70435, -683.6567) 0,995568
17 LINKS_PINKY (1146.1635, 609.6432, -956.9976) 0,95273364
18 RECHTS_PINKY (176.17755, 1065.838, -776.5006) 0,9785348

Details

Weitere Informationen zur Implementierung der zugrunde liegenden ML-Modelle für diese API finden Sie in unserem Google AI-Blogpost.

Weitere Informationen zu unseren ML-Fairness-Praktiken und zum Training der Modelle finden Sie auf unserer Modellkarte.