Klasyfikacja obrazu

Zadanie polegające na określeniu, co reprezentuje obraz, nazywa się klasyfikacją obrazu . Model klasyfikacji obrazów jest szkolony w zakresie rozpoznawania różnych klas obrazów. Możesz na przykład nauczyć model rozpoznawania zdjęć przedstawiających trzy różne typy zwierząt: króliki, chomiki i psy. TensorFlow Lite zapewnia zoptymalizowane, wstępnie wyszkolone modele, które można wdrożyć w aplikacjach mobilnych. Dowiedz się więcej o klasyfikacji obrazów za pomocą TensorFlow tutaj .

Na poniższej ilustracji przedstawiono dane wyjściowe modelu klasyfikacji obrazów w systemie Android.

Zrzut ekranu przykładowego Androida

Zaczynaj

Jeśli dopiero zaczynasz korzystać z TensorFlow Lite i pracujesz z systemem Android lub iOS, zalecamy zapoznanie się z poniższymi przykładowymi aplikacjami, które mogą pomóc Ci rozpocząć.

Możesz wykorzystać gotowy interfejs API z biblioteki zadań TensorFlow Lite, aby zintegrować modele klasyfikacji obrazów w zaledwie kilku wierszach kodu. Możesz także zbudować własny, niestandardowy potok wnioskowania, korzystając z biblioteki pomocniczej TensorFlow Lite .

Poniższy przykład Androida ilustruje implementację obu metod, odpowiednio, lib_task_api i lib_support .

Zobacz przykład Androida

Zobacz przykład iOS

Jeśli korzystasz z platformy innej niż Android/iOS lub znasz już interfejsy API TensorFlow Lite , pobierz model startowy i pliki pomocnicze (jeśli dotyczy).

Pobierz model startowy

Opis modelu

Jak to działa

Podczas uczenia model klasyfikacji obrazów otrzymuje obrazy i powiązane z nimi etykiety . Każda etykieta to nazwa odrębnej koncepcji lub klasy, którą model nauczy się rozpoznawać.

Mając wystarczające dane szkoleniowe (często setki lub tysiące obrazów na etykietę), model klasyfikacji obrazów może nauczyć się przewidywać, czy nowe obrazy należą do którejkolwiek z klas, na których został przeszkolony. Ten proces przewidywania nazywa się wnioskowaniem . Należy pamiętać, że uczenia transferowego można także używać do identyfikowania nowych klas obrazów przy użyciu istniejącego modelu. Uczenie transferowe nie wymaga bardzo dużego zbioru danych szkoleniowych.

Kiedy następnie podasz nowy obraz jako dane wejściowe do modelu, wyświetli on prawdopodobieństwa obrazu reprezentującego każdy typ zwierzęcia, na którym był szkolony. Przykładowe dane wyjściowe mogą wyglądać następująco:

Typ zwierzęcy Prawdopodobieństwo
Królik 0,07
Chomik 0,02
Pies 0,91

Każda liczba na wyjściu odpowiada etykiecie w danych szkoleniowych. Powiązanie wyników z trzema etykietami, na których uczono model, można zauważyć, że model przewidział z dużym prawdopodobieństwem, że obraz przedstawia psa.

Możesz zauważyć, że suma wszystkich prawdopodobieństw (dla królika, chomika i psa) jest równa 1. Jest to powszechny typ wyników w przypadku modeli z wieloma klasami (więcej informacji można znaleźć w Softmax ).

Niejednoznaczne wyniki

Ponieważ prawdopodobieństwa wyjściowe zawsze będą sumować się do 1, jeśli obraz nie zostanie z całą pewnością rozpoznany jako należący do którejkolwiek z klas, na których uczono model, możesz zobaczyć prawdopodobieństwo rozłożone na etykietach, przy czym żadna wartość nie będzie znacząco większa.

Na przykład poniższe informacje mogą wskazywać na niejednoznaczny wynik:

Etykieta Prawdopodobieństwo
Królik 0,31
chomik 0,35
pies 0,34
Jeśli Twój model często zwraca niejednoznaczne wyniki, możesz potrzebować innego, dokładniejszego modelu.

Wybór architektury modelu

TensorFlow Lite zapewnia różnorodne modele klasyfikacji obrazów, które są trenowane na oryginalnym zestawie danych. Architektury modeli, takie jak MobileNet, Inception i NASNet, są dostępne w TensorFlow Hub . Aby wybrać najlepszy model dla swojego przypadku użycia, należy wziąć pod uwagę indywidualne architektury, a także niektóre kompromisy między różnymi modelami. Niektóre z tych kompromisów w zakresie modeli opierają się na wskaźnikach, takich jak wydajność, dokładność i rozmiar modelu. Na przykład możesz potrzebować szybszego modelu do zbudowania skanera kodów kreskowych, a do aplikacji do obrazowania medycznego możesz preferować wolniejszy i dokładniejszy model. Należy pamiętać, że dostarczone modele klasyfikacji obrazów akceptują różne rozmiary danych wejściowych. W przypadku niektórych modeli jest to wskazane w nazwie pliku. Na przykład model Mobilenet_V1_1.0_224 akceptuje sygnał wejściowy o rozdzielczości 224 x 224 pikseli. Wszystkie modele wymagają trzech kanałów kolorów na piksel (czerwony, zielony i niebieski). Modele kwantyzowane wymagają 1 bajtu na kanał, a modele float wymagają 4 bajtów na kanał. Przykłady kodu dla systemów Android i iOS pokazują, jak przetwarzać pełnowymiarowe obrazy z aparatu do formatu wymaganego dla każdego modelu.

Zastosowania i ograniczenia

Modele klasyfikacji obrazów TensorFlow Lite są przydatne do klasyfikacji z pojedynczą etykietą; to znaczy przewidywanie, którą pojedynczą etykietę najprawdopodobniej reprezentuje obraz. Są przeszkoleni w rozpoznawaniu 1000 klas obrazów. Pełną listę klas znajdziesz w pliku etykiet w pliku ZIP modelu . Jeśli chcesz wytrenować model w zakresie rozpoznawania nowych klas, zobacz Dostosowywanie modelu . W następujących przypadkach użycia należy zastosować inny typ modelu:
  • Przewidywanie typu i położenia jednego lub większej liczby obiektów na obrazie (zobacz Wykrywanie obiektów )
  • Przewidywanie kompozycji obrazu, na przykład tematu i tła (zobacz Segmentacja )
Gdy już uruchomisz model startowy na urządzeniu docelowym, możesz eksperymentować z różnymi modelami, aby znaleźć optymalną równowagę pomiędzy wydajnością, dokładnością i rozmiarem modelu.

Dostosuj model

Dostarczone wstępnie wyszkolone modele są przeszkolone w zakresie rozpoznawania 1000 klas obrazów. Pełną listę klas znajdziesz w pliku etykiet w pliku ZIP modelu . Możesz także użyć uczenia transferowego, aby ponownie wytrenować model w celu rozpoznawania klas, które nie znajdują się w oryginalnym zestawie. Można na przykład ponownie nauczyć model, aby rozróżniał różne gatunki drzew, mimo że w oryginalnych danych uczących nie było żadnych drzew. Aby to zrobić, będziesz potrzebować zestawu obrazów szkoleniowych dla każdej nowej etykiety, którą chcesz trenować. Dowiedz się, jak przeprowadzić naukę transferu za pomocą TFLite Model Maker lub w laboratorium rozpoznawania kwiatów za pomocą TensorFlow .

Benchmarki wydajności

Wydajność modelu mierzy się w kategoriach czasu potrzebnego modelowi na wykonanie wnioskowania na danym sprzęcie. Im krótszy czas, tym szybszy model. Wymagana wydajność zależy od zastosowania. Wydajność może być istotna w zastosowaniach takich jak wideo w czasie rzeczywistym, gdzie istotna może być analiza każdej klatki w czasie poprzedzającym narysowanie kolejnej klatki (np. wnioskowanie musi trwać szybciej niż 33 ms, aby można było przeprowadzić wnioskowanie w czasie rzeczywistym na strumieniu wideo z szybkością 30 klatek na sekundę). . Kwantyzowany zakres wydajności modeli MobileNet TensorFlow Lite wynosi od 3,7 ms do 80,3 ms. Wartości porównawcze wydajności są generowane za pomocą narzędzia do porównywania .
Nazwa modelu Rozmiar modelu Urządzenie NNAPI procesor
Mobilenet_V1_1.0_224_quant 4,3 Mb Piksel 3 (Android 10) 6 ms 13 ms*
Piksel 4 (Android 10) 3,3 ms 5ms*
iPhone XS (iOS 12.4.1) 11 ms**

* Wykorzystano 4 wątki.

** 2 wątki używane w iPhonie w celu uzyskania najlepszego wyniku.

Dokładność modelu

Dokładność mierzy się częstotliwością, w której model poprawnie klasyfikuje obraz. Na przykład można oczekiwać, że model o określonej dokładności 60% będzie poprawnie klasyfikował obraz średnio w 60% przypadków.

Najbardziej odpowiednie wskaźniki dokładności to Top-1 i Top-5. Top-1 odnosi się do tego, jak często poprawna etykieta pojawia się jako etykieta z największym prawdopodobieństwem w wynikach modelu. Top-5 odnosi się do tego, jak często w wynikach modelu pojawia się prawidłowa etykieta dla 5 najwyższych prawdopodobieństw.

TensorFlow Lite skwantyzował zakres dokładności Top 5 modeli MobileNet od 64,4 do 89,9%.

Rozmiar modelu

Rozmiar modelu na dysku zależy od jego wydajności i dokładności. Rozmiar może być ważny w przypadku programowania na urządzenia mobilne (gdzie może mieć wpływ na rozmiar pobieranych aplikacji) lub podczas pracy ze sprzętem (gdzie dostępna pamięć może być ograniczona).

Rozmiary skwantowanych modeli MobileNet TensorFlow Lite wahają się od 0,5 do 3,4 MB.

Dalsza lektura i zasoby

Aby dowiedzieć się więcej o pojęciach związanych z klasyfikacją obrazów, skorzystaj z następujących zasobów: