Przewodnik po zadaniach klasyfikacji obrazów

Zwierzę prawidłowo opisane jako flaming z poziomem ufności 95%

Zadanie MediaPipe Image Classifier umożliwia klasyfikowanie obrazów. Za pomocą tego zadania możesz określić, co przedstawia obraz spośród zestawu kategorii zdefiniowanych podczas treningu. To zadanie działa na danych obrazów z modelem systemów uczących się (ML) jako dane statyczne lub ciągły strumień i wyprowadza listę potencjalnych kategorii uporządkowanych według malejącego wyniku prawdopodobieństwa.

Wypróbuj to!

Rozpocznij

Aby zacząć korzystać z tego zadania, postępuj zgodnie z jednym z tych przewodników dotyczących wdrażania na platformie docelowej. Te przewodniki dotyczące poszczególnych platform zawierają podstawowe informacje o wdrażaniu tego zadania przy użyciu zalecanego modelu oraz przykłady kodu z zalecanymi opcjami konfiguracji:

Szczegóły działania

W tej sekcji opisano możliwości, dane wejściowe, dane wyjściowe i opcje konfiguracji tego zadania.

Funkcje

  • Przetwarzanie wejściowego obrazu – przetwarzanie obejmuje obrót, zmianę rozmiaru, normalizację i konwersję przestrzeni barw.
  • Obszar zainteresowania – klasyfikacja obszaru obrazu zamiast całego obrazu.
  • Język mapy z etykietami – ustaw język używany do wyświetlania nazw.
  • Progień wyniku – filtrowanie wyników według progu wyniku prognozy.
  • Klasyfikacja Top-k – ogranicza liczbę wyników klasyfikacji.
  • Lista dozwolonych i odrzuconych etykiet – określ kategorie, które zostały sklasyfikowane.
Dane wejściowe zadania Dane wyjściowe
Dane wejściowe mogą być jednym z tych typów danych:
  • obrazy nieruchome,
  • Dekodowane klatki wideo
  • Transmisja na żywo
Klasyfikator obrazów zwraca listę kategorii zawierającą:
  • Indeks kategorii: indeks kategorii w danych wyjściowych modelu.
  • Wynik: wynik ufności dla tej kategorii, zwykle prawdopodobieństwo w zakresie [0,1]
  • Nazwa kategorii (opcjonalnie): nazwa kategorii określona w metadanych modelu TFLite (jeśli są dostępne).
  • Wyświetlana nazwa kategorii (opcjonalnie): wyświetlana nazwa kategorii zgodnie z danymi metadanych modelu TFLite w języku określonym w opcjach języka wyświetlanych nazw (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. Dostępne są 3 tryby:

OBRAZ: tryb dla pojedynczych obrazów wejściowych.

FILM: tryb dekodowanych klatek filmu.

LIVE_STREAM: tryb transmisji na żywo danych wejściowych, takich jak dane z kamery. W tym trybie należy wywołać metodę resultListener, aby skonfigurować odbiornik, który będzie asynchronicznie odbierał wyniki.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
display_names_locale Określa język etykiet, których należy używać do wyświetlanych nazw podanych w metadanych modelu zadania (jeśli są dostępne). Wartość domyślna to en w przypadku języka angielskiego. Możesz dodawać zlokalizowane etykiety do metadanych modelu niestandardowego, korzystając z interfejsu TensorFlow Lite Metadata Writer API. Kod języka en
max_results Określa opcjonalną maksymalną liczbę najlepszych wyników klasyfikacji do zwrócenia. Jeśli wartość jest mniejsza od 0, zwracane są 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 takie istnieją). Wyniki poniżej tej wartości są odrzucane. Dowolna liczba zmiennych typu float Nie ustawiono
category_allowlist Ustawia opcjonalną listę dozwolonych nazw kategorii. Jeśli wyniki klasyfikacji nie są puste, a nazwa kategorii nie znajduje się w tym zbiorze, zostaną odfiltrowane. Powtarzające się lub nieznane nazwy kategorii są ignorowane. Ta opcja jest wzajemnie wykluczająca się z opcją category_denylist. Użycie obu spowoduje błąd. dowolne ciągi znaków; Nie ustawiono
category_denylist Ustawia opcjonalną listę nazw kategorii, które są niedozwolone. Jeśli nie jest pusty, wyniki klasyfikacji, których nazwa kategorii znajduje się w tym zbiorze, zostaną odfiltrowane. Powtarzające się lub nieznane nazwy kategorii są ignorowane. Ta opcja jest wzajemnie wykluczająca się z opcją category_allowlist, a użycie obu spowoduje błąd. dowolne ciągi znaków; Nie ustawiono
result_callback Spowoduje, że odbiorca wyników będzie otrzymywać wyniki klasyfikacji asynchronicznie, gdy klasyfikator obrazów będzie w trybie transmisji na żywo. Można go używać tylko wtedy, gdy tryb działania ma wartość LIVE_STREAM. Nie dotyczy Nie ustawiono

Modele

Narzędzie do klasyfikacji obrazów wymaga pobrania i zapisania w katalogu projektu modelu klasyfikacji obrazów. Gdy zaczniesz tworzyć modele, zacznij od domyślnego, zalecanego modelu dla platformy docelowej. Inne dostępne modele zwykle stanowią kompromis między wydajnością, dokładnością, rozdzielczością i wymaganiami dotyczącymi zasobów, a w niektórych przypadkach obejmują dodatkowe funkcje.

Model EfficientNet-Lite0 korzysta z architektury EfficientNet i został wytrenowany za pomocą 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ępny jako model int8 i float 32. Ten model jest zalecany, ponieważ zapewnia równowagę między opóźnieniem a dokładnością. Jest on dokładny i wystarczająco lekki, aby sprawdzać się w wielu zastosowaniach.

Nazwa modelu Kształt wejściowy Typ kwantowania Wersje
EfficientNet-Lite0 (int8) 224 x 224 int8 Najnowsze
EfficientNet-Lite0 (float 32) 224 x 224 Brak (float32) Najnowsze

model EfficientNet-Lite2,

Model EfficientNet-Lite2 korzysta z architektury EfficientNet i został wytrenowany za pomocą ImageNet do rozpoznawania 1000 klas, takich jak drzewa, zwierzęta, jedzenie, pojazdy, osoby itp. Zobacz pełną listę obsługiwanych etykiet. Model EfficientNet-Lite2 jest dostępny w wersji int8 i float 32. Ten model jest zazwyczaj dokładniejszy niż EfficientNet-Lite0, ale jest też wolniejszy i bardziej obciążający pamięć. Ten model jest odpowiedni w przypadkach, w których dokładność ma wyższy priorytet niż szybkość lub rozmiar.

Nazwa modelu Kształt wejściowy Typ kwantowania Wersje
EfficientNet-Lite2 (int8) 224 x 224 int8 Najnowsze
EfficientNet-Lite2 (float 32) 224 x 224 Brak (float32) Najnowsze

Porównania zadań

Poniżej znajdziesz punkty odniesienia zadań dla całego potoku na podstawie wymienionych powyżej wstępnie wytrenowanych modeli. Wynik opóźnienia to średnie opóźnienie na Pixelu 6 z wykorzystaniem procesora CPU lub GPU.

Nazwa modelu Czas oczekiwania procesora Opóźnienie GPU
EfficientNet-Lite0 (float 32) 23,52 ms 18,90 ms
EfficientNet-Lite0 (int8) 10,08 ms -
EfficientNet-Lite2 (float 32) 44,17 ms 22,20 ms
EfficientNet-Lite2 (int8) 19,43 ms -

Modele niestandardowe

Jeśli chcesz poprawić lub zmienić możliwości dostępnych modeli, możesz użyć do tego celu niestandardowego modelu AI. Za pomocą Kreatora modeli możesz modyfikować istniejące modele lub tworzyć nowe za pomocą narzędzi takich jak TensorFlow. Modele niestandardowe używane z MediaPipe muszą być w formacie TensorFlow Lite i zawierać określone metadata opisujące parametry operacyjne modelu. Przed utworzeniem własnych modeli warto użyć Model Makera, aby zmodyfikować udostępnione modele w ramach tego zadania.

Jeśli chcesz utworzyć niestandardowy klasyfikator obrazów na podstawie własnego zbioru danych, zacznij od samouczka Dostosowywanie klasyfikatora obrazów.