Zadanie MediaPipe Image Classifier umożliwia klasyfikację obrazów. Za pomocą pozwala określić, co obraz reprezentuje w grupie kategorii zdefiniowanych podczas trenowania. Te instrukcje pokazują, jak używać klasyfikatora obrazów dla aplikacji węzłów i aplikacji internetowych.
Aby zobaczyć, jak działa to zadanie, wyświetl demo. Więcej informacji o funkcjach, modelach i opcjach konfiguracji zapoznaj się z Przeglądem.
Przykładowy kod
Przykładowy kod klasy Image Classifier zapewnia pełną implementację w JavaScripcie. Ten kod pomoże Ci przetestować to zadanie i zacznij tworzyć własną aplikację do klasyfikacji obrazów. Możesz wyświetlać, uruchamiać edytuj Przykładowy kod klasyfikatora obrazów tylko za pomocą przeglądarki.
Konfiguracja
W tej sekcji opisujemy najważniejsze czynności związane z konfigurowaniem środowiska programistycznego oraz w projektach kodu, w których używany jest Klasyfikator obrazów. Ogólne informacje na temat: skonfigurować środowisko programistyczne do korzystania z zadań MediaPipe, w tym wymagań wersji platformy, patrz Przewodnik po konfiguracji stron internetowych
Pakiety JavaScript
Kod klasyfikatora obrazów jest dostępny przez MediaPipe @mediapipe/tasks-vision
Pakiet NPM. Dostępne opcje
znajdź i pobierz te biblioteki, korzystając z linków dostępnych na platformie
Przewodnik po konfiguracji
Wymagane pakiety możesz zainstalować za pomocą tego kodu lokalnego środowiska przejściowego. za pomocą tego polecenia:
npm install @mediapipe/tasks-vision
Jeśli chcesz zaimportować kod zadania przez sieć dostarczania treści (CDN) , dodaj ten kod w tagu w pliku HTML:
<!-- You can replace JSDeliver with another CDN if you prefer to -->
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision/vision_bundle.js"
crossorigin="anonymous"></script>
</head>
Model
Zadanie MediaPipe Image Classifier wymaga wytrenowanego modelu zgodnego z tym zadanie. Więcej informacji o dostępnych wytrenowanych modelach na potrzeby klasyfikatora obrazów znajdziesz tutaj zapoznaj się z omówieniem zadania sekcją Modele.
Wybierz i pobierz model, a następnie zapisz go w katalogu projektu:
<dev-project-root>/app/shared/models/
Tworzenie zadania
Użyj jednej z funkcji klasyfikatora obrazów createFrom...()
, aby:
przygotować zadanie do uruchamiania wniosków. Użyj funkcji createFromModelPath()
ze ścieżką względną lub bezwzględną do pliku wytrenowanego modelu.
Jeśli model jest już załadowany do pamięci, możesz użyć funkcji
Metoda createFromModelBuffer()
.
Poniższy przykładowy kod pokazuje użycie funkcji createFromOptions()
do
skonfigurować zadanie. Funkcja createFromOptions
umożliwia dostosowanie parametru
Klasyfikator obrazów z opcjami konfiguracji. Więcej informacji o konfiguracji
Więcej informacji znajdziesz w sekcji Opcje konfiguracji.
Poniższy kod pokazuje, jak utworzyć i skonfigurować zadanie z niestandardowym użyciem opcje:
async function createImageClassifier {
const vision = await FilesetResolver.forVisionTasks(
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.0/wasm"
);
imageClassifier = await ImageClassifier.createFromOptions(vision, {
baseOptions: {
modelAssetPath: `https://storage.googleapis.com/mediapipe-models/image_classifier/efficientnet_lite0/float32/1/efficientnet_lite0.tflite`
},
});
}
Opcje konfiguracji
To zadanie zawiera te opcje konfiguracji aplikacji internetowych:
Nazwa opcji | Opis | Zakres wartości | Wartość domyślna |
---|---|---|---|
runningMode |
Ustawia tryb działania zadania. Dostępne są 2
tryby: IMAGE: tryb wprowadzania pojedynczego obrazu. WIDEO: tryb zdekodowanych klatek w filmie lub transmisji na żywo danych wejściowych, np. z kamery. |
{IMAGE, VIDEO } |
IMAGE |
displayNamesLocale |
Ustawia język etykiet, które mają być używane w przypadku nazw wyświetlanych w kolumnie
metadane modelu zadania, jeśli są dostępne. Wartość domyślna to en dla
Angielski. Do metadanych modelu niestandardowego możesz dodać zlokalizowane etykiety
za pomocą interfejsu TensorFlow Lite Metadata Writer API. |
Kod języka | en |
maxResults |
Ustawia opcjonalną maksymalną liczbę wyników klasyfikacji na . Jeśli < 0 – zostaną zwrócone wszystkie dostępne wyniki. | Dowolne liczby dodatnie | -1 |
scoreThreshold |
Ustawia próg wyniku prognozy, który zastępuje próg podany w polu metadane modelu (jeśli występują). Wyniki poniżej tej wartości zostały odrzucone. | Dowolna liczba zmiennoprzecinkowa | Nie ustawiono |
categoryAllowlist |
Ustawia opcjonalną listę dozwolonych nazw kategorii. Jeśli pole nie jest puste,
wyniki klasyfikacji, których nazwa kategorii nie znajduje się w tym zbiorze, zostaną
zostały odfiltrowane. Zduplikowane lub nieznane nazwy kategorii są ignorowane.
Ta opcja nie działa z usługą categoryDenylist i korzysta z funkcji
skutkuje to błędem. |
Dowolne ciągi | Nie ustawiono |
categoryDenylist |
Ustawia opcjonalną listę nazw kategorii, które nie są dozwolone. Jeśli
niepuste, wyniki klasyfikacji, których nazwa kategorii znajduje się w tym zbiorze, zostaną odfiltrowane
na zewnątrz. Zduplikowane lub nieznane nazwy kategorii są ignorowane. Ta opcja jest wzajemna
tylko w polu categoryAllowlist , co spowoduje błąd. |
Dowolne ciągi | Nie ustawiono |
resultListener |
Konfiguruje detektor wyników, aby otrzymywać wyniki klasyfikacji
asynchronicznie, gdy w transmisji na żywo działa Klasyfikator obrazów.
i trybu uzyskiwania zgody. Tej opcji można używać tylko wtedy, gdy tryb działania jest ustawiony na LIVE_STREAM |
Nie dotyczy | Nie ustawiono |
Przygotuj dane
Klasyfikator obrazów może klasyfikować obiekty w obrazach w dowolnym formacie obsługiwanym przez przeglądarki hosta. Zadanie obsługuje również wstępne przetwarzanie danych wejściowych, w tym: zmiany rozmiaru, obrót i normalizację wartości.
Uruchomione są wywołania metod classify()
i classifyForVideo()
klasyfikatora obrazów
synchronicznie i zablokować wątek interfejsu użytkownika. Jeśli klasyfikujesz obiekty w
klatek wideo z kamery urządzenia, każda klasyfikacja zablokuje główny
w wątku. Możesz temu zapobiec, implementując instancje internetowe do uruchamiania
classify()
i classifyForVideo()
w innym wątku.
Uruchamianie zadania
Klasyfikator obrazów używa metody classify()
z trybem obrazu i
metodę classifyForVideo()
z włączonym trybem video
danych. Interfejs Image Classifier API zwróci możliwe kategorie
obiektów na obrazie wejściowym.
Ten kod pokazuje, jak wykonywać przetwarzanie za pomocą modelu zadań:
Obraz
const image = document.getElementById("image") as HTMLImageElement; const imageClassifierResult = imageClassifier.classify(image);
Wideo
const video = document.getElementById("video"); await imageClassifier.setOptions({ runningMode: "VIDEO" }); const timestamp = performance.now(); const classificationResult = await imageClassifier.classifyForVideo( video, timestamp );
Pełną implementację uruchamiania zadania klasyfikatora obrazów znajdziesz w przykładowy kod).
Obsługa i wyświetlanie wyników
Po uruchomieniu wnioskowania zadanie Klasyfikator obrazów zwraca błąd
ImageClassifierResult
obiekt zawierający listę możliwych kategorii
obiektów na obrazie lub w ramce wejściowej.
Poniżej znajdziesz przykładowe dane wyjściowe tego zadania:
ImageClassifierResult:
Classifications #0 (single classification head):
head index: 0
category #0:
category name: "/m/01bwb9"
display name: "Passer domesticus"
score: 0.91406
index: 671
category #1:
category name: "/m/01bwbt"
display name: "Passer montanus"
score: 0.00391
index: 670
Ten wynik uzyskano po uruchomieniu Bird Classifier. dnia:
Przykładowy kod klasyfikatora obrazów pokazuje, jak wyświetlić klasyfikację wyników zwróconych przez zadanie, patrz przykładowy kod .