Domyślnie interfejsy ML Kit API korzystają z modeli systemów uczących się wytrenowanych przez Google. Modele te są przeznaczone do obsługi szerokiego zakresu zastosowań. W niektórych przypadkach wymagane są jednak bardziej ukierunkowane modele. Dlatego niektóre interfejsy ML Kit API umożliwiają teraz zastąpienie domyślnych modeli niestandardowymi modelami LiteRT.
Zarówno inter0fejs Image Labeling, jak i Object Detection & Tracking API obsługują niestandardowe modele klasyfikacji obrazów. Są one zgodne z wybranymi modelami wytrenowanymi już przez Google i innymi modelami wysokiej jakości w TensorFlow Hub lub z własnym modelem niestandardowym wytrenowanym za pomocą TensorFlow lub AutoML.
Jeśli potrzebujesz niestandardowego rozwiązania w innych domenach lub przypadkach użycia, odwiedź stronę On-device Machine Learning, aby uzyskać wskazówki dotyczące wszystkich rozwiązań i narzędzi Google's do uczenia maszynowego na urządzeniu.
Zalety korzystania z ML Kit z modelami niestandardowymi
Zalety korzystania z niestandardowego modelu klasyfikacji obrazów z ML Kit:
- Łatwe w użyciu interfejsy API wysokiego poziomu – nie musisz zajmować się danymi wejściowymi i wyjściowymi modelu niskiego poziomu, obsługiwać przetwarzania wstępnego i końcowego obrazu ani tworzyć potoku przetwarzania.
- Nie musisz samodzielnie mapować etykiet – ML Kit wyodrębnia etykiety z metadanych modelu LiteRT i wykonuje mapowanie.
- Obsługa modeli niestandardowych z wielu źródeł – od modeli wytrenowanych już przez Google i innych twórców opublikowanych w TensorFlow Hub po nowe modele wytrenowane za pomocą TensorFlow lub AutoML.
- Zoptymalizowane pod kątem integracji z interfejsami Camera API Androida.
A w przypadku wykrywania i śledzenia obiektów:
- Zwiększenie dokładności klasyfikacji dzięki lokalizowaniu obiektów i uruchamianiu klasyfikatora tylko w odpowiednim obszarze obrazu.
- Zapewnienie interaktywnych wrażeń w czasie rzeczywistym dzięki natychmiastowemu przekazywaniu użytkownikom informacji o wykrywanych i klasyfikowanych obiektach.
Korzystanie z wytrenowanego modelu klasyfikacji obrazów
Możesz używać wytrenowanych modeli LiteRT, o ile spełniają one a określone kryteria. W TensorFlow Hub udostępniamy zestaw sprawdzonych modeli – od Google i innych twórców – które spełniają te kryteria.
Korzystanie z modelu opublikowanego w TensorFlow Hub
TensorFlow Hub oferuje szeroką gamę wytrenowanych modeli klasyfikacji obrazów – od różnych twórców – które można używać z interfejsami Image Labeling API oraz Object Detection and Tracking API. Aby to zrobić:
- Wybierz model z kolekcji modeli zgodnych z ML Kit.
- Pobierz plik modelu .tflite ze strony z informacjami o modelu. Jeśli to możliwe, wybierz format modelu z metadanymi.
- Postępuj zgodnie z naszymi przewodnikami dotyczącymi interfejsu Image Labeling API lub Object Detection and Tracking API , aby dowiedzieć się, jak powiązać plik modelu z projektem i używać go w aplikacji na Androida lub iOS.
Trenowanie własnego modelu klasyfikacji obrazów
Jeśli żaden wytrenowany model klasyfikacji obrazów nie spełnia Twoich potrzeb, możesz wytrenować własny model LiteRT na różne sposoby. Niektóre z nich zostały opisane i omówione bardziej szczegółowo w następnej sekcji.
| Opcje trenowania własnego modelu klasyfikacji obrazów | |
|---|---|
| AutoML |
|
| Konwertowanie modelu TensorFlow na LiteRT |
|
AutoML
Modele klasyfikacji obrazów wytrenowane za pomocą AutoML są obsługiwane przez modele niestandardowe w interfejsach Image Labeling oraz Object Detection and Tracking API. Te interfejsy API obsługują też pobieranie modeli hostowanych w Cloud Storage.
Aby dowiedzieć się więcej o tym, jak używać modelu wytrenowanego za pomocą AutoML w aplikacjach na Androida i iOS, zapoznaj się z przewodnikami dotyczącymi modeli niestandardowych dla każdego interfejsu API, w zależności od przypadku użycia.
Modele utworzone za pomocą konwertera LiteRT
Jeśli masz już model klasyfikacji obrazów TensorFlow, możesz przekonwertować go za pomocą konwertera LiteRT. Upewnij się, że utworzony model spełnia te wymagania dotyczące zgodności.
Aby dowiedzieć się więcej o tym, jak używać modelu LiteRT w aplikacjach na Androida i iOS, zapoznaj się z naszymi przewodnikami dotyczącymi interfejsu Image Labeling API lub Object Detection and Tracking API, w zależności od przypadku użycia.
Zgodność modelu LiteRT
Możesz używać dowolnego wytrenowanego modelu klasyfikacji obrazów LiteRT, o ile spełnia on te wymagania:
Tensory
- Model musi mieć tylko 1 tensor wejściowy z tymi ograniczeniami:
- Dane są w formacie pikseli RGB.
- Dane są typu UINT8 lub FLOAT32. Jeśli typ tensora wejściowego to FLOAT32, musisz określić NormalizationOptions, dołączając metadane.
- Tensor ma 4 wymiary : BxHxWxC, gdzie:
- B to wielkość wsadu. Musi wynosić 1 (wnioskowanie w przypadku większych partii nie jest obsługiwane).
- W i H to szerokość i wysokość danych wejściowych.
- C to liczba oczekiwanych kanałów. Musi wynosić 3.
- Model musi mieć co najmniej 1 tensor wyjściowy z N klasami i 2 lub 4 wymiarami:
- (1xN)
- (1x1x1xN)
- W pełni obsługiwane są tylko modele z 1 głowicą. Modele z wieloma głowicami mogą zwracać nieoczekiwane wyniki.
Metadane
Metadane możesz dodać do pliku LiteRT zgodnie z opisem w sekcji Dodawanie metadanych do modeli LiteRT.
Aby używać modelu z tensorem wejściowym FLOAT32, musisz określić NormalizationOptions w metadanych.
Zalecamy też dołączenie tych metadanych do tensora wyjściowego TensorMetadata:
- Mapa etykiet określająca nazwę każdej klasy wyjściowej jako AssociatedFile z typem TENSOR_AXIS_LABELS (w przeciwnym razie można zwracać tylko numeryczne indeksy klas wyjściowych).
- Domyślny próg wyniku, poniżej którego wyniki są uznawane za zbyt mało wiarygodne, aby je zwracać, jako ProcessUnit z ScoreThresholdingOptions