Ocena pozycji

Szacowanie pozycji to zadanie polegające na użyciu modelu ML do oszacowania pozycji osoby na podstawie obrazu lub filmu wideo poprzez oszacowanie przestrzennych lokalizacji kluczowych stawów ciała (punktów kluczowych).

Zaczynaj

Jeśli jesteś nowy w TensorFlow Lite i pracujesz z systemem Android lub iOS, zapoznaj się z poniższymi przykładowymi aplikacjami, które mogą pomóc w rozpoczęciu pracy.

Przykład na Androida Przykład na iOS

Jeśli znasz interfejsy API TensorFlow Lite , pobierz początkowy model szacowania pozycji MoveNet i pliki pomocnicze.

Pobierz model startowy

Jeśli chcesz wypróbować szacowanie pozy w przeglądarce internetowej, zapoznaj się z demonstracją TensorFlow JS .

Opis modelu

Jak to działa

Szacowanie pozy odnosi się do technik widzenia komputerowego, które wykrywają postacie ludzkie na obrazach i filmach, dzięki czemu można na przykład określić, gdzie na obrazie pojawia się czyjś łokieć. Ważne jest, aby zdawać sobie sprawę z faktu, że ocena pozy jedynie szacuje, gdzie znajdują się kluczowe stawy ciała i nie rozpoznaje, kto jest na zdjęciu lub filmie.

Modele szacowania pozy pobierają przetworzony obraz z kamery jako dane wejściowe i wyprowadzają informacje o punktach kluczowych. Wykryte punkty kluczowe są indeksowane przez identyfikator części, z wynikiem ufności od 0,0 do 1,0. Wynik ufności wskazuje prawdopodobieństwo, że na tej pozycji istnieje punkt kluczowy.

Zapewniamy referencyjną implementację dwóch modeli estymacji pozycji TensorFlow Lite:

  • MoveNet: najnowocześniejszy model szacowania pozy dostępny w dwóch wersjach: Lighting i Thunder. Zobacz porównanie tych dwóch w sekcji poniżej.
  • PoseNet: model szacowania pozy poprzedniej generacji wydany w 2017 roku.

Różne stawy ciała wykryte przez model szacowania pozy są zestawione poniżej:

ID Część
0 nos
1 lewe oko
2 prawe oko
3 lewe ucho
4 prawe ucho
5 lewe ramię
6 prawe ramię
7 lewy łokieć
8 prawy łokieć
9 lewy nadgarstek
10 prawy nadgarstek
11 lewe biodro
12 prawy biodro
13 lewe kolano
14 prawe kolano
15 lewa kostka
16 prawa kostka

Przykładowe wyjście pokazano poniżej:

Animacja przedstawiająca ocenę pozy

Testy wydajności

MoveNet jest dostępny w dwóch wersjach smakowych:

  • MoveNet.Lightning jest mniejszy, szybszy, ale mniej dokładny niż wersja Thunder. Może działać w czasie rzeczywistym na nowoczesnych smartfonach.
  • MoveNet.Thunder jest dokładniejszą wersją, ale także większą i wolniejszą niż Lightning. Jest to przydatne w przypadkach użycia, które wymagają większej dokładności.

MoveNet przewyższa PoseNet w różnych zestawach danych, zwłaszcza w obrazach z obrazami akcji fitness. Dlatego zalecamy używanie MoveNet przez PoseNet.

Liczby testów wydajności są generowane za pomocą narzędzia opisanego tutaj . Liczby dotyczące dokładności (mAP) są mierzone na podzbiorze zbioru danych COCO , w którym filtrujemy i przycinamy każdy obraz tak, aby zawierał tylko jedną osobę .

Model Rozmiar (MB) mapa Opóźnienie (ms)
Pixel 5 — procesor 4 wątki Piksel 5 - GPU Raspberry Pi 4 - CPU 4 wątki
MoveNet.Thunder (kwantyzacja FP16) 12,6 MB 72,0 155ms 45ms 594ms
MoveNet.Thunder (kwantyzacja INT8) 7,1 MB 68,9 100ms 52ms 251ms
MoveNet.Lightning (kwantyzacja FP16) 4,8 MB 63,0 60ms 25ms 186ms
MoveNet.Lightning (kwantyzacja INT8) 2,9 MB 57,4 52ms 28ms 95ms
PoseNet (sieć szkieletowa MobileNetV1, FP32) 13,3 MB 45,6 80ms 40ms 338ms

Dalsze czytanie i zasoby

  • Sprawdź ten wpis na blogu , aby dowiedzieć się więcej o szacowaniu pozycji za pomocą MoveNet i TensorFlow Lite.
  • Sprawdź ten wpis na blogu , aby dowiedzieć się więcej o szacowaniu pozy w sieci.
  • Zapoznaj się z tym samouczkiem , aby dowiedzieć się, jak uruchomić MoveNet w Pythonie przy użyciu modelu z TensorFlow Hub.
  • Coral/EdgeTPU może znacznie przyspieszyć szacowanie pozycji na urządzeniach brzegowych. Zobacz modele zoptymalizowane pod kątem EdgeTPU, aby uzyskać więcej informacji.
  • Przeczytaj artykuł PoseNet tutaj

Sprawdź także te przypadki użycia szacowania pozy.