Segmentacja obrazu to proces dzielenia obrazu cyfrowego na wiele segmentów (zestawów pikseli, zwanych również obiektami obrazu). Celem segmentacji jest uproszczenie i / lub zmiana reprezentacji obrazu na coś bardziej znaczącego i łatwiejszego do analizy.
Poniższy obraz przedstawia dane wyjściowe modelu segmentacji obrazu w systemie Android. Model utworzy maskę na obiektach docelowych z dużą dokładnością.
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 wykorzystać gotowe API z biblioteki zadań TensorFlow Lite, aby zintegrować modele segmentacji obrazu w zaledwie kilku wierszach kodu. Model można również zintegrować za pomocą interfejsu API języka Java TensorFlow Lite Interpreter .
Poniższy przykład systemu Android demonstruje implementację obu metod jako odpowiednio lib_task_api i lib_interpreter .
Jeśli korzystasz z platformy innej niż Android lub iOS lub znasz już interfejsy API TensorFlow Lite , możesz pobrać nasz model segmentacji obrazu startowego.
Opis modelu
DeepLab to najnowocześniejszy model głębokiego uczenia się do semantycznej segmentacji obrazu, którego celem jest przypisanie etykiet semantycznych (np. Osoba, pies, kot) do każdego piksela w obrazie wejściowym.
Jak to działa
Semantyczna segmentacja obrazu przewiduje, czy każdy piksel obrazu jest powiązany z określoną klasą. W przeciwieństwie do wykrywania obiektów , które wykrywa obiekty w prostokątnych obszarach, oraz klasyfikacji obrazu , która klasyfikuje cały obraz.
Bieżąca implementacja obejmuje następujące funkcje:
- DeepLabv1: Używamy atrous convolution, aby jawnie kontrolować rozdzielczość, w której odpowiedzi funkcji są obliczane w głębokich konwolucyjnych sieciach neuronowych.
- DeepLabv2: Używamy atrous przestrzennej piramidy (ASPP) do solidnego segmentowania obiektów w wielu skalach z filtrami o wielu częstotliwościach próbkowania i efektywnych polach widzenia.
- DeepLabv3: Rozszerzyliśmy moduł ASPP o funkcję na poziomie obrazu [5, 6], aby przechwytywać informacje z większego zasięgu. Uwzględniamy również parametry normalizacji partii [7], aby ułatwić szkolenie. W szczególności stosujemy atrous convolution w celu wyodrębnienia cech wyjściowych przy różnych krokach wyjściowych podczas treningu i oceny, co skutecznie umożliwia trenowanie BN przy kroku wyjściowym = 16 i osiąga wysoką wydajność przy kroku wyjściowym = 8 podczas oceny.
- DeepLabv3 +: Rozszerzamy DeepLabv3 o prosty, ale skuteczny moduł dekodera w celu udoskonalenia wyników segmentacji, zwłaszcza wzdłuż granic obiektów. Co więcej, w tej strukturze kodera-dekodera można dowolnie sterować rozdzielczością wyodrębnionych funkcji kodera przez atrapy splotu w celu uzyskania kompromisu z precyzją i czasem działania.
Testy wydajności
Numery testów wydajności są generowane za pomocą opisanego tutaj narzędzia.
Nazwa modelu | Rozmiar modelu | Urządzenie | GPU | procesor |
---|---|---|---|---|
Deeplab v3 | 2,7 Mb | Pixel 3 (Android 10) | 16 ms | 37 ms * |
Pixel 4 (Android 10) | 20 ms | 23 ms * | ||
iPhone XS (iOS 12.4.1) | 16 ms | 25 ms ** |
* 4 używane nici.
** 2 wątki używane na iPhonie w celu uzyskania najlepszej wydajności.