Segmentacja obrazu to proces dzielenia obrazu cyfrowego na wiele segmentów (zestawów pikseli, znanych również jako obiekty 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 z dużą dokładnością utworzy maskę nad obiektami docelowymi.
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 segmentacji obrazów w zaledwie kilku wierszach kodu. Model można również zintegrować za pomocą interfejsu TensorFlow Lite Interpreter Java API .
Poniższy przykład systemu Android ilustruje 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 początkowego.
Opis modelu
DeepLab to najnowocześniejszy model głębokiego uczenia do semantycznej segmentacji obrazów, w którym 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ą. Jest to przeciwieństwo wykrywania obiektów , które wykrywa obiekty w prostokątnych obszarach, oraz klasyfikacji obrazu , która klasyfikuje cały obraz.
Obecna implementacja obejmuje następujące funkcje:
- DeepLabv1: Używamy arous convolution, aby wyraźnie kontrolować rozdzielczość, z jaką obliczane są odpowiedzi funkcji w ramach Deep Convolutional Neural Networks.
- DeepLabv2: Stosujemy arousalne łączenie piramid przestrzennych (ASPP), aby solidnie segmentować obiekty w wielu skalach za pomocą filtrów o wielu częstotliwościach próbkowania i efektywnych polach widzenia.
- DeepLabv3: Rozszerzamy moduł ASPP o funkcję na poziomie obrazu [5, 6], aby przechwytywać informacje o większym zasięgu. Uwzględniamy również parametry normalizacji wsadowej [7] w celu ułatwienia treningu. W szczególności stosujemy splot arous do wyodrębnienia cech wyjściowych przy różnych krokach wyjściowych podczas treningu i oceny, co skutecznie umożliwia trening 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, który udoskonala wyniki segmentacji, zwłaszcza wzdłuż granic obiektów. Co więcej, w tej strukturze koder-dekoder można dowolnie sterować rozdzielczością wyodrębnionych funkcji kodera przez nieustanną konwolucję w celu uzyskania kompromisu między precyzją a czasem pracy.
Testy wydajności
Wyniki 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 | Piksel 3 (Android 10) | 16ms | 37ms* |
Piksel 4 (Android 10) | 20ms | 23ms* | ||
iPhone XS (iOS 12.4.1) | 16ms | 25ms** |
* 4 wątki użyte.
** 2 wątki używane na iPhonie w celu uzyskania najlepszej wydajności.