Klasyfikacja obrazu

Zadanie identyfikacji tego, co przedstawia obraz, nazywa się klasyfikacją obrazu . Model klasyfikacji obrazów jest trenowany do rozpoznawania różnych klas obrazów. Na przykład możesz wytrenować model, aby rozpoznawał zdjęcia przedstawiające trzy różne rodzaje zwierząt: króliki, chomiki i psy. TensorFlow Lite zapewnia zoptymalizowane, wstępnie wytrenowane 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 obrazów w systemie Android.

Zrzut ekranu przykładu Androida

Zaczynaj

Jeśli jesteś nowy w TensorFlow Lite i pracujesz z systemem Android lub iOS, zalecamy zapoznanie się z poniższymi 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 także zbudować własny, niestandardowy potok wnioskowania, korzystając z biblioteki obsługi TensorFlow Lite .

Poniższy przykład systemu Android ilustruje implementację obu metod jako odpowiednio lib_task_api i lib_support .

Zobacz przykład Androida

Zobacz przykład na iOS

Jeśli używasz platformy innej niż Android/iOS lub jeśli znasz już interfejsy API TensorFlow Lite , pobierz model początkowy i pliki pomocnicze (jeśli dotyczy).

Pobierz model startowy

Opis modelu

Jak to działa

Podczas uczenia do modelu klasyfikacji obrazów wprowadzane są obrazy i skojarzone z nimi etykiety . Każda etykieta to nazwa odrębnego pojęcia lub klasy, którą model nauczy się rozpoznawać.

Biorąc pod uwagę wystarczającą ilość danych szkoleniowych (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, w których został przeszkolony. Ten proces przewidywania nazywa się wnioskowaniem . Zwróć uwagę, że możesz również użyć uczenia transferu, aby zidentyfikować nowe klasy obrazów, korzystając z istniejącego modelu. Nauka transferu nie wymaga bardzo dużego zestawu danych szkoleniowych.

Gdy następnie podasz nowy obraz jako dane wejściowe do modelu, wyświetli on prawdopodobieństwa obrazu reprezentującego każdy rodzaj 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 na wyjściu odpowiada etykiecie w danych uczących. Powiązanie danych wyjściowych z trzema etykietami, na których model został przeszkolony, 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 typowy typ danych wyjściowych dla modeli z wieloma klasami (więcej informacji znajdziesz w Softmax ).

Niejednoznaczne wyniki

Ponieważ prawdopodobieństwa wyjściowe zawsze sumują się do 1, jeśli obraz nie zostanie z pewnością rozpoznany jako należący do którejkolwiek z klas, na których został wyszkolony model, możesz zobaczyć prawdopodobieństwo rozłożone na etykiety bez znacznie większej wartości żadnej z wartości.

Na przykład poniższe może 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 modelowej

TensorFlow Lite zapewnia różnorodne modele klasyfikacji obrazów, z których wszystkie są wytrenowane 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, musisz wziąć pod uwagę poszczególne architektury, a także niektóre kompromisy między różnymi modelami. Niektóre z tych kompromisów modelu są oparte na metrykach, takich jak wydajność, dokładność i rozmiar modelu. Na przykład możesz potrzebować szybszego modelu do budowy skanera kodów kreskowych, podczas gdy wolisz wolniejszy, dokładniejszy model do aplikacji do obrazowania medycznego. 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 dane wejściowe o wymiarach 224x224 pikseli. Wszystkie modele wymagają trzech kanałów kolorów na piksel (czerwony, zielony i niebieski). Modele skwantyzowane wymagają 1 bajtu na kanał, a modele zmiennoprzecinkowe wymagają 4 bajtów na kanał. Przykładowe kody 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ą; czyli przewidywanie, którą pojedynczą etykietę obraz najprawdopodobniej reprezentuje. 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 wytrenować model w celu rozpoznawania nowych klas, zobacz Dostosowywanie modelu . W następujących przypadkach użycia powinieneś użyć innego typu modelu:
  • Przewidywanie typu i położenia jednego lub więcej obiektów na obrazie (zobacz Wykrywanie obiektów )
  • Przewidywanie kompozycji obrazu, na przykład temat w porównaniu z tłem (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 wytrenowane modele są przeszkolone do rozpoznawania 1000 klas obrazów. Pełną listę klas można znaleźć w pliku etykiet w pliku zip modelu . Można również użyć uczenia transferu, aby ponownie nauczyć model rozpoznawania klas spoza oryginalnego zestawu. Na przykład możesz ponownie nauczyć model, aby rozróżniać różne gatunki drzew, mimo że oryginalne dane szkoleniowe nie zawierają żadnych drzew. Aby to zrobić, będziesz potrzebować zestawu obrazów szkoleniowych dla każdej z nowych etykiet, które chcesz trenować. Dowiedz się, jak przeprowadzić uczenie transferu za pomocą TFLite Model Maker lub w programie Rozpoznaj kwiaty z kodowaniem TensorFlow.

Testy wydajności

Wydajność modelu jest mierzona jako czas potrzebny na uruchomienie wnioskowania na danym sprzęcie. Im krótszy czas, tym szybszy model. Wymagana wydajność zależy od aplikacji. Wydajność może być ważna w przypadku aplikacji 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 przeprowadzić wnioskowanie w czasie rzeczywistym na strumieniu wideo 30 klatek na sekundę) . Wydajność skwantyzowanych modeli MobileNet TensorFlow Lite wynosi od 3,7 ms do 80,3 ms. Liczby 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_ilość 4,3 Mb Piksel 3 (Android 10) 6ms 13ms*
Piksel 4 (Android 10) 3,3 ms 5ms*
iPhone XS (iOS 12.4.1) 11ms**

* 4 wątki użyte.

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

Dokładność modelu

Dokładność mierzona jest tym, jak często model prawidłowo klasyfikuje obraz. Na przykład, można oczekiwać, że model z podaną dokładnością 60% poprawnie zaklasyfikuje obraz średnio w 60% przypadków.

Najistotniejsze wskaźniki dokładności to Top-1 i Top-5. Top-1 określa, jak często w danych wyjściowych modelu pojawia się prawidłowa etykieta jako etykieta o największym prawdopodobieństwie. Top-5 odnosi się do tego, jak często w danych wyjściowych modelu pojawia się prawidłowa etykieta w 5 najwyższych prawdopodobieństwach.

Dokładność Top-5 modeli TensorFlow Lite skwantyzowanych modeli MobileNet 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ępna pamięć może być ograniczona).

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

Dalsze czytanie i zasoby

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