Przewodnik po zadaniach klasyfikacji obrazów

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.

Wypróbuj!

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:

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:
  • nieruchome obrazy;
  • Zdekodowane klatki wideo
  • Kanał z obrazem na żywo
Klasyfikator obrazów generuje listę kategorii zawierającą:
  • Indeks kategorii: indeks kategorii w danych wyjściowych modelu
  • Wynik: stopień ufności dla tej kategorii, zwykle prawdopodobieństwo w zakresie [0,1].
  • Nazwa kategorii (opcjonalna): nazwa kategorii określona w metadanych modelu TFLite, jeśli są dostępne.
  • Wyświetlana nazwa kategorii (opcjonalna): wyświetlana nazwa kategorii określona w metadanych modelu TFLite w języku określonym za pomocą wyświetlanych nazw opcji regionalnych, jeśli są dostępne.

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