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.
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:
- Android – przykład kodu – przewodnik
- Python – przykład kodu – przewodnik
- Web – przykład kodu – przewodnik
- iOS – przykład kodu – przewodnik
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:
|
Klasyfikator obrazów zwraca 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. 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 (zalecany),
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.