此页面由 Cloud Translation API 翻译。
Switch to English

Posenschätzung

Die Posenschätzung ist die Aufgabe, mithilfe eines ML-Modells die Pose einer Person anhand eines Bildes oder Videos zu schätzen, indem die räumlichen Positionen der wichtigsten Körpergelenke (Schlüsselpunkte) geschätzt werden.

Loslegen

Wenn Sie TensorFlow Lite noch nicht kennen und mit Android oder iOS arbeiten, lesen Sie die folgenden Beispielanwendungen, die Ihnen den Einstieg erleichtern können.

Android Beispiel iOS Beispiel

Wenn Sie mit den TensorFlow Lite-APIs vertraut sind, laden Sie das Starter-PoseNet-Modell und die unterstützenden Dateien herunter.

Startermodell herunterladen

Wenn Sie die Posenschätzung in einem Webbrowser ausprobieren möchten, lesen Sie das TensorFlow JS GitHub-Repository .

Modellbeschreibung

Wie es funktioniert

Die Posenschätzung bezieht sich auf Computer-Vision-Techniken, die menschliche Figuren in Bildern und Videos erkennen, so dass beispielsweise festgestellt werden kann, wo der Ellbogen einer Person in einem Bild auftaucht. Es ist wichtig zu wissen, dass die Posenschätzung lediglich schätzt, wo sich wichtige Körpergelenke befinden, und nicht erkennt, wer sich in einem Bild oder Video befindet.

Das PoseNet-Modell verwendet ein verarbeitetes Kamerabild als Eingabe und gibt Informationen zu Schlüsselpunkten aus. Die erkannten Schlüsselpunkte werden durch eine Teile-ID mit einem Konfidenzwert zwischen 0,0 und 1,0 indiziert. Der Konfidenzwert gibt die Wahrscheinlichkeit an, dass an dieser Position ein Schlüsselpunkt vorhanden ist.

Die verschiedenen vom PoseNet-Modell erkannten Körpergelenke sind nachstehend aufgeführt:

Ich würde Teil
0 Nase
1 linkes Auge
2 rechtes Auge
3 linkes Ohr
4 rechtes Ohr
5 linke Schulter
6 rechte Schulter
7 leftElbow
8 rechter Ellbogen
9 linkes Handgelenk
10 rechtes Handgelenk
11 linke Hüfte
12 Rechte Hüfte
13 linkes Knie
14 rechtes Knie
15 linker Knöchel
16 rechter Knöchel

Eine Beispielausgabe ist unten dargestellt:

Animation mit Posenschätzung

Leistungsbenchmarks

Die Leistung hängt von Ihrem Gerät und dem Ausgabeschritt ab (Heatmaps und Offset-Vektoren). Das PoseNet-Modell ist bildgrößeninvariant, dh es kann Posenpositionen im gleichen Maßstab wie das Originalbild vorhersagen, unabhängig davon, ob das Bild verkleinert ist. Dies bedeutet, dass Sie das Modell so konfigurieren, dass es auf Kosten der Leistung eine höhere Genauigkeit aufweist.

Der Ausgabeschritt bestimmt, um wie viel die Ausgabe im Verhältnis zur Größe des Eingabebilds verkleinert wird. Dies wirkt sich auf die Größe der Ebenen und die Modellausgaben aus.

Je höher der Ausgabeschritt ist, desto geringer ist die Auflösung der Schichten im Netzwerk und der Ausgänge und entsprechend deren Genauigkeit. In dieser Implementierung kann der Ausgabeschritt Werte von 8, 16 oder 32 haben. Mit anderen Worten, ein Ausgabeschritt von 32 führt zu der schnellsten Leistung bei geringster Genauigkeit, während 8 zu der höchsten Genauigkeit bei langsamster Leistung führt. Der empfohlene Startwert ist 16.

Das folgende Bild zeigt, wie der Ausgabeschritt bestimmt, um wie viel die Ausgabe im Verhältnis zur Größe des Eingabebilds verkleinert wird. Ein höherer Ausgangsschritt ist schneller, führt jedoch zu einer geringeren Genauigkeit.

Ausgabeschritt und Heatmap-Auflösung

Leistungsbenchmarkzahlen werden mit dem hier beschriebenen Tool generiert.

Modellname Modellgröße Gerät GPU Zentralprozessor
Posenet 12,7 Mb Pixel 3 (Android 10) 12ms 31ms *
Pixel 4 (Android 10) 12ms 19ms *
iPhone XS (iOS 12.4.1) 4,8 ms 22ms **

* 4 Threads verwendet.

** 2 Threads, die auf dem iPhone verwendet werden, um das beste Leistungsergebnis zu erzielen.

Weiterführende Literatur und Ressourcen

  • In diesem Blogbeitrag erfahren Sie mehr über die Posenschätzung mit TensorFlow Lite.
  • In diesem Blogbeitrag erfahren Sie mehr über die Posenschätzung mit TensorFlow JS.
  • Lesen Sie hier das PoseNet-Papier

Schauen Sie sich auch diese Anwendungsfälle der Posenschätzung an.