FPN(feature pyramid networks)

Yah podtytuł jest poprawny, FPN jest bardzo prostą metodą, która może być używana z prawie każdym modelem w celu poprawy wyników. Wkrótce wskoczymy w techniczne aspekty papieru, ale dla tego bloga, są pewne warunki wstępne. Powinieneś mieć wysokopoziomowe pojęcie o następujących Fast RCNN, Faster RCNN, anchor boxes, wiedza o SSD będzie przydatna. Mam blogi dla wszystkich tych papierów, jak również można je sprawdzić (linki na końcu tego bloga). FPN jest stosunkowo prostszy, jeśli dobrze zrozumiesz wszystkie warunki wstępne.

Piramidy obrazów (wiele obrazów o wielu skalach) są często używane w czasie przewidywania, aby poprawić wyniki. Ale obliczanie wyników przy użyciu nowoczesnych architektur głębokiego uczenia się jest często drogim procesem zarówno pod względem obliczeniowym, jak i czasowym.

FPN opiera się na wykorzystaniu nieodłącznej wieloskalowej hierarchii piramid w głębokiej CNN. Jest to analogiczne do różnicy między RCNN i Fast RCNN, RCNN jest region-based wykrywacz obiektów, w którym najpierw znaleźć ROI za pomocą algorytmu, takiego jak selektywne wyszukiwanie, a następnie przyciąć te ROI (około 2000) z obrazu i karmienia ich do CNN, aby uzyskać wyniki i w Fast RCNN początkowe warstwy CNN są wspólne dla całego obrazu i ROI przycinanie odbywa się na wyodrębnionej mapie cech, oszczędzając w ten sposób dużo czasu. W przypadku FPN, badania opierają się na wykorzystaniu wewnętrznej wieloskalowej natury, a piramida obrazu jest w jakiś sposób zaimplementowana wewnętrznie do architektury i współdzielenia większości części sieci. Będziemy skakać do szczegółów technicznych teraz.

CNN opiera się na strukturze hierarchicznej, w której rozdzielczość mapy funkcji jest zmniejszona po każdej warstwie, ale semantyka przechwytywane przez każdego głębszego warstwy jest silniejszy niż w poprzedniej warstwie. Silniejsze semantycznie cechy są przestrzennie grubsze ze względu na downsampling. FPN tworzy architekturę, w której semantycznie silniejsze cechy są łączone z cechami z poprzednich warstw (które są podpróbkowane mniej razy, a więc mają dokładniejsze informacje lokalizacyjne).

Architektura składa się z dwóch ścieżek:

  1. Ścieżka bottom-up (Normal feed-forward CNN)
  2. Ścieżka top-down (Nowa architektura używana do łączenia cech)

Architektura FPN Źródło: FPN paper
  • Jest to normalna architektura CNN typu feed-forward. W artykule autorzy użyli architektury Resnet do oceny wydajności. Najpierw nazwiemy warstwy jako C2, C3, C4, C5, które są 2,3,4 i 5 warstwami Conv w architekturze Resnet. Rozmiar mapy cech po zastosowaniu C2 to imagesize/4 i ten wymiar przestrzenny jest downsamplowany o współczynnik 2 po każdej warstwie.

Ścieżka góra-dół (prawa piramida na powyższym obrazie)

W tej ścieżce, głębsze cechy są łączone z niższymi cechami za pomocą połączeń bocznych. Ponieważ liczba kanałów warstw w ścieżce bottom-up nie jest taka sama, najpierw stosuje się konwolucję 1*1, aby uzyskać stałą liczbę kanałów dla każdej warstwy (w artykule zachowano ten wymiar na poziomie 256). Rozmiar przestrzenny jest również różny, więc zwiększamy próbkowanie (2x) głębszych cech, tak aby rozmiar przestrzenny tej cechy był dopasowany do mapy cech o wyższej rozdzielczości poprzedniej warstwy w ścieżce bottom-down. Teraz wymiary dwóch map cech są takie same i są one łączone przez element-wise add.

Możemy to zrozumieć na przykładzie. Załóżmy, że nasz obraz ma rozmiar 512*512, teraz rozmiar mapy cech po każdej warstwie konwolucji (C2, C3, C4, C5) będzie . Wyjściowa liczba kanałów każdej z warstw to . Teraz zastosujemy konwolucję 1*1 (z wyjściową liczbą kanałów = 256) na wyjściach warstw C2, C3, C4, C5, aby uzyskać równą liczbę kanałów. Nazwiemy te cechy pośrednie o tej samej liczbie kanałów wyjściowych jako S2, S3, S4, S5 odpowiadające C2, C3, C4, C5. Teraz S5 jest upsamplowany do 32*32 i łączony z S4 za pomocą dodawania pierwiastków. Teraz to wyjście zostanie upsamplowane do 64*64 i połączone z S3 i tak dalej. Wyjścia z tego etapu będziemy nazywać T2, T3, T4, T5.

Aby zredukować efekt aliasingu z powodu upsamplingu, na T2, T3, T4, T5 nakładana jest konwolucja 3*3 w celu uzyskania naszych ostatecznych map cech P2, P3, P4, P5 odpowiadających C2, C3, C4, C5. Cechy te są używane do generowania ostatecznych wyników klasyfikacji i regresji (bbox). Parametry dla głowy mogą być wspólne i oddzielne głowy nie daje żadnych dodatkowych korzyści.

To wszystko w teorii FPN. Ale zobaczymy jak FPN może być zaimplementowany dla Faster RCNN i Fast RCNN.

FPN dla Faster RCNN

Faster RCNN używa sieci propozycji regionu. RPN jest używana do generowania propozycji ramek ograniczających i te propozycje są później używane do generowania ostatecznych przewidywań. RPN jest małą siecią, która jest zaimplementowana na wyodrębnionych cechach ostatniej warstwy (C5). Konwolucja 3*3 jest stosowana do tej wyodrębnionej cechy, po której następują dwie podobne warstwy konwolucji 1*1 (jedna do klasyfikacji, a druga do regresji).

RPN jest tutaj zaadaptowana przez proste zastąpienie jednoskalowej mapy cech przez FPN. Tak więc teraz RPN jest zaimplementowany dla P2-P5, a nie tylko dla C5. Do treningu RPN używane są pola kotwic w wielu skalach. Ale ponieważ wieloskalowość jest teraz nieodłącznym elementem wyodrębnionej cechy, nie jest konieczne posiadanie wieloskalowych pól kotwic na żadnym z poziomów. Zamiast tego, do każdego poziomu przypisane jest pole kotwicy w jednej skali. Rozmiar pól kotwic używanych w artykule to {32², 64², 128², 256², 512²} dla {P2, P3, P4, P5, P6}. P6 wprowadzono tutaj, aby można było użyć skrzynki kotwicowej o dużym rozmiarze. P6 jest podpróbkowany z P5 z krokiem 2. Używane są pola kotwic o proporcjach {1:1, 1:2, 2:1}.

Te pola kotwic są dopasowywane do pól prawdy i model jest trenowany od końca do końca.

FPN dla Fast RCNN

Implementacja FPN w Fast RCNN jest bardzo prosta. Fast RCNN wykorzystuje techniki propozycji regionu, takie jak selektywne wyszukiwanie do generowania ROI i używa ROI pooling na mapie cech w pojedynczej skali, aby uzyskać ostateczne wyniki. Stosując FPN będziemy mieli wiele map cech w różnych skalach i potrzebujemy strategii, aby przypisać dany ROI do mapy cech (teraz mamy wiele map cech, której mapy cech użyć dla danego ROI?).

Użyta mapa cech jest obliczana przy użyciu:

Tutaj 224 jest rozmiarem treningowym obrazu w zbiorze danych imagenet (użyty resnet jest zachowany w imagenet). k0 to mapa cech, do której przypisany jest ROI o rozmiarze 224, w i h to szerokość i wysokość ROI. Głowica posiada wspólne parametry dla każdej mapy cech.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.