Przewodnik po segmentacji semantycznej 2021

Węzeł źródłowy: 872271

Intro

Uczenie głębokie odniosło duży sukces podczas pracy z obrazami jako danymi i obecnie jest na etapie, na którym działa lepiej niż ludzie w wielu przypadkach użycia. Najważniejszymi problemami, którymi ludzie byli zainteresowani rozwiązaniem za pomocą widzenia komputerowego, są klasyfikacja obrazu, detekcja obiektów i segmentacja w kolejności rosnącej trudności.

W zwykłym, starym zadaniu klasyfikacji obrazu interesuje nas po prostu uzyskanie etykiet wszystkich obiektów obecnych na obrazie. W wykrywaniu obiektów idziemy o krok dalej i staramy się wiedzieć, jakie są wszystkie obiekty obecne na obrazie, gdzie znajdują się obiekty za pomocą obwiedni. Segmentacja obrazu przenosi ją na nowy poziom, próbując dokładnie określić dokładną granicę obiektów na obrazie.

Źródło http://cs224d.stanford.edu/index.html

W tym artykule omówimy koncepcję segmentacji obrazu, omówimy odpowiednie przypadki użycia, różne architektury sieci neuronowych zaangażowane w osiągnięcie wyników, metryki i zestawy danych do zbadania.

Co to jest segmentacja obrazu

Wiemy, że obraz to nic innego jak zbiór pikseli. Segmentacja obrazu to proces klasyfikowania każdego piksela w obrazie należącym do określonej klasy i dlatego można go traktować jako problem klasyfikacji na piksel. Istnieją dwa rodzaje technik segmentacji

Source http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf
  1. Segmentacja semantyczna : - Segmentacja semantyczna to proces klasyfikowania każdego piksela należącego do określonej etykiety. Nie różni się w różnych instancjach tego samego obiektu. Na przykład, jeśli na obrazie są 2 koty, segmentacja semantyczna nadaje taką samą etykietę wszystkim pikselom obu kotów
  2. Segmentacja instancji : - Segmentacja instancji różni się od segmentacji semantycznej tym, że nadaje unikalną etykietę każdemu wystąpieniu określonego obiektu na obrazie. Jak widać na powyższym obrazku, wszystkim 3 psom przypisano różne kolory, czyli różne etykiety. W przypadku segmentacji semantycznej wszystkim przypisano by ten sam kolor.

Więc teraz dojdziemy do punktu, w którym potrzebowalibyśmy tego rodzaju algorytmu

Przykłady zastosowania segmentacji obrazu

Rozpoznawanie pisma odręcznego : - Junjo et all zademonstrował, w jaki sposób segmentacja semantyczna jest wykorzystywana do wyodrębniania słów i wierszy z odręcznych dokumentów w ich Artykuł badawczy 2019 rozpoznawać odręczne znaki

Źródło

Tryb portretowy Google : - Istnieje wiele przypadków użycia, w których konieczne jest oddzielenie pierwszego planu od tła. Na przykład w trybie portretu Google możemy zobaczyć rozmyte tło, podczas gdy pierwszy plan pozostaje niezmieniony, aby dać fajny efekt

Źródło: - https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

Historie w YouTube : - Niedawno firma Google udostępniła funkcję historie YouTube dla twórców treści, aby pokazać różne tła podczas tworzenia historii.

Źródło: - https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

Wirtualny makijaż : - Zastosowanie wirtualnej szminki jest teraz możliwe dzięki segmentacji obrazu

Źródło: - https://www.theverge.com/2017/3/16/14946086/sephora-virtual-assistant-ios-app-update-ar-makeup

4. wirtualne przymierzanie : - Ciekawą funkcją, która dostępna była w sklepach przy użyciu specjalistycznego sprzętu tworzącego model 3d, jest wirtualne przymierzanie ubrań. Ale dzięki głębokiemu uczeniu się i segmentacji obrazu to samo można uzyskać za pomocą tylko obrazu 2D

Źródło: - https://arxiv.org/pdf/1807.07688.pdf

Wizualne wyszukiwanie obrazów : - Idea segmentacji ubrań jest również wykorzystywana w algorytmach wyszukiwania obrazów w eCommerce. Na przykład Pinterest / Amazon pozwala przesłać dowolne zdjęcie i uzyskać podobne, podobnie wyglądające produkty, wykonując wyszukiwanie obrazów w oparciu o segmentację części materiału

Źródło: - https://github.com/paucarre/tiefvision

Samochody samojezdne : - Samojeżdżące samochody wymagają pełnego zrozumienia otoczenia z dokładnością do jednego piksela. W związku z tym segmentacja obrazu służy do identyfikacji pasów ruchu i innych niezbędnych informacji

Źródło: - https://medium.com/intro-to-artificial-intelligence/semantic-segmentation-udaitys-self-driving-car-engineer-nanodegree-c01eb6eaf9d

Nanonets pomaga firmom z listy Fortune 500 zapewnić lepszą obsługę klientów na dużą skalę przy użyciu segmentacji semantycznej.

Metody i techniki

Przed nadejściem głębokiego uczenia się do rozwiązania problemu segmentacji obrazu stosowano klasyczne techniki uczenia maszynowego, takie jak SVM, Random Forest, K-mean Clustering. Jednak podobnie jak w przypadku większości stwierdzeń problemowych związanych z obrazem, głębokie uczenie się działało kompleksowo lepiej niż istniejące techniki i stało się obecnie normą w przypadku segmentacji semantycznej. Przyjrzyjmy się technikom, które są używane do rozwiązania problemu

Sieć w pełni splotowa

Ogólna architektura CNN składa się z kilku warstw konwolucyjnych i łączących, po których na końcu znajduje się kilka w pełni połączonych warstw. Artykuł Fully Convolutional Network opublikowany w 2014 roku dowodzi, że ostatnia w pełni połączona warstwa może być traktowana jako wykonująca splot 1 × 1, który obejmuje cały region.

Źródło: - https://arxiv.org/abs/1411.4038

W związku z tym końcowe gęste warstwy można zastąpić warstwą splotu, uzyskując ten sam wynik. Ale teraz zaletą takiego rozwiązania jest to, że rozmiar danych wejściowych nie musi już być ustalany. W przypadku warstw gęstych wielkość danych wejściowych jest ograniczona, a zatem, gdy trzeba zapewnić dane wejściowe o innej wielkości, należy zmienić ich rozmiar. Ale zastępując gęstą warstwę splotem, to ograniczenie nie istnieje.

Również, gdy jako dane wejściowe zostanie podany większy rozmiar obrazu, wygenerowane wyjście będzie mapą funkcji, a nie tylko wyjściem klasy, jak w przypadku normalnego obrazu wejściowego. Również obserwowane zachowanie ostatecznej mapy cech przedstawia mapę cieplną wymaganej klasy, tj. Położenie obiektu jest podświetlone na mapie obiektów. Ponieważ wynik mapy cech jest mapą cieplną wymaganego obiektu, jest to ważna informacja dla naszego przypadku użycia segmentacji.

Ponieważ mapa cech uzyskana w warstwie wyjściowej jest próbkowana w dół ze względu na zestaw wykonanych zwojów, chcielibyśmy ją upsamplować za pomocą techniki interpolacji. Próbkowanie dwuliniowe w górę działa, ale artykuł proponuje użycie wyuczonego próbkowania z dekonwolucją, które może nawet nauczyć się próbkowania nieliniowego w górę.

Część sieci z próbkowaniem w dół jest nazywana koderem, a część z próbkowaniem w górę nazywana jest dekoderem. Jest to wzorzec, który zobaczymy w wielu architekturach, tj. Zmniejszanie rozmiaru za pomocą kodera, a następnie próbkowanie w górę za pomocą dekodera. W idealnym świecie nie chcielibyśmy zmniejszać próbki przy użyciu pulowania i utrzymywać ten sam rozmiar przez cały czas, ale doprowadziłoby to do ogromnej liczby parametrów i byłoby niewykonalne obliczeniowo.

Źródło: - https://arxiv.org/abs/1411.4038

Chociaż uzyskane wyniki były przyzwoite, zaobserwowana produkcja jest szorstka i nie jest płynna. Powodem tego jest utrata informacji w ostatniej warstwie cech z powodu 32-krotnego zmniejszania próbkowania przy użyciu warstw splotu. Teraz bardzo trudno sieci zrobić upsampling do 32x przy użyciu tej małej ilości informacji. Ta architektura nosi nazwę FCN-32

Aby rozwiązać ten problem, w artykule zaproponowano dwie inne architektury: FCN-2, FCN-16. W FCN-8 informacje z poprzedniej warstwy pulowania są wykorzystywane wraz z ostateczną mapą cech, dlatego teraz zadaniem sieci jest nauczenie się próbkowania w górę 16x, co jest lepsze w porównaniu z FCN-16. FCN-32 próbuje uczynić to jeszcze lepszym, włączając informacje z jeszcze jednej poprzedniej warstwy pulowania.

Unet

U-net buduje się na górze w pełni konwolucyjnej sieci. Został zbudowany do celów medycznych, aby wykryć guzy w płucach lub mózgu. Składa się również z kodera, który pobiera próbki obrazu wejściowego do mapy cech oraz dekodera, który próbkuje w górę mapę cech do rozmiaru obrazu wejściowego przy użyciu wyuczonych warstw dekonwolucji.

Źródło: - https://arxiv.org/abs/1505.04597

Głównym wkładem architektury U-Net są połączenia skrótowe. Widzieliśmy powyżej w FCN, że odkąd próbowaliśmy pobrać obraz jako część kodera, straciliśmy wiele informacji, których nie można łatwo odzyskać w części kodera. FCN próbuje rozwiązać ten problem, pobierając informacje z grupowania warstw przed ostateczną warstwą cech.

U-Net proponuje nowe podejście do rozwiązania tego problemu utraty informacji. Proponuje wysyłanie informacji do każdej warstwy próbkowania w górę w dekoderze z odpowiadającej warstwy próbkowania w dół w koderze, jak widać na powyższym rysunku, przechwytując w ten sposób dokładniejsze informacje, jednocześnie utrzymując niskie obliczenia. Ponieważ warstwy na początku kodera miałyby więcej informacji, wzmocniłyby operację próbkowania w górę dekodera, dostarczając drobne szczegóły odpowiadające obrazom wejściowym, poprawiając w ten sposób znacznie wyniki. W artykule zasugerowano również użycie nowej funkcji straty, którą omówimy poniżej.

DeepLab

Firma Deeplab z grupy naukowców z Google zaproponowała wiele technik poprawiających istniejące wyniki i uzyskiwania dokładniejszych wyników przy niższych kosztach obliczeniowych. Trzy główne ulepszenia sugerowane w ramach badań to

1) Okropne zwoje
2) Atrous przestrzenne łączenie piramidalne
3) Wykorzystanie warunkowych pól losowych do poprawy końcowego wyniku
Porozmawiajmy o tym wszystkim

Arous Convolution

Jednym z głównych problemów związanych z podejściem FCN jest nadmierna redukcja zatrudnienia spowodowana kolejnymi operacjami łączenia. Z powodu serii łączenia obraz wejściowy jest próbkowany w dół o 32x, który jest ponownie próbkowany w górę, aby uzyskać wynik segmentacji. Próbkowanie w dół o 32x powoduje utratę informacji, co jest bardzo istotne dla uzyskania dobrego wyniku w zadaniu segmentacji. Również dekonwolucja do 32-krotnego zwiększenia próbki jest operacją kosztowną dla obliczeń i pamięci, ponieważ istnieją dodatkowe parametry zaangażowane w tworzenie wyuczonego próbkowania.

W artykule zaproponowano użycie splotu Atrousa lub splotu dziurawego lub splotu rozszerzonego, co pomaga w zrozumieniu dużego kontekstu przy użyciu tej samej liczby parametrów.

Source:- https://www.mdpi.com/1424-8220/19/24/5361/htm

Splot rozszerzony działa poprzez zwiększenie rozmiaru filtra poprzez dodanie zer (zwanych dziurami), aby wypełnić lukę między parametrami. Liczba dziur / zer wypełnionych między parametrami filtra nazywana jest stopniem dylatacji. Kiedy stopa jest równa 1, jest to nic innego jak zwykły splot. Gdy szybkość jest równa 2, jedno zero jest wstawiane między każdy inny parametr, dzięki czemu filtr wygląda jak splot 5 × 5. Teraz ma możliwość uzyskania kontekstu splotu 5 × 5, mając parametry splotu 3 × 3. Podobnie dla stopy 3 pole receptywne wynosi 7 × 7.

W Deeplab ostatnie warstwy puli są zastępowane tak, aby miały krok 1 zamiast 2, dzięki czemu częstotliwość próbkowania w dół wynosiła tylko 8x. Następnie stosuje się serię okropnych zwojów, aby uchwycić szerszy kontekst. W celu uczenia wyjście oznaczone jako maska ​​jest próbkowane w dół 8x, aby porównać każdy piksel. Do wnioskowania stosuje się próbkowanie dwuliniowe w górę w celu uzyskania danych wyjściowych o tym samym rozmiarze, co daje wystarczająco przyzwoite wyniki przy niższych kosztach obliczeniowych / pamięci, ponieważ próbkowanie dwuliniowe w górę nie wymaga żadnych parametrów, w przeciwieństwie do dekonwolucji dla próbkowania w górę.

ASPP

Spatial Pyramidal Pooling to koncepcja wprowadzona w SPPNet w celu przechwytywania wieloskalowych informacji z mapy obiektów. Przed wprowadzeniem obrazów wejściowych SPP w różnych rozdzielczościach są dostarczane, a obliczone mapy cech są używane razem w celu uzyskania informacji w wielu skalach, ale wymaga to więcej obliczeń i czasu. Dzięki Spatial Pyramidal Pooling informacje w wielu skalach mogą być przechwytywane na jednym obrazie wejściowym.

Źródło: - http://kaiminghe.com/eccv14sppnet/index.html

Z modułem SPP sieć wytwarza 3 wyjścia o wymiarach 1 × 1 (czyli GAP), 2 × 2 i 4 × 4. Wartości te są łączone przez konwersję do wektora 1d, w ten sposób przechwytując informacje w wielu skalach. Kolejną zaletą korzystania z SPP jest możliwość dostarczania obrazów wejściowych o dowolnym rozmiarze.

ASPP przyjmuje koncepcję łączenia informacji z różnych skal i stosuje ją do splotów Atrousa. Wejście jest splecione z różnymi współczynnikami dylatacji, a ich wyjścia są połączone razem.

Źródło: - http://liangchiehchen.com/projects/DeepLab.html

Jak widać, wejście jest splecione z filtrami 3 × 3 o współczynnikach dylatacji 6, 12, 18 i 24, a wyjścia są łączone razem, ponieważ mają ten sam rozmiar. Wyjście splotu 1 × 1 jest również dodawane do wyjścia z bezpiecznikiem. Aby zapewnić również informacje globalne, dane wyjściowe GAP są również dodawane powyżej po próbkowaniu. Wyjście z bezpiecznikiem 3 × 3 zróżnicowanych wyjść rozszerzonych, 1 × 1 i wyjście GAP jest przepuszczane przez splot 1 × 1, aby uzyskać wymaganą liczbę kanałów.

Ponieważ wymagany obraz do segmentacji może mieć dowolną wielkość na wejściu, wieloskalowe informacje z ASPP pomagają w poprawie wyników.

Poprawa wydajności dzięki CRF

Pooling to operacja, która pomaga w zmniejszeniu liczby parametrów w sieci neuronowej, ale jednocześnie niesie ze sobą właściwość niezmienności. Niezmienność to jakość sieci neuronowej, na którą nie mają wpływu niewielkie translacje danych wejściowych. Ze względu na tę właściwość uzyskaną przy łączeniu danych wyjściowych segmentacji uzyskanych przez sieć neuronową jest zgrubna, a granice nie są konkretnie określone.

Źródło: - http://liangchiehchen.com/projects/DeepLab.html

Aby sobie z tym poradzić, w artykule zaproponowano użycie graficznego modelu CRF. Warunkowe pole losowe obsługuje etap przetwarzania końcowego i próbuje poprawić wyniki uzyskane w celu zdefiniowania granic kształtowania. Działa poprzez klasyfikację piksela nie tylko na podstawie jego etykiety, ale także na podstawie innych etykiet pikseli. Jak widać na powyższym rysunku, zgrubna granica wytworzona przez sieć neuronową staje się bardziej wyrafinowana po przejściu przez CRF.

Deeplab-v3 wprowadził normalizację wsadową i sugerował współczynnik dylatacji pomnożony przez (1,2,4, XNUMX, XNUMX) wewnątrz każdej warstwy w bloku Resnet. W ramach tego artykułu zaproponowano również dodanie funkcji na poziomie obrazu do modułu ASPP, o którym mowa w powyższej dyskusji na temat ASPP

Źródło: - https://arxiv.org/pdf/1706.05587.pdf

Deeplab-v3 + zasugerował posiadanie dekodera zamiast zwykłego dwuliniowego próbkowania w górę 16x. Dekoder bierze wskazówkę od dekodera używanego przez architektury takie jak U-Net, które pobierają informacje z warstw kodera w celu poprawy wyników. Wyjście kodera jest próbkowane w górę 4x przy użyciu bilinearnego próbkowania w górę i łączone z funkcjami z kodera, który jest ponownie próbkowany w górę 4x po wykonaniu splotu 3x3. Takie podejście daje lepsze wyniki niż bezpośrednie próbkowanie w górę 16x. Proponuje się również użycie zmodyfikowanej architektury Xception zamiast Resnet jako części kodera, a splot z separacją wgłębną jest teraz używany obok zwojów Atrous w celu zmniejszenia liczby obliczeń.

Globalna sieć konwolucji

Źródło: - https://arxiv.org/pdf/1703.02719.pdf

Segmentacja semantyczna obejmuje jednoczesne wykonywanie dwóch zadań

i) Klasyfikacja
ii) Lokalizacja

Sieci klasyfikacyjne są tworzone w taki sposób, aby były niezmienne względem translacji i rotacji, przez co nie mają znaczenia dla informacji o lokalizacji, podczas gdy lokalizacja wymaga uzyskania dokładnych szczegółów dotyczących lokalizacji. Tak więc te dwa zadania są ze swej natury sprzeczne. Większość algorytmów segmentacji przywiązuje większą wagę do lokalizacji, tj. Jest to druga na powyższym rysunku, przez co traci z oczu kontekst globalny. W pracy autorka proponuje sposób nadania rangi również zadaniu klasyfikacyjnemu, nie tracąc przy tym informacji lokalizacyjnych

Źródło: - https://arxiv.org/pdf/1703.02719.pdf

Autor proponuje, aby to osiągnąć, wykorzystując duże jądra jako część sieci, umożliwiając tym samym gęste połączenia, a tym samym więcej informacji. Osiąga się to za pomocą bloku GCN, jak widać na powyższym rysunku. Blok GCN można traktować jako filtr splotu akxk, gdzie k może być liczbą większą niż 3. Aby zmniejszyć liczbę parametrów, filtr akxk jest dalej dzielony na bloki 1 xk i kx 1, kx1 i 1xk, które są następnie sumowane. W ten sposób zwiększając wartość k, wychwytywany jest szerszy kontekst.

Ponadto autor proponuje blok Boundary Refinement, który jest podobny do bloku resztkowego widzianego w Resnet, składającego się z połączenia skrótowego i połączenia szczątkowego, które są sumowane w celu uzyskania wyniku. Zaobserwowano, że posiadanie bloku Boundary Refinement skutkowało poprawą wyników na granicy segmentacji.

Wyniki pokazały, że blok GCN poprawił dokładność klasyfikacji pikseli bliżej środka obiektu, wskazując na poprawę wynikającą z przechwytywania kontekstu dalekiego zasięgu, podczas gdy blok Boundary Refinement pomógł w poprawie dokładności pikseli bliżej granicy.

Zobacz więcej niż raz - KSAC dla segmentacji semantycznej

Rodzina Deeplab wykorzystuje ASPP, aby wiele pól receptywnych przechwytywało informacje przy użyciu różnych atrycznych szybkości splotu. Chociaż ASPP okazał się znacznie przydatny w poprawie segmentacji wyników, istnieją pewne nieodłączne problemy spowodowane architekturą. Nie ma informacji współdzielonych między różnymi równoległymi warstwami w ASPP, co wpływa na moc generalizacji jąder w każdej warstwie. Również, ponieważ każda warstwa obsługuje różne zestawy próbek uczących (mniejsze obiekty do mniejszej szybkości atrous i większe obiekty do większych szybkości atrous), ilość danych dla każdej warstwy równoległej byłaby mniejsza, tym samym wpływając na ogólną możliwość uogólniania. Również liczba parametrów w sieci rośnie liniowo wraz z liczbą parametrów, co może prowadzić do przeuczenia.

Źródło: - https://arxiv.org/pdf/1908.09443.pdf

Aby poradzić sobie z tymi wszystkimi kwestiami, autor proponuje nowatorską strukturę sieci o nazwie Kernel-Sharing Atrous Convolution (KSAC). Jak widać na powyższym rysunku, zamiast posiadania innego jądra dla każdej warstwy równoległej ASPP, jedno jądro jest współdzielone, co poprawia możliwości generalizacji sieci. Używając KSAC zamiast ASPP, 62% parametrów zostaje zachowanych przy zastosowaniu współczynników dylatacji 6,12 i 18.

Kolejną zaletą stosowania struktury KSAC jest to, że liczba parametrów jest niezależna od liczby stosowanych współczynników dylatacji. W ten sposób możemy dodać jak najwięcej stawek bez zwiększania rozmiaru modelu. ASPP daje najlepsze wyniki przy stawkach 6,12,18, ale dokładność spada z 6,12,18,24 wskazując na możliwe nadmierne dopasowanie. Jednak dokładność KSAC nadal znacznie się poprawia, co wskazuje na zwiększoną zdolność do generalizacji.

Ta technika współdzielenia jądra może być również postrzegana jako rozszerzenie przestrzeni funkcji, ponieważ to samo jądro jest stosowane w wielu szybkościach. Podobnie do tego, jak ulepszanie danych wejściowych daje lepsze wyniki, rozszerzanie funkcji wykonywane w sieci powinno pomóc poprawić możliwości reprezentacji sieci.

Segmentacja wideo

W przypadkach użycia, takich jak samochody samojezdne, robotyka itp., Istnieje potrzeba segmentacji w czasie rzeczywistym na obserwowanym wideo. Architektury omówione do tej pory są w zasadzie zaprojektowane z myślą o dokładności, a nie szybkości. Więc jeśli zostaną zastosowane na klatkę na wideo, wynik będzie bardzo niski.

Ogólnie rzecz biorąc, w filmie występuje wiele nakładania się scen w kolejnych klatkach, co można wykorzystać do poprawy wyników i szybkości, które nie pojawią się na obrazie, jeśli analiza jest wykonywana na podstawie klatki. Korzystając z tych wskazówek, omówmy architektury zaprojektowane specjalnie dla wideo

STFCN

Spatio-Temporal FCN proponuje wykorzystanie FCN wraz z LSTM do segmentacji wideo. Wiemy już, jak można wykorzystać FCN do wyodrębnienia funkcji do segmentacji obrazu. LSTM to rodzaj sieci neuronowych, które mogą przechwytywać sekwencyjne informacje w czasie. STFCN łączy moc FCN z LSTM, aby uchwycić zarówno informacje przestrzenne, jak i informacje czasowe

Źródło: - https://arxiv.org/abs/1608.05971

Jak widać na powyższym rysunku, STFCN składa się z FCN, modułu przestrzenno-czasowego, po którym następuje dekonwolucja. Mapa cech utworzona przez FCN jest wysyłana do modułu przestrzenno-czasowego, który również ma dane wejściowe z modułu poprzedniej klatki. Moduł oparty na obu tych wejściach przechwytuje informacje czasowe oprócz informacji przestrzennych i przesyła je, które są próbkowane do pierwotnego rozmiaru obrazu przy użyciu dekonwolucji, podobnie jak w FCN

Ponieważ zarówno FCN, jak i LSTM współpracują ze sobą w ramach STFCN, sieć nadaje się do trenowania od końca do końca i przewyższa podejścia oparte na segmentacji pojedynczej ramki. Istnieją podobne podejścia, w których LSTM jest zastępowane przez GRU, ale koncepcja jest taka sama, aby uchwycić zarówno informacje przestrzenne, jak i czasowe

Semantyczne CNN wideo dzięki wypaczeniu reprezentacji

W artykule zaproponowano użycie przepływu optycznego przez sąsiednie ramki jako dodatkowe dane wejściowe w celu poprawy wyników segmentacji

Źródło: - https://arxiv.org/abs/1708.03088

Sugerowane podejście można zastosować w dowolnej standardowej architekturze jako wtyczkę. Kluczowym elementem, o który chodzi, jest moduł NetWarp. Aby obliczyć mapę segmentacji, obliczany jest przepływ optyczny między bieżącą ramką a poprzednią ramką, tj. Ft i przepuszczany jest przez FlowCNN w celu uzyskania Λ (Ft). Ten proces nazywa się transformacją przepływu. Wartość ta jest przepuszczana przez moduł warp, który pobiera również jako dane wejściowe mapę cech warstwy pośredniej obliczoną przez przejście przez sieć. Daje to wypaczoną mapę obiektów, która jest następnie łączona z pośrednią mapą obiektów bieżącej warstwy, a cała sieć jest szkolona od końca do końca. Ta architektura osiągnęła wyniki SOTA w zestawach danych wzorcowych wideo CamVid i Cityscapes.

Mechaniczne Convnets do semantycznej segmentacji wideo

W artykule zaproponowano poprawę szybkości wykonywania sieci neuronowej do zadań segmentacji wideo poprzez wykorzystanie faktu, że informacje semantyczne w filmie zmieniają się powoli w porównaniu z informacjami na poziomie pikseli. Tak więc informacje w warstwach końcowych zmieniają się znacznie wolniej w porównaniu z warstwami początkowymi. Artykuł sugeruje różne czasy

Źródło: - https://arxiv.org/abs/1608.03609

Powyższy rysunek przedstawia porównanie szybkości zmian dla puli warstwy środkowej 4 i warstwy głębokiej fc7. Po lewej stronie widzimy, że ponieważ jest wiele zmian w ramkach, obie warstwy pokazują zmianę, ale zmiana dla puli4 jest wyższa. Po prawej stronie widzimy, że nie ma dużej zmiany w poszczególnych klatkach. Stąd pula 4 wykazuje marginalne zmiany, podczas gdy fc7 wykazuje prawie zerową zmianę.

Badania wykorzystują tę koncepcję i sugerują, że w przypadkach, w których nie ma dużej zmiany w ramach ramek, nie ma potrzeby ponownego obliczania funkcji / wyników i można użyć buforowanych wartości z poprzedniej ramki. Ponieważ tempo zmian zależy od warstw, można ustawić różne zegary dla różnych zestawów warstw. Gdy zegar tyka, obliczane są nowe dane wyjściowe, w przeciwnym razie używane są wyniki zapisane w pamięci podręcznej. Szybkość tyknięć zegara może być statycznie ustalona lub dynamicznie wyuczona

Źródło: - https://arxiv.org/abs/1608.03609

Segmentacja semantyczna wideo o niskim opóźnieniu

Ten artykuł jest ulepszeniem powyższej dyskusji poprzez adaptacyjne wybieranie ramek w celu obliczenia mapy segmentacji lub użycie wyniku z pamięci podręcznej zamiast używania stałego licznika czasu lub heurystyki.

Źródło: - https://arxiv.org/abs/1804.00389

W artykule zaproponowano podział sieci na 2 części, funkcje niskiego poziomu i funkcje wysokiego poziomu. Koszt obliczania funkcji niskiego poziomu w sieci jest znacznie niższy w porównaniu z funkcjami wyższymi. Badania sugerują wykorzystanie cech sieci niskiego poziomu jako wskaźnika zmiany mapy segmentacji. W swoich obserwacjach stwierdzili silną korelację między zmianą cech niskiego poziomu a zmianą mapy segmentacji. Aby więc zrozumieć, czy istnieje potrzeba obliczenia, czy trzeba obliczyć wyższe cechy, znajduje się niższa różnica cech w 2 klatkach i jest porównywana, jeśli przekracza określony próg. Cały ten proces jest zautomatyzowany przez małą sieć neuronową, której zadaniem jest przejęcie niższych cech dwóch ramek i przewidywanie, czy należy obliczyć wyższe cechy, czy nie. Ponieważ decyzja sieci jest oparta na ramkach wejściowych, podjęta decyzja jest dynamiczna w porównaniu z powyższym podejściem.

Segmentacja chmur punktów

Dane pochodzące z czujnika, takiego jak lidar, są przechowywane w formacie zwanym chmurą punktów. Chmura punktów to nic innego jak zbiór nieuporządkowanych zestawów punktów danych 3D (lub dowolnego wymiaru). Jest to rzadka reprezentacja sceny w 3D i CNN nie może być bezpośrednio zastosowane w takim przypadku. Również każda architektura zaprojektowana do obsługi chmur punktów powinna brać pod uwagę, że jest to zbiór nieuporządkowany, a zatem może mieć wiele możliwych permutacji. Zatem sieć powinna być niezmienna przez permutację. Również punkty zdefiniowane w chmurze punktów można opisać odległością między nimi. Tak więc bliższe punkty generalnie zawierają przydatne informacje, które są przydatne w zadaniach segmentacji

Sieć punktów

PointNet to ważny artykuł w historii badań nad chmurami punktów wykorzystującymi głębokie uczenie się do rozwiązywania zadań klasyfikacji i segmentacji. Przyjrzyjmy się architekturze Pointnet

Źródło: - https://arxiv.org/abs/1612.00593

Dane wejściowe sieci dla n punktów to macierz nx 3. Macierz nx 3 jest odwzorowywana na nx 64 przy użyciu współdzielonej warstwy wielu perceptronów (w pełni połączonej sieci), która jest następnie mapowana na nx 64, a następnie na nx 128 i nx 1024. Do uzyskania wektora 1024, który jest konwertowany do k wyjścia, przechodząc przez MLP o rozmiarach 512, 256 i k. W końcu wyniki klasy k są tworzone podobnie jak w każdej sieci klasyfikacyjnej.

Klasyfikacja dotyczy tylko cech globalnych, ale segmentacja wymaga również funkcji lokalnych. Zatem funkcje lokalne z warstwy pośredniej na nx 64 są łączone z funkcjami globalnymi, aby uzyskać macierz niepokoju 1088, która jest wysyłana przez mlp 512 i 256, aby dostać się do nx 256, a następnie przez MLP 128 im, aby dać m klas wyjściowych dla każdego punktu w chmurze punktów.

Również sieć obejmuje transformację wejściową i transformację cech jako część sieci, której zadaniem nie jest zmiana kształtu danych wejściowych, ale dodanie niezmienności do transformacji afinicznych, tj. Translacji, rotacji itp.

A-CNN

Źródło: - https://arxiv.org/abs/1904.08017

A-CNN proponuje użycie zwojów pierścieniowych do przechwytywania informacji przestrzennych. Wiemy z CNN, że operacje konwolucji wychwytują lokalne informacje, które są niezbędne do zrozumienia obrazu. A-CNN opracował nowy splot zwany splotem pierścieniowym, który jest stosowany do punktów sąsiadujących w chmurze punktów.

Architektura przyjmuje jako dane wejściowe nx 3 punkty i znajduje dla nich wartości normalne, które są używane do porządkowania punktów. Podpróbka punktów jest pobierana za pomocą algorytmu FPS, co daje ni x 3 punkty. Na tych pierścieniowych splotach zastosowano powiększenie do 128 wymiarów. Splot pierścieniowy jest wykonywany w punktach sąsiedztwa, które są określane za pomocą algorytmu KNN.

Kolejny zestaw powyższych operacji jest wykonywany w celu zwiększenia wymiarów do 256. Następnie stosuje się mlp w celu zmiany wymiarów na 1024 i puli, aby uzyskać 1024 globalny wektor podobny do chmury punktów. Ta cała część jest uważana za koder. W celu klasyfikacji globalne dane wyjściowe kodera są przesyłane przez mlp w celu uzyskania wyników klasy c. W przypadku zadania segmentacji zarówno funkcje globalne, jak i lokalne są uważane za podobne do PointCNN, a następnie są przekazywane przez MLP w celu uzyskania wyników klasy m dla każdego punktu.

Metryka

Omówmy metryki, które są zwykle używane do zrozumienia i oceny wyników modelu.

Dokładność pikseli

Dokładność pikseli to najbardziej podstawowa miara, której można użyć do sprawdzenia wyników. Dokładność uzyskuje się, biorąc stosunek prawidłowo sklasyfikowanych pikseli do łącznej liczby pikseli

Dokładność = (TP + TN) / (TP + TN + FP + FN)

Główną wadą stosowania takiej techniki jest to, że wynik może wyglądać dobrze, jeśli jedna klasa pokonuje drugą. Załóżmy na przykład, że klasa tła obejmuje 90% obrazu wejściowego, możemy uzyskać dokładność 90%, po prostu klasyfikując każdy piksel jako tło

Przecięcie nad Unią

IOU definiuje się jako stosunek przecięcia prawdy podstawowej i przewidywanych wyników segmentacji do ich sumy. Jeśli obliczamy dla wielu klas, obliczane jest IOU każdej klasy i brana jest ich średnia. Jest to lepsza miara w porównaniu z dokładnością pikseli, ponieważ jeśli każdy piksel jest podany jako tło w danych wejściowych klasy 2, wartość IOU wynosi (90/100 + 0/100) / 2, czyli 45% IOU, co daje lepszą reprezentację w porównaniu z 90 % precyzja.

Źródło: - https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection

IOU ważone częstotliwością

Jest to rozszerzenie w stosunku do średniej IOU, o którym mówiliśmy i jest używane do zwalczania nierównowagi klas. Jeśli jedna klasa dominuje w większości obrazów w zbiorze danych, na przykład w tle, należy ją zważyć w porównaniu z innymi klasami. Dlatego zamiast brać średnią ze wszystkich wyników klas, przyjmuje się średnią ważoną na podstawie częstotliwości obszaru klasy w zbiorze danych.

Wynik F1

Metryka popularnie używana w klasyfikacji F1 Score może być również używana do segmentacji zadań, a także do radzenia sobie z nierównowagą klas.

Źródło: - https://en.wikipedia.org/wiki/F1_score

Średnia precyzja

Obszar pod krzywą Precyzja - Przypomnienie dla wybranego progu średniej IOU dla różnych klas jest używany do walidacji wyników.

Funkcje strat

Funkcja strat służy do kierowania siecią neuronową w kierunku optymalizacji. Omówmy kilka popularnych funkcji straty dla zadania segmentacji semantycznej.

Utrata krzyżowej entropii

Prosta średnia utraty klasyfikacji krzyżowej entropii dla każdego piksela obrazu może być używana jako ogólna funkcja. Ale to znowu cierpi z powodu nierównowagi klas, którą FCN proponuje skorygować za pomocą wag klas

UNet próbuje to poprawić, nadając większą wagę pikselom w pobliżu granicy, które są częścią granicy, w porównaniu z pikselami wewnętrznymi, ponieważ powoduje to, że sieć koncentruje się bardziej na identyfikowaniu granic i nie daje zgrubnego wyniku.

Ogniskowa utrata

Tłumienie ogniskowej zostało zaprojektowane tak, aby sieć skupiała się na trudnych przykładach, dając większy wiek wagi, a także aby poradzić sobie z ekstremalną nierównowagą klas obserwowaną w jednostopniowych detektorach obiektów. To samo można zastosować również w zadaniach segmentacji semantycznej

Utrata kości

Funkcja kości to nic innego jak wynik F1. Ta funkcja straty bezpośrednio próbuje zoptymalizować wynik F1. Podobnie bezpośredni wynik IOU może być również użyty do uruchomienia optymalizacji

Strata Tverskiego

Jest to wariant utraty kości, który nadaje różny wiek FN i FP

Odległość Hausdorffa

Jest to technika używana do pomiaru podobieństwa między granicami prawdy podstawowej a przewidywaniami. Oblicza się ją, określając maksymalną odległość od dowolnego punktu w jednej granicy do najbliższego punktu w drugiej. Bezpośrednia redukcja funkcji utraty granic jest ostatnim trendem i wykazano, że daje lepsze wyniki, zwłaszcza w przypadkach użycia, takich jak segmentacja obrazów medycznych, w których identyfikacja dokładnej granicy odgrywa kluczową rolę.

Zaletą stosowania utraty granicy w porównaniu do straty opartej na regionie, takiej jak IOU lub Dice Loss, jest to, że nie ma na nią wpływu nierównowaga klas, ponieważ cały region nie jest brany pod uwagę pod kątem optymalizacji, tylko granica jest brana pod uwagę.

Źródło https://en.wikipedia.org/wiki/Hausdorff_distance

Dwa rozważane tutaj terminy dotyczą dwóch granic, tj. Prawdy o podłożu i prognozy wyjściowej.

EtykietaMe :-

Narzędzie do adnotacji obrazu napisane w Pythonie.
Obsługuje adnotacje wielokątów.
Open Source i darmowe.
Działa na Windows, Mac, Ubuntu lub przez Anaconda, Docker
Link: - https://github.com/wkentaro/labelme

Źródło: - https://github.com/wkentaro/labelme

Narzędzie do adnotacji komputerowych: -

Narzędzie do adnotacji wideo i obrazów opracowane przez firmę Intel
Bezpłatne i dostępne online
Działa na Windows, Mac i Ubuntu
Link: - https://github.com/opencv/cvat

Adnotator obrazu Vgg: -

Darmowe narzędzie do adnotacji obrazu typu open source
Prosta strona html <200kb i może działać w trybie offline
Obsługuje adnotacje i punkty wielokątów.
Link: - https://github.com/ox-vgg/via

Źródło: - https://github.com/ox-vgg/via

Prostokąt: -

Płatne narzędzie do adnotacji dla komputerów Mac
Może używać podstawowych modeli ML do wstępnego dodawania adnotacji do obrazów
Obsługuje wielokąty, sześcienne-beziera, linie i punkty
Link: - https://github.com/ryouchinsa/Rectlabel-support

Etykieta: -

Płatne narzędzie do adnotacji
Obsługuje narzędzie pióra w celu szybszego i dokładnego opisu
Link: - https://labelbox.com/product/image-segmentation

Zbiory danych

W ramach tej sekcji omówimy różne popularne i różnorodne zbiory danych dostępne publicznie, z których można skorzystać, aby rozpocząć szkolenie.

Kontekst Pascala

Ten zestaw danych jest rozszerzeniem zestawu danych Pascal VOC 2010 i wykracza poza oryginalny zestaw danych, zapewniając adnotacje dla całej sceny i zawiera ponad 400 klas danych ze świata rzeczywistego.

Źródło: - https://cs.stanford.edu/~roozbeh/pascal-context/
Źródło: - https://cs.stanford.edu/~roozbeh/pascal-context/

Link: - https://cs.stanford.edu/~roozbeh/pascal-context/

Zestaw danych COCO

Zbiór danych COCO zawiera 164 172 obrazów oryginalnego zbioru danych COCO z adnotacjami na poziomie pikseli i jest typowym zbiorem danych wzorcowych. Obejmuje 80 klasy: 91 klas rzeczy, 1 klas rzeczy i XNUMX klasa „bez etykiety”

Źródło: - http://cocodataset.org/#home

Link: - http://cocodataset.org/

Zestaw danych Cityscapes

Ten zestaw danych składa się z prawd o segmentacji terenu dla dróg, pasów, pojazdów i obiektów na drogach. Zbiór danych zawiera 30 klas i 50 miast zebranych w różnych warunkach środowiskowych i pogodowych. Zawiera również zbiór danych wideo z precyzyjnie opisanymi obrazami, które można wykorzystać do segmentacji wideo. KITI i CamVid są podobnymi rodzajami zbiorów danych, które można wykorzystać do szkolenia samochodów samojezdnych.

Źródło: - https://www.cityscapes-dataset.com/

Link: - https://www.cityscapes-dataset.com/

Zestaw danych Lits

Zestaw danych został utworzony w ramach wyzwania polegającego na identyfikacji zmian nowotworowych na podstawie tomografii komputerowej wątroby. Zestaw danych zawiera 130 skanów TK danych treningowych i 70 skanów TK danych testowych.

Źródło: - https://competitions.codalab.org/competitions/17094

Link: - https://competitions.codalab.org/competitions/17094

Zestaw danych CCP

Cloth Co-Parsing to zbiór danych, który jest tworzony jako część artykułu badawczego Clothing Co-Parsing przez Joint Image Segmentation and Labeling. Zbiór danych zawiera ponad 1000 obrazów z adnotacjami na poziomie pikseli, co daje łącznie 59 tagów.

Źródło: - https://github.com/bearpaw/clothing-co-parsing

Źródło :- https://github.com/bearpaw/clothing-co-parsing

Zbiór danych Pratheepan

Zbiór danych stworzony do segmentacji skóry na podstawie zdjęć z google zawierający 32 zdjęcia twarzy i 46 zdjęć rodzinnych

Źródło: - http://cs-chan.com/downloads_skin_dataset.html

Link: - http://cs-chan.com/downloads_skin_dataset.html

Etykietowanie zdjęć lotniczych Inria

Zbiór danych lotniczych map segmentacyjnych utworzonych z obrazów należących do domeny publicznej. Ma zasięg 810 km2 i ma XNUMX klasy budowlane i niebudowlane.

Źródło: - https://project.inria.fr/aerialimagelabeling/
Źródło: - https://project.inria.fr/aerialimagelabeling/

Link: - https://project.inria.fr/aerialimagelabeling/

S3DIS

Ten zestaw danych zawiera chmury punktów sześciu dużych części wnętrz w 3 budynkach z ponad 70000 zdjęć.

Źródło: - http://buildingparser.stanford.edu/dataset.html

Link: - http://buildingparser.stanford.edu/dataset.html

Podsumowanie

Omówiliśmy taksonomię różnych algorytmów, które można wykorzystać do rozwiązania przypadków użycia segmentacji semantycznej, czy to na obrazach, filmach czy chmurach punktów, a także ich wkład i ograniczenia. Przyjrzeliśmy się również sposobom oceny wyników i zbiorom danych, aby rozpocząć. Powinno to zapewnić kompleksowe zrozumienie segmentacji semantycznej jako ogólnego tematu.

Aby uzyskać listę dodatkowych zasobów do segmentacji semantycznej, zacznij od https://github.com/mrgloom/awesome-semantic-segmentation.

Inne dokumenty


Możesz być zainteresowany naszymi najnowszymi postami na:

aktualizacja:
Dodano dalsze materiały do ​​czytania.

Źródło: https://nanonets.com/blog/semantic-image-segmentation-2020/

Znak czasu:

Więcej z AI i uczenie maszynowe