Ocena pozycji

Oszacowanie pozycji to zadanie polegające na wykorzystaniu modelu ML do oszacowania pozycji osoby na podstawie obrazu lub filmu poprzez oszacowanie przestrzennego położenia kluczowych stawów ciała (punktów kluczowych).

Zaczynaj

Jeśli dopiero zaczynasz korzystać z TensorFlow Lite i pracujesz z systemem Android lub iOS, zapoznaj się z poniższymi przykładowymi aplikacjami, które mogą pomóc Ci rozpocząć.

Przykład Androida Przykład iOS

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

Pobierz model startowy

Jeśli chcesz wypróbować szacowanie pozycji w przeglądarce internetowej, sprawdź wersję demonstracyjną TensorFlow JS .

Opis modelu

Jak to działa

Szacowanie pozycji 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ć. Należy pamiętać, że ocena pozycji jedynie szacuje, gdzie znajdują się kluczowe stawy ciała i nie pozwala rozpoznać, kto jest na zdjęciu lub filmie.

Modele szacowania pozycji przyjmują przetworzony obraz z kamery jako dane wejściowe i wysyłają informacje o punktach kluczowych. Wykryte punkty kluczowe są indeksowane według identyfikatora części, ze wskaźnikiem pewności pomiędzy 0,0 a 1,0. Wynik pewności wskazuje prawdopodobieństwo, że punkt kluczowy istnieje w tej pozycji.

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

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

Różne stawy ciała wykryte przez model szacowania pozycji przedstawiono w poniższej tabeli:

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 prawe biodro
13 lewe kolano
14 prawe kolano
15 lewa kostka
16 prawa kostka

Przykładowe wyjście pokazano poniżej:

Animacja pokazująca ocenę pozycji

Benchmarki wydajności

MoveNet jest dostępny w dwóch wersjach:

  • MoveNet.Lightning jest mniejszy, szybszy, ale mniej dokładny niż wersja Thunder. Może działać w czasie rzeczywistym na nowoczesnych smartfonach.
  • MoveNet.Thunder to dokładniejsza wersja, ale także większa i wolniejsza 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, szczególnie w przypadku obrazów zawierających obrazy ćwiczeń fitness. Dlatego zalecamy używanie MoveNet zamiast PoseNet.

Wartości porównawcze wydajności są generowane za pomocą narzędzia opisanego tutaj . Liczby dokładności (mAP) są mierzone w podzbiorze zbioru danych COCO , w którym filtrujemy i przycinamy każde zdjęcie tak, aby zawierało tylko jedną osobę.

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

Dalsza lektura i zasoby

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

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