Zadanie MediaPipe Image Embedder umożliwia tworzenie liczbowej reprezentacji obrazu, co jest przydatne do wykonywania różnych zadań związanych z przetwarzaniem obrazów z wykorzystaniem uczenia maszynowego. Ta funkcja jest często używana do porównywania podobieństwa 2 obrazów za pomocą metod matematycznych, takich jak podobieństwo 2 zdań. To zadanie działa na danych obrazów z modelem uczenia maszynowego (ML) jako danych statycznych lub ciągłego strumienia i wyprowadza liczbową reprezentację danych obrazów jako listy wektorów cech o wysokiej wymiarowości, zwanych też wektorami zanurzeniowymi, w postaci liczby zmiennoprzecinkowej lub zaokrąglonej.
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
 
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.
 - Region zainteresowania – umożliwia umieszczanie w ramce części obrazu zamiast całego obrazu.
 - Obliczanie podobieństwa za pomocą embeddingu – wbudowana funkcja pomocnicza do obliczania podobieństwosferycznego między dwoma wektorami cech.
 - Kwantyzacja – obsługa kwantyzacji skalarnej wektorów cech.
 
| Dane wejściowe zadania | Dane wyjściowe | 
|---|---|
Dane wejściowe mogą być jednym z tych typów danych:
 
 
  | 
       Image Embedder zwraca listę reprezentacji właściwościowych, która zawiera:
 
 
  | 
    
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 | 
    
l2_normalize | 
      Określa, czy zwrócony wektor cech ma być znormalizowany za pomocą normy L2. Używaj tej opcji tylko wtedy, gdy model nie zawiera już natywnej operacji TFLite L2_NORMALIZATION. W większości przypadków tak jest już w ogóle, więc normalizacja L2 jest osiągana przez wnioskowanie TFLite bez potrzeby stosowania tej opcji. | Boolean | 
      False | 
    
quantize | 
      Określa, czy zwrócony wektor dystrybucyjny ma być zaokrąglony do bajtów za pomocą kwantyzacji skalarnej. Zakłada się, że wektory mają długość jednostkową, dlatego wartość dowolnego wymiaru musi mieścić się w zakresie [-1,0, 1,0]. Jeśli nie, użyj opcji l2_normalize. | Boolean | 
      False | 
    
result_callback | 
      Ustawia odbiornik wyników tak, aby otrzymywał wyniki umieszczania asynchronicznie, gdy moduł umieszczania obrazu jest 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 Image Embedder wymaga pobrania i zapisania w katalogu projektu modelu wektora dystrybucyjnego obrazu. Gdy zaczniesz tworzyć aplikację, zacznij od domyślnego, zalecanego modelu na platformie 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 zawierają dodatkowe funkcje.
Model MobileNetV3
Ta rodzina modeli korzysta z architektury MobileNet V3 i została wyszkolona na podstawie danych ImageNet. Ten model używa mnożnika 0,75 dla głębokości (liczby cech) w warstwach konwolucyjnych, aby dostosować kompromis między dokładnością a opóźnieniem. Ponadto MobileNet V3 jest dostępny w 2 rozmiarach: małym i dużym, aby dostosować sieć do niskiego lub wysokiego użycia zasobów.
| Nazwa modelu | Kształt wejściowy | Typ kwantowania | Wersje | 
|---|---|---|---|
| MobileNet-V3 (mała) | 224 x 224 | Brak (float32) | Najnowsze | 
| MobileNet-V3 (large) | 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 | 
|---|---|---|
| MobileNet-V3 (mała) | 3,94 ms | 7,83 ms | 
| MobileNet-V3 (duży) | 9,75 ms | 9,08 ms |