Zadanie Klasyfikator obrazów MediaPipe umożliwia klasyfikację obrazów. Możesz użyć tego zadania do określenia, co przedstawia obraz w zestawie kategorii zdefiniowanych podczas trenowania. To zadanie operuje na danych obrazu z modelem systemów uczących się (ML) w postaci danych statycznych lub w trybie ciągłym i generuje listę potencjalnych kategorii uporządkowaną według malejącego wyniku prawdopodobieństwa.
Rozpocznij
Zacznij od wykonania tego zadania, postępując zgodnie z instrukcjami podanymi w jednym z przewodników po implementacji dla platformy docelowej. Te przewodniki dotyczące poszczególnych platform przeprowadzą Cię przez podstawową implementację tego zadania z użyciem zalecanego modelu i zawierają przykłady kodu z zalecanymi opcjami konfiguracji:
- Android – przykładowy kod – Przewodnik
- Python – przykładowy kod – Przewodnik
- Sieć – przykładowy kod – Przewodnik
- iOS – przykładowy kod – Przewodnik
Szczegóły działania
W tej sekcji opisujemy możliwości, dane wejściowe, dane wyjściowe i opcje konfiguracji tego zadania.
Funkcje
- Przetwarzanie obrazu wejściowego – przetwarzanie obejmuje obrót obrazu, zmianę jego rozmiaru, normalizację i konwersję przestrzeni kolorów.
- Region zainteresowań – klasyfikacja obejmuje region obrazu zamiast całego obrazu.
- Język mapy etykiety – ustaw język wyświetlanych nazw.
- Próg wyniku – filtrowanie wyników na podstawie wyników prognozy.
- Klasyfikacja Top-K – ogranicza liczbę wyników klasyfikacji.
- Listy dozwolonych i zablokowanych etykiet – określ sklasyfikowane kategorie.
Dane wejściowe zadań | Wyniki działania |
---|---|
Dane wejściowe mogą być jednym z tych typów:
|
Klasyfikator obrazów generuje listę kategorii zawierającą:
|
Opcje konfiguracji
To zadanie ma te opcje konfiguracji:
Nazwa opcji | Opis | Zakres wartości | Wartość domyślna |
---|---|---|---|
running_mode |
Ustawia tryb działania zadania. Są 3 tryby: IMAGE: tryb wprowadzania pojedynczych obrazów. WIDEO: tryb dekodowanych klatek filmu. TRANSMISJA NA ŻYWO: tryb transmisji danych wejściowych na żywo, np. z kamery. W tym trybie należy wywołać metodę resultListener, aby skonfigurować odbiornik, który będzie odbierał wyniki asynchronicznie. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
display_names_locale |
Ustawia język etykiet, które mają być używane w przypadku nazw wyświetlanych w metadanych modelu zadania (jeśli są dostępne). Wartość domyślna w języku angielskim to en . Za pomocą TensorFlow Lite MetadataWriter API możesz dodawać zlokalizowane etykiety do metadanych modelu niestandardowego. |
Kod języka | en |
max_results |
Określa opcjonalną maksymalną liczbę zwracanych wyników klasyfikacji o najwyższych wynikach. Jeśli wartość jest mniejsza niż 0, zostaną zwrócone wszystkie dostępne wyniki. | Dowolne liczby dodatnie | -1 |
score_threshold |
Ustawia próg wyniku prognozy, który zastępuje próg podany w metadanych modelu (jeśli istnieją). Wyniki poniżej tej wartości zostały odrzucone. | Dowolna liczba zmiennoprzecinkowa | Nie ustawiono |
category_allowlist |
Ustawia opcjonalną listę dozwolonych nazw kategorii. Jeśli nie będzie pusty, wyniki klasyfikacji, których nazwy kategorii nie ma w tym zbiorze, zostaną odfiltrowane. Zduplikowane i nieznane nazwy kategorii są ignorowane.
Ta opcja wzajemnie się wyklucza, category_denylist i ich użycie kończy się błędem. |
Dowolne ciągi | Nie ustawiono |
category_denylist |
Ustawia opcjonalną listę niedozwolonych nazw kategorii. Jeśli pole nie jest puste, wyniki klasyfikacji, których nazwa kategorii znajduje się w tym zbiorze, zostaną odfiltrowane. Zduplikowane i nieznane nazwy kategorii są ignorowane. Ta opcja wzajemnie się wyklucza z category_allowlist , a korzystanie z obu daje błąd. |
Dowolne ciągi | Nie ustawiono |
result_callback |
Ustawia detektor wyników, aby asynchronicznie otrzymywać wyniki klasyfikacji, gdy klasyfikator obrazów działa w trybie transmisji na żywo. Tego ustawienia można używać tylko wtedy, gdy tryb biegowy jest ustawiony na LIVE_STREAM |
Nie dotyczy | Nie ustawiono |
Modele
Klasyfikator obrazów wymaga pobrania modelu klasyfikacji obrazów i zapisania go w katalogu projektu. Gdy zaczniesz tworzyć aplikacje z tym zadaniem, zacznij od domyślnego, zalecanego modelu dla platformy docelowej. Inne dostępne modele zwykle kompensują wymagania dotyczące wydajności, dokładności, rozdzielczości i zasobów, a w niektórych przypadkach zawierają dodatkowe funkcje.
Model EfficientNet-Lite0 (zalecany)
Model EfficientNet-Lite0 korzysta z architektury EfficientNet i został wytrenowany z użyciem ImageNet do rozpoznawania 1000 klas, takich jak drzewa, zwierzęta, jedzenie, pojazdy, ludzie itp. Zobacz pełną listę obsługiwanych etykiet. EfficientNet-Lite0 jest dostępna jako model typu int8 i zmiennoprzecinkowy 32. Ten model jest zalecany, ponieważ zapewnia równowagę między czasem oczekiwania a dokładnością. Jest precyzyjne i wystarczająco lekkie w wielu przypadkach.
Nazwa modelu | Wprowadź kształt | Typ kwantyzacji | Wersje |
---|---|---|---|
EfficientNet-Lite0 (int8) | 224 x 224 | int8 | Najnowsze |
EfficientNet-Lite0 (liczba zmiennoprzecinkowa 32) | 224 x 224 | Brak (float32) | Najnowsze |
Model EfficientNet-Lite2
Model EfficientNet-Lite2 korzysta z architektury EfficientNet i został wytrenowany z użyciem ImageNet do rozpoznawania 1000 klas, takich jak drzewa, zwierzęta, jedzenie, pojazdy czy osoby. Zobacz pełną listę obsługiwanych etykiet. EfficientNet-Lite2 jest dostępna jako model typu int8 i zmiennoprzecinkowy 32. Ten model jest zwykle dokładniejszy niż EfficientNet-Lite0, ale jest też wolniejszy i zużywa więcej pamięci. Ten model jest odpowiedni w przypadkach, w których dokładność jest ważniejsza niż szybkość lub rozmiar.
Nazwa modelu | Wprowadź kształt | Typ kwantyzacji | Wersje |
---|---|---|---|
EfficientNet-Lite2 (int8) | 224 x 224 | int8 | Najnowsze |
EfficientNet-Lite2 (liczba zmiennoprzecinkowa 32) | 224 x 224 | Brak (float32) | Najnowsze |
Testy porównawcze działań
Oto porównania zadań dla całego potoku na podstawie powyższych wytrenowanych modeli. Wynik opóźnienia to średnie opóźnienie na Pixelu 6 korzystającym z procesora / GPU.
Nazwa modelu | Czas oczekiwania procesora | Opóźnienie GPU |
---|---|---|
EfficientNet-Lite0 (liczba zmiennoprzecinkowa 32) | 23,52 ms | 18,90 ms |
EfficientNet-Lite0 (int8) | 10,08 ms | - |
EfficientNet-Lite2 (liczba zmiennoprzecinkowa 32) | 44,17 ms | 22,20 ms |
EfficientNet-Lite2 (int8) | 19,43 ms | - |
Modele niestandardowe
W tym zadaniu możesz użyć niestandardowego modelu ML, jeśli chcesz poprawić lub zmienić możliwości oferowanych modeli. W Kreatorze modeli możesz modyfikować istniejące modele lub tworzyć modele przy użyciu takich narzędzi jak TensorFlow. Modele niestandardowe używane z MediaPipe muszą być w formacie TensorFlow Lite i muszą zawierać określone metadane opisujące parametry operacyjne modelu. Przed utworzeniem własnych modeli rozważ zmodyfikowanie udostępnionych modeli w tym zadaniu za pomocą Kreatora modeli.
Jeśli chcesz utworzyć niestandardowy klasyfikator obrazów przy użyciu własnego zbioru danych, zacznij od samouczka na temat dostosowywania klasyfikatora obrazów.