Podział na segmenty

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 API TensorFlow Lite Interpreter Java .

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

Zobacz przykład Androida

Zobacz przykład na iOS

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.

Pobierz model startowy

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:

  1. DeepLabv1: Używamy arous convolution, aby wyraźnie kontrolować rozdzielczość, z jaką obliczane są odpowiedzi funkcji w ramach Deep Convolutional Neural Networks.
  2. 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.
  3. 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 astralny w celu 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.
  4. 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

Liczby testów wydajności są generowane za pomocą narzędzia opisanego tutaj .

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.

Dalsze czytanie i zasoby