Odpowiedz już dziś na lokalne wydarzenie TensorFlow Everywhere!
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Ocena pozycji

Szacowanie pozycji to zadanie polegające na wykorzystaniu modelu ML do oszacowania pozy osoby na podstawie obrazu lub wideo poprzez oszacowanie przestrzennej lokalizacji kluczowych stawów ciała (kluczowych punktów).

Zaczynaj

Jeśli jesteś nowym użytkownikiem TensorFlow Lite i pracujesz z systemem Android lub iOS, zapoznaj się z poniższymi przykładowymi aplikacjami, które pomogą Ci rozpocząć.

Przykład systemu Android Przykład iOS

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

Pobierz model startowy

Jeśli chcesz wypróbować oszacowanie pozy w przeglądarce internetowej, sprawdź repozytorium TensorFlow JS GitHub .

Opis modelu

Jak to działa

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

Model PoseNet przyjmuje przetworzony obraz z kamery jako dane wejściowe i wyprowadza informacje o punktach kluczowych. Wykryte punkty kluczowe są indeksowane przez identyfikator części, z wynikiem ufności między 0,0 a 1,0. Wynik ufności wskazuje prawdopodobieństwo, że punkt kluczowy istnieje w tej pozycji.

Różne stawy ciała wykryte przez model PoseNet przedstawiono w tabeli 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 leftElbow
8 rightElbow
9 lewy nadgarstek
10 rightWrist
11 lewe biodro
12 rightHip
13 lewe kolano
14 prawe kolano
15 lewa kostka
16 prawa kostka

Przykładowe dane wyjściowe przedstawiono poniżej:

Animacja przedstawiająca szacowanie ułożenia

Testy wydajności

Wydajność różni się w zależności od urządzenia i kroku wyjściowego (mapy cieplne i wektory przesunięcia). Model PoseNet jest niezmienny w rozmiarze obrazu, co oznacza, że ​​może przewidywać pozycje ułożenia w tej samej skali, co oryginalny obraz, niezależnie od tego, czy obraz jest przeskalowany w dół. Oznacza to, że konfigurujesz model tak, aby miał wyższą dokładność kosztem wydajności.

Krok wyjścia określa, jak bardzo wynik jest skalowany w dół w stosunku do rozmiaru obrazu wejściowego. Wpływa na rozmiar warstw i wyniki modelu.

Im wyższy krok wyjściowy, tym mniejsza rozdzielczość warstw w sieci i wyjściach, a także odpowiednio ich dokładność. W tej implementacji krok wyjściowy może mieć wartości 8, 16 lub 32. Innymi słowy, krok wyjściowy 32 zapewni najszybszą wydajność, ale najmniejszą dokładność, podczas gdy 8 da najwyższą dokładność, ale najwolniejsze działanie. Zalecana wartość początkowa to 16.

Poniższy obraz pokazuje, jak krok wyjściowy określa, jak bardzo wynik jest zmniejszany w stosunku do rozmiaru obrazu wejściowego. Wyższy krok wyjściowy jest szybszy, ale skutkuje mniejszą dokładnością.

Wyjściowa rozdzielczość kroku i mapy cieplnej

Numery testów wydajności są generowane za pomocą opisanego tutaj narzędzia.

Nazwa modelu Rozmiar modelu Urządzenie GPU procesor
Posenet 12,7 Mb Pixel 3 (Android 10) 12 ms 31 ms *
Pixel 4 (Android 10) 12 ms 19 ms *
iPhone XS (iOS 12.4.1) 4,8 ms 22 ms **

* 4 używane nici.

** 2 wątki używane na iPhonie w celu uzyskania najlepszej wydajności.

Dalsze lektury i zasoby

  • Zapoznaj się z tym wpisem na blogu, aby dowiedzieć się więcej o szacowaniu pozycji za pomocą TensorFlow Lite.
  • Przeczytaj ten wpis na blogu, aby dowiedzieć się więcej o szacowaniu pozycji za pomocą TensorFlow JS.
  • Przeczytaj artykuł PoseNet tutaj

Sprawdź również te przypadki użycia szacowania pozy.