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ś, co jest bardziej znaczące i łatwiejsze do analizy.

Poniższy obraz przedstawia dane wyjściowe modelu segmentacji obrazu w systemie Android. Model utworzy maskę na docelowych obiektach z dużą dokładnością.

Zaczynaj

Jeśli dopiero zaczynasz korzystać z TensorFlow Lite i pracujesz z systemem Android lub iOS, zalecamy zapoznanie się z poniższymi przykładowymi aplikacjami, które mogą pomóc Ci rozpocząć.

Możesz wykorzystać gotowy interfejs API z biblioteki zadań TensorFlow Lite, aby zintegrować modele segmentacji obrazu w zaledwie kilku wierszach kodu. Model można także zintegrować za pomocą interfejsu API języka Java TensorFlow Lite Interpreter .

Poniższy przykład Androida ilustruje implementację obu metod, odpowiednio, lib_task_api i lib_interpreter .

Zobacz przykład Androida

Zobacz przykład iOS

Jeśli korzystasz z platformy innej niż Android lub iOS lub znasz już API TensorFlow Lite , możesz pobrać nasz startowy model segmentacji obrazu.

Pobierz model startowy

Opis modelu

DeepLab to najnowocześniejszy model głębokiego uczenia się do segmentacji obrazu semantycznego, którego celem jest przypisanie etykiet semantycznych (np. Osoba, pies, kot) do każdego piksela obrazu wejściowego.

Jak to działa

Semantyczna segmentacja obrazu przewiduje, czy każdy piksel obrazu jest powiązany z określoną klasą. Kontrastuje to z wykrywaniem obiektów , które wykrywa obiekty w obszarach prostokątnych, oraz klasyfikacją obrazu , która klasyfikuje cały obraz.

Obecna implementacja obejmuje następujące funkcje:

  1. DeepLabv1: Używamy spektakularnego splotu, aby wyraźnie kontrolować rozdzielczość, z jaką obliczane są odpowiedzi funkcji w głębokich splotowych sieciach neuronowych.
  2. DeepLabv2: Używamy niesamowitego łączenia piramid przestrzennych (ASPP) do solidnej segmentacji obiektów w wielu skalach za pomocą filtrów o różnych 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. Aby ułatwić szkolenie, uwzględniliśmy także parametry normalizacji wsadowej [7]. W szczególności stosujemy okropny splot w celu wyodrębnienia cech wyjściowych przy różnych krokach wyjściowych podczas szkolenia i oceny, co skutecznie umożliwia szkolenie 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 w celu udoskonalenia wyników segmentacji, zwłaszcza wzdłuż granic obiektów. Co więcej, w tej strukturze kodera-dekodera można dowolnie kontrolować rozdzielczość wyodrębnionych funkcji kodera poprzez straszliwą splotkę w celu uzyskania kompromisu w zakresie precyzji i czasu działania.

Benchmarki wydajności

Wartości porównawcze 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) 16 ms 37ms*
Piksel 4 (Android 10) 20 ms 23 ms*
iPhone XS (iOS 12.4.1) 16 ms 25ms**

* Wykorzystano 4 wątki.

** 2 wątki używane w iPhonie w celu uzyskania najlepszego wyniku.

Dalsza lektura i zasoby