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.
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:
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.