Odpowiedz już dziś na lokalne wydarzenie TensorFlow Everywhere!
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Klasyfikacja obrazu

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

Poniższy obraz przedstawia dane wyjściowe modelu klasyfikacji obrazu w systemie Android.

Zrzut ekranu z przykładem Androida

Zaczynaj

Jeśli jesteś nowym użytkownikiem TensorFlow Lite i pracujesz z systemem Android lub iOS, zalecamy zapoznanie się z następującymi przykładowymi aplikacjami, które mogą pomóc w rozpoczęciu pracy.

Możesz skorzystać z gotowego interfejsu API z biblioteki zadań TensorFlow Lite, aby zintegrować modele klasyfikacji obrazów w zaledwie kilku wierszach kodu. Możesz również zbudować własny, niestandardowy potok wnioskowania, korzystając z biblioteki obsługi TensorFlow Lite .

Poniższy przykład systemu Android demonstruje implementację dla obu metod odpowiednio jako 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 szkolenia model klasyfikacji obrazów jest wprowadzany do obrazów i powiązanych z nimi etykiet . 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ę wnioskiem . Zauważ, że możesz również użyć uczenia transferowego, aby zidentyfikować nowe klasy obrazów przy użyciu wcześniej istniejącego modelu. Transfer uczenia się nie wymaga bardzo dużego zbioru danych szkoleniowych.

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

Typ zwierzęcia Prawdopodobieństwo
Królik 0,07
Chomik 0,02
Pies 0.91

Każda liczba w danych wyjściowych odpowiada etykiecie w danych uczących. Po powiązaniu wyniku z trzema etykietami, na podstawie których trenowano model, można zobaczyć, że model przewidział wysokie prawdopodobieństwo, ż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 typowy typ wyniku dla modeli z wieloma klasami (więcej informacji można znaleźć w Softmax ).

Niejednoznaczne wyniki

Ponieważ prawdopodobieństwa wyjściowe zawsze będą sumowane do 1, jeśli obraz nie zostanie z pewnością rozpoznany jako należący do którejkolwiek z klas, na podstawie których trenowano model, można zobaczyć prawdopodobieństwo rozłożone na etykiety bez żadnej wartości, która jest znacznie 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 model często zwraca niejednoznaczne wyniki, może być potrzebny inny, dokładniejszy model.

Wybór modelu architektury

TensorFlow Lite zapewnia różnorodne modele klasyfikacji obrazów, które są szkolone w oparciu o oryginalny zbiór danych. Architektury modeli, takie jak MobileNet, Inception i NASNet, są dostępne na stronie hostowanych modeli . Aby wybrać najlepszy model dla swojego przypadku użycia, należy wziąć pod uwagę poszczególne architektury, a także niektóre kompromisy między różnymi modelami. Niektóre z tych kompromisów w modelu są oparte na metrykach, takich jak wydajność, dokładność i rozmiar modelu. Na przykład możesz potrzebować szybszego modelu do zbudowania skanera kodów kreskowych, podczas gdy wolisz wolniejszy, dokładniejszy model dla aplikacji do obrazowania medycznego. Należy pamiętać, że dostarczone modele klasyfikacji obrazu 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 dane wejściowe o rozmiarze 224x224 pikseli. Wszystkie modele wymagają trzech kanałów koloru na piksel (czerwony, zielony i niebieski). Modele skwantowane wymagają 1 bajtu na kanał, a modele zmiennoprzecinkowe wymagają 4 bajtów na kanał. Przykłady kodu dla systemów Android i iOS pokazują, jak przetwarzać pełnowymiarowe obrazy z aparatu do wymaganego formatu dla każdego modelu.

Zastosowania i ograniczenia

Modele klasyfikacji obrazów TensorFlow Lite są przydatne do klasyfikacji z jedną etykietą; to znaczy przewidywanie, którą pojedynczą etykietę obraz najprawdopodobniej będzie reprezentował. Są przeszkoleni w rozpoznawaniu 1000 klas obrazów. Pełną listę klas można znaleźć w pliku etykiet w pliku zip modelu . Jeśli chcesz uczyć model rozpoznawania nowych klas, zobacz Dostosowywanie modelu . W następujących przypadkach użycia należy użyć innego typu modelu:
  • Przewidywanie typu i położenia jednego lub więcej obiektów na obrazie (patrz Wykrywanie obiektów )
  • Przewidywanie kompozycji obrazu, na przykład temat względem tła (patrz Segmentacja )
Po uruchomieniu modelu początkowego na urządzeniu docelowym możesz eksperymentować z różnymi modelami, aby znaleźć optymalną równowagę między wydajnością, dokładnością i rozmiarem modelu.

Dostosuj model

Dostarczone wstępnie wyszkolone modele są przeszkolone w rozpoznawaniu 1000 klas obrazów. Pełną listę klas można znaleźć 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. Na przykład można ponownie wyszkolić model, aby rozróżniać różne gatunki drzew, mimo że w oryginalnych danych szkoleniowych nie ma drzew. Aby to zrobić, będziesz potrzebować zestawu obrazów szkoleniowych dla każdej z nowych etykiet, które chcesz wyszkolić. Dowiedz się, jak przeprowadzić uczenie transferowe w Recognize flowers with TensorFlow codelab lub z biblioteką Model Maker .

Testy wydajności

Wydajność modelu jest mierzona pod względem ilości czasu potrzebnego do wykonania przez model wnioskowania na danym elemencie sprzętu. Im krótszy czas, tym szybszy model. Wymagana wydajność zależy od aplikacji. Wydajność może być ważna w aplikacjach, takich jak wideo w czasie rzeczywistym, gdzie może być ważne, aby przeanalizować każdą klatkę przed narysowaniem następnej klatki (np. Wnioskowanie musi być szybsze niż 33 ms, aby wykonać wnioskowanie w czasie rzeczywistym na strumieniu wideo 30 kl./s) . Wydajność skwantyzowanych modeli MobileNet TensorFlow Lite wynosi od 3,7 ms do 80,3 ms. Numery testów wydajności są generowane za pomocą narzędzia do testów porównawczych .
Nazwa modelu Rozmiar modelu Urządzenie NNAPI procesor
Mobilenet_V1_1.0_224_quant 4,3 Mb Pixel 3 (Android 10) 6 ms 13 ms *
Pixel 4 (Android 10) 3,3 ms 5 ms *
iPhone XS (iOS 12.4.1) 11 ms **

* 4 używane nici.

** 2 wątki używane na iPhonie w celu uzyskania najlepszej wydajności.

Dokładność modelu

Dokładność jest mierzona pod kątem tego, jak często model poprawnie klasyfikuje obraz. Na przykład można oczekiwać, że model o określonej dokładności 60% będzie prawidłowo klasyfikował obraz średnio w 60% przypadków.

Lista hostowanych modeli zawiera statystyki dotyczące dokładności 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 poprawna etykieta pojawia się w 5 największych prawdopodobieństwach w wyniku modelu.

Top-5 skwantyzowanych modeli MobileNet TensorFlow Lite mieści się w zakresie 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 tworzenia aplikacji mobilnych (gdzie może mieć wpływ na rozmiary pobieranych aplikacji) lub podczas pracy ze sprzętem (gdzie dostępne miejsce może być ograniczone).

Rozmiary skwantyzowanych modeli MobileNet TensorFlow Lite mieszczą się w zakresie od 0,5 do 3,4 MB.

Dalsze lektury i zasoby

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