FPN(feature pyramid networks)

Jo titulek je správný, FPN je velmi jednoduchá metoda, kterou lze použít téměř s jakýmkoli modelem pro zlepšení výsledků. Brzy se vrhneme na technickou stránku článku, ale pro tento blog existují určité předpoklady. Měli byste mít vysokoúrovňovou představu o následujících metodách: Fast RCNN, Faster RCNN, anchor boxes, hodit se bude znalost SSD. Ke všem těmto článkům mám i blogy, na které se můžete podívat(odkazy na konci tohoto blogu). FPN je relativně jednodušší, pokud dobře rozumíte všem předpokladům.

V době predikce se často používají obrazové pyramidy(více obrazů více měřítek), které zlepšují výsledky. Výpočet výsledků pomocí moderních architektur hlubokého učení je však často nákladný proces z hlediska výpočetních i časových nákladů.

FPN je založena na využití přirozené hierarchie pyramid více měřítek hluboké CNN. Je to analogické rozdílu mezi RCNN a Fast RCNN, RCNN je detektor objektů založený na regionech, ve kterém nejprve najdeme ROI pomocí algoritmu, jako je selektivní vyhledávání, a poté tyto ROI ořízneme(asi 2000) z obrazu a vložíme je do CNN, abychom získali výsledky, a ve Fast RCNN jsou počáteční vrstvy CNN sdíleny pro celý obraz a oříznutí ROI se provádí na extrahované mapě rysů, čímž se ušetří mnoho času. V případě FPN je výzkum založen na využití vnitřní víceúrovňové povahy a obrazová pyramida je nějakým způsobem implementována interně do architektury a sdílení většiny částí sítě. Nyní přejdeme k technickým podrobnostem:

CNN je založena na hierarchické struktuře, v níž se rozlišení mapy příznaků po každé vrstvě snižuje, ale sémantika zachycená každou hlubší vrstvou je silnější než předchozí vrstva. Sémanticky silnější rysy jsou prostorově hrubší z důvodu snížení vzorkování. FPN vytváří architekturu, kde jsou sémanticky silnější rysy sloučeny s rysy z předchozích vrstev(které jsou podvzorkovány méněkrát, a mají tedy přesnější lokalizační informace).

Architektura se skládá ze dvou cest:

  1. Cesta zdola nahoru (normální feed-forward CNN)
  2. Cesta shora dolů (nová architektura používaná pro slučování rysů)

Architektura FPN Zdroj: Jedná se o běžnou feed-forward architekturu CNN. V článku autoři použili pro vyhodnocení výkonu architekturu Resnet. Nejprve pojmenujeme vrstvy jako C2, C3, C4, C5, což jsou vrstvy Conv 2,3,4 a 5 v architektuře Resnet. Velikost mapy rysů po použití C2 je imagesize/4 a tento prostorový rozměr je po každé vrstvě zmenšen o faktor 2.

Cesta shora dolů (Pravá pyramida na výše uvedeném obrázku)

V této cestě jsou hlubší rysy sloučeny s nižšími rysy pomocí laterálních spojení. Protože počet kanálů vrstev v cestě zdola nahoru není stejný, použije se nejprve konvoluce 1*1, aby se získal pevný počet kanálů pro každou vrstvu(tento rozměr je v článku zachován 256). Prostorová velikost je také odlišná, proto hlubší rysy převzorkujeme(2x) tak, aby prostorová velikost tohoto rysu odpovídala mapě rysů s vyšším rozlišením předchozí vrstvy v dráze zdola dolů. Nyní jsou rozměry dvou map příznaků stejné a jsou sloučeny pomocí sčítání prvků.

Pochopíme to na příkladu. Řekněme, že velikost našeho obrázku je 512*512, nyní bude velikost mapy prvků po každé konvoluční vrstvě (C2, C3, C4, C5) . Výstupní počet kanálů každé vrstvy je . Nyní použijeme konvoluci 1*1 (s výstupním počtem kanálů = 256) na výstupy C2, C3, C4, C5, abychom získali stejný počet kanálů. Tyto mezivrstvy se stejným počtem výstupních kanálů budeme nazývat S2, S3, S4, S5 odpovídající C2, C3, C4, C5. Nyní se S5 převzorkuje na 32*32 a sloučí se s S4 pomocí sčítání prvků. Nyní bude tento výstup převzorkován na 64*64 a sloučen s S3 atd. Výstupy z této fáze budeme nazývat T2, T3, T4, T5.

Pro snížení vlivu aliasingu v důsledku převzorkování se na T2, T3, T4, T5 aplikuje konvoluce 3*3, čímž získáme konečné mapy prvků P2, P3, P4, P5 odpovídající C2, C3, C4, C5. Tyto rysy se použijí k vytvoření konečného klasifikačního a regresního skóre (bbox). Parametry pro hlavu mohou být sdílené a samostatná hlava nepřináší žádný další přínos.

To je v teorii FPN vše. Uvidíme však, jak lze FPN implementovat pro rychlejší RCNN a rychlou RCNN.

FPN pro rychlejší RCNN

Rychlá RCNN používá síť návrhu regionů. RPN se používá ke generování návrhů ohraničujících oblastí a tyto návrhy se později použijí ke generování konečných předpovědí. RPN je malá síť, která je implementována nad extrahovanými rysy poslední vrstvy(C5). Na tento extrahovaný rys se použije konvoluce 3*3, po níž následují dvě podobné konvoluční vrstvy 1*1 (jedna pro klasifikaci a druhá pro regresi).

RPN je zde upravena tak, že jednoduše nahradí mapu rysů v jednom měřítku FPN. Nyní je tedy RPN implementován pro P2-P5, a nikoli pouze pro C5. Pro trénování RPN se používají kotevní pole více měřítek. Protože je však nyní více měřítek vlastní extrahovanému prvku, není nutné mít kotevní boxy více měřítek na žádné z úrovní. Místo toho je každé úrovni přiřazen kotevní box jednoho měřítka. Velikost kotevních boxů použitých v článku je {32², 64², 128², 256², 512²} pro {P2, P3, P4, P5, P6}. P6 je zde zavedena proto, aby bylo možné použít kotevní pole velké velikosti. P6 je podvzorkován z P5 s krokem 2. Jsou použity kotevní boxy s poměrem stran {1:1, 1:2, 2:1}.

Tyto kotevní boxy jsou porovnány se základními pravdivostními boxy a model je trénován od konce do konce.

FPN pro rychlý RCNN

Implementace FPN v rychlém RCNN je velmi jednoduchá. Rychlý RCNN používá techniky navrhování oblastí, jako je selektivní vyhledávání pro generování ROI, a k získání konečných výsledků používá sdružování ROI na mapě prvků v jednom měřítku. Při použití FPN budeme mít více map prvků různých měřítek a potřebujeme strategii pro přiřazení dané ROI k mapě prvků (nyní máme více map prvků, kterou mapu prvků použít pro danou ROI?).

Použitá mapa prvků se vypočítá pomocí:

Zde 224 je tréninková velikost obrazu v datové sadě imagenet(použitý resnet je zachován na imagenet). k0 je mapa prvků, ke které je přiřazena ROI o velikosti 224, w a h je šířka a výška ROI. Hlava má sdílené parametry pro každou mapu příznaků.

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.