Przeglądałem pewną literaturę dotyczącą sieci w pełni konwolucyjnych i natrafiłem na następujące wyrażenie ,

W pełni splotową sieć uzyskuje się poprzez zastąpienie bogatych w parametry w pełni połączonych warstw w standardowej architekturze CNN warstwami splotowymi z $ 1 \ razy 1 $ jądra.

Mam dwa pytania.

  1. Co to znaczy bogata w parametry ? Czy nazywa się to bogatą w parametry, ponieważ w pełni połączone warstwy przekazują parametry bez jakiejkolwiek redukcji „przestrzennej”?

  2. Ponadto, jak działają jądra $ 1 \ times 1 $ ? Czy jądro „t $ 1 \ times 1 $ nie oznacza po prostu, że jeden piksel przesuwa się po obrazie? Nie mam co do tego pojęcia.

Odpowiedź

Sieci w pełni konwolucyjne

A sieć w pełni konwolucyjna (FCN) to sieć neuronowa, która wykonuje tylko operacje splotu (i podpróbkowania lub upsamplingu). Równoważnie, FCN to CNN bez w pełni połączonych warstw.

Konwolucyjne sieci neuronowe

Typowa konwolucyjna sieć neuronowa (CNN) nie jest w pełni splotowa, ponieważ często zawiera również w pełni połączone warstwy (które nie wykonują operacji splotu), które są bogate w parametry w tym sensie, że mają wiele parametrów (w porównaniu z ich równoważnym splotem warstwy), chociaż w pełni połączone warstwy można również postrzegać jako zwoje z ker nel, które obejmują całe regiony wejściowe , co jest główną ideą konwersji CNN na FCN. Zobacz ten film autorstwa Andrew Ng, który wyjaśnia, jak przekonwertować w pełni połączoną warstwę na warstwę konwolucyjną.

Przykład FCN

Przykładem w pełni konwolucyjnej sieci jest U-net (nazywany w ten sposób ze względu na kształt litery U, który widać na poniższej ilustracji), który jest słynną siecią używaną do semantycznego segmentacja , tj. klasyfikacja pikseli obrazu tak, aby piksele należące do tej samej klasy (np. osoba) były powiązane z tą samą etykietą (tj. osoba), czyli pikselowo ( lub gęstej).

tutaj wprowadź opis obrazu

Segmentacja semantyczna

Tak więc w przypadku segmentacji semantycznej chcesz powiązać etykietę z każdym pikselem (lub małą plamą pikseli) obrazu wejściowego. Oto „bardziej sugestywna ilustracja sieci neuronowej, która wykonuje segmentację semantyczną.

tutaj wprowadź opis obrazu

Segmentacja instancji

Istnieje również segmentacja instancji , gdzie chcesz również rozróżnić różne instancje tej samej klasy (np. chcesz rozróżnić dwie osoby na tym samym obrazie, nadając im różne etykiety). Przykładem sieci neuronowej używanej na przykład do segmentacji jest maska R-CNN . W poście na blogu Segmentation: U-Net, Mask R-CNN i Medical Applications (2020) Rachel Draelos bardzo dobrze opisuje te dwa problemy i sieci.

Oto przykład obrazu, na którym instancje tej samej klasy (tj. osoby) zostały inaczej oznaczone (pomarańczowe i niebieskie).

wprowadź tutaj opis obrazu

Zarówno segmentacja semantyczna, jak i segmentacja instancji są gęstymi zadaniami klasyfikacyjnymi (w szczególności są one do kategorii obrazków ), to znaczy, że chcesz sklasyfikować każdy piksel lub wiele małych fragmentów pikseli obrazu.

1 $ \ razy 1 $ zwojów

Na powyższym diagramie U-net widać, że istnieją tylko zwoje, kopiowanie i przycinanie, maks- pule i operacje upsamplingu. Nie ma w pełni połączonych warstw.

Jak więc powiązać etykietę z każdym pikselem (lub małą łatką p ixels) wejścia? Jak przeprowadzić klasyfikację każdego piksela (lub poprawki) bez końcowej, w pełni połączonej warstwy?

To właśnie tam $ 1 \ times 1 $ operacje splotu i upsamplingu są przydatne!

W przypadku powyższego diagramu U-net (a konkretnie prawej górnej części diagramu, który zilustrowano poniżej dla przejrzystości), dwa $ 1 \ times 1 \ times 64 $ jądra są stosowane do woluminu wejściowego (nie do obrazów!) w celu utworzenia dwóch map obiektów o rozmiarze 388 $ \ times 388 $ . Użyli dwóch jąder $ 1 \ times 1 $ , ponieważ w ich eksperymentach były dwie klasy (cell i not-cell). Wspomniany post na blogu również daje intuicję, która się za tym kryje, więc powinieneś go przeczytać.

wprowadź tutaj opis obrazu

Jeśli spróbujesz dokładnie przeanalizować diagram U-net, zauważysz, że odwzorowanie wyników mają inne wymiary przestrzenne (wysokość i waga) niż obrazy wejściowe, które mają wymiary 572 $ \ times 572 \ times 1 $ .

To „s dobrze, ponieważ naszym ogólnym celem jest wykonanie gęstej klasyfikacji (tj. sklasyfikowania fragmentów obrazu, w których poprawki mogą zawierać tylko jeden piksel ), chociaż powiedziałem, że dokonalibyśmy klasyfikacji według pikseli, więc być może spodziewaliście się, że wyjścia będą miały te same dokładne wymiary przestrzenne wejść. Należy jednak pamiętać, że w praktyce można również mieć mapy wyjściowe ten sam wymiar przestrzenny co dane wejściowe: po prostu nie ed, aby wykonać inną operację upsamplingu (dekonwolucji).

Jak działają konwektory $ 1 \ times 1 $ ?

A $ 1 \ times 1 $ splot jest po prostu typowym splotem 2d, ale z jądrem $ 1 \ times1 $ .

Jak zapewne już wiesz (a jeśli tego nie wiedziałeś, to teraz już wiesz), jeśli masz $ g \ times g $ jądro stosowane do danych wejściowych o rozmiarze $ h \ times w \ times d $ , gdzie $ d $ to głębokość objętości wejściowej (która na przykład w przypadku obrazów w skali szarości wynosi 1 $ ), jądro ma w rzeczywistości kształt $ g \ razy g \ razy d $ , tj. trzeci wymiar jądra jest równy trzeciemu wymiarowi danych wejściowych, do którego jest stosowany. Tak jest zawsze, z wyjątkiem splotów 3D, ale teraz mówimy o typowych zwojach 2d! Zobacz tę odpowiedź , aby uzyskać więcej informacji.

Tak więc w przypadku, gdy chcemy zastosować $ 1 \ times 1 $ splot na dane wejściowe kształtu $ 388 \ times 388 \ times 64 $ , gdzie 64 $ $ to głębokość danych wejściowych, a następnie rzeczywiste jądra $ 1 \ times 1 $ , których będziemy potrzebować, mają kształt 1 $ \ times 1 \ times 64 $ (jak powiedziałem powyżej dla sieci U-net). Sposób, w jaki zmniejszasz głębokość danych wejściowych za pomocą $ 1 \ times 1 $ , zależy od liczby $ 1 \ times 1 $ jądra, których chcesz użyć. To jest dokładnie to samo, co w przypadku każdej operacji splotu 2d z różnymi jądrami (np. $ 3 \ times 3 $ ).

W przypadku U-net, wymiary przestrzenne wejścia są zmniejszane w ten sam sposób, w jaki zmniejszane są wymiary przestrzenne dowolnego sygnału wejściowego do CNN (tj. Splot 2d, po którym następują operacje próbkowania w dół). Główną różnicą (oprócz nieużywania w pełni połączonych warstw) między U-net a innymi CNN jest to, że U-net wykonuje operacje upsamplingu, więc można go postrzegać jako koder (lewa część), a następnie dekoder (prawa część) .

Komentarze

  • Dziękuję za szczegółową odpowiedź, naprawdę to doceniam!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *