Ja, undertitlen er korrekt, FPN er en meget enkel metode, der kan bruges med næsten alle modeller for at forbedre resultaterne. Vi vil snart springe ind på de tekniske detaljer i papiret, men til denne blog er der nogle forudsætninger. Du bør have en idé på højt niveau om følgende Fast RCNNN, Faster RCNN, ankerkasser, viden om SSD vil være praktisk. Jeg har blogs for alle disse papirer, som du også kan tjekke dem (links i slutningen af denne blog). FPN er en relativt enklere, hvis du forstår alle forudsætningerne godt.
Billedpyramider(flere billeder af flere skalaer) bruges ofte på tidspunktet for forudsigelser for at forbedre resultaterne. Men beregning af resultater ved hjælp af moderne dybe læringsarkitekturer er ofte en dyr proces både med hensyn til beregning og tid.
FPN er baseret på udnyttelse af det iboende pyramidehierarki med flere skalaer i dybe CNN. Det svarer til forskellen mellem RCNN og Fast RCNN, RCNN er en regionsbaseret objektdetektor, hvor vi først finder ROI’er ved hjælp af en algoritme som f.eks. selektiv søgning og derefter beskærer disse ROI’er (ca. 2000) fra billedet og indfører dem i CNN for at få resultater, og i Fast RCNNN deles de første lag af CNN for hele billedet, og beskæringen af ROI’er sker på det udtrukne funktionskort, hvorved der spares meget tid. I FPN’s tilfælde er forskningen baseret på udnyttelse af den interne multiskalanatur, og billedpyramiden er på en eller anden måde implementeret internt i arkitekturen og deler de fleste dele af netværket. Vi vil springe ind i de tekniske detaljer nu.
CNN er baseret på den hierarkiske struktur, hvor opløsningen af funktionskortet reduceres efter hvert lag, men den semantik, der indfanges af hvert dybere lag, er stærkere end det foregående lag. De semantisk stærkere træk er rumligt grovere på grund af downsampling. FPN skaber en arkitektur, hvor de semantisk stærkere funktioner slås sammen med funktionerne fra de foregående lag (som er undersamplet færre gange og derfor har mere nøjagtige lokaliseringsoplysninger).
Arkitekturen består af to veje:
- Bottom-up pathway (Normal feed-forward CNN)
- Top-down pathway (New architecture used for merging features)
- Det er en normal feed-forward CNN-arkitektur. I papiret brugte forfatterne Resnet-arkitekturen til evaluering af ydeevne. Vi vil først nævne lagene som C2, C3, C4 og C5, som er Conv 2,3,4 og 5 lag i resnet-arkitekturen. Størrelsen af funktionskortet efter anvendelse af C2 er billedstørrelse/4, og denne rumlige dimension nedjusteres med en faktor 2 efter hvert lag.
Top-down pathway (Højre pyramide i ovenstående billede)
I denne pathway sammenflettes dybere funktioner med lavere funktioner ved hjælp af laterale forbindelser. Da antallet af kanaler i lagene i bottom-up-vejen ikke er det samme, anvendes først en 1*1-foldning for at få et fast antal kanaler for hvert lag (denne dimension er 256 i papiret). Den rumlige størrelse er også forskellig, og derfor opjusteres (2x) de dybere funktioner, således at den rumlige størrelse af denne funktion svarer til et funktionskort med højere opløsning for det foregående lag i den nedadgående vej. Nu er dimensionerne af de to feature maps de samme, og de sammenlægges ved elementvis addition.
Vi kan forstå dette med et eksempel. Lad os sige, at vores billedstørrelse er 512*512, nu vil størrelsen af feature map efter hvert konvolutionslag (C2, C3, C4, C5) være . Output antallet af kanaler for hvert lag er . Nu anvender vi en 1*1-foldning (med output antal kanaler = 256) på udgangene fra C2, C3, C4, C5 for at få et lige antal kanaler. Vi kalder disse mellemliggende funktioner med det samme antal udgangskanaler for S2, S3, S4, S5 svarende til C2, C3, C4, C5. Nu opjusteres S5 til 32*32 og sammenføjes med S4 ved hjælp af elementvis addition. Nu vil dette output blive opjusteret til 64*64 og sammenlagt med S3 osv. Vi kalder output fra dette trin for T2, T3, T4, T5.
For at reducere virkningen af aliasing på grund af upsampling anvendes en 3*3-foldning på T2, T3, T4, T5 for at få vores endelige feature maps P2, P3, P4, P5 svarende til C2, C3, C4, C5. Disse funktioner anvendes til at generere de endelige klassificerings- og regressionsscore (bbox). Parametrene for hovedet kan deles, og et separat hoved giver ingen ekstra fordele.
Det er det hele i teorien om FPN. Men vi vil se, hvordan FPN kan implementeres for Faster RCNN og Fast RCNN.
FPN for Faster RCNN
Faster RCNN bruger regionforslagsnetværk. RPN bruges til at generere forslag til afgrænsende bokse, og disse forslag bruges senere til at generere endelige forudsigelser. RPN er et lille netværk, der implementeres over de ekstraherede funktioner i det sidste lag (C5). Der anvendes en 3*3-foldning på denne ekstraherede funktion efterfulgt af to lignende 1*1-foldningslag (et til klassificering og et andet til regression).
RPN tilpasses her ved blot at erstatte et enkelt skalafunktionskort med FPN. Nu er RPN således implementeret for P2-P5 og ikke kun for C5. Til træning af RPN anvendes ankerkasser med flere skalaer. Men da multiskalaen nu er indbygget i den ekstraherede funktion, er det ikke nødvendigt at have ankerkasser med flere skalaer på nogen af niveauerne. I stedet tildeles der en enkelt skala forankringsboks til hvert niveau. Størrelsen af de ankerkasser, der anvendes i artiklen, er {32², 64², 128², 256², 512²} for {P2, P3, P4, P5, P6}. P6 er indført her, så der kan anvendes en ankerboks af stor størrelse. P6 er underudtaget fra P5 med skridt 2. Der anvendes ankerbokse med størrelsesforholdet {1:1, 1:2, 2:1}.
Disse ankerbokse matches med ground truth bokse, og modellen trænes ende til ende.
FPN for Fast RCNN
Implementeringen af FPN i fast RCNN er meget enkel. Fast RCNNN anvender teknikker til regionforslag som f.eks. selektiv søgning til at generere ROI og anvender ROI-pooling på det enkeltskala funktionskort for at opnå de endelige resultater. Ved at anvende FPN får vi flere funktionskort med forskellige skalaer, og vi har brug for en strategi til at tildele en given ROI til funktionskortet (nu har vi flere funktionskort, hvilket funktionskort skal bruges til en given ROI?).
Det anvendte feature map beregnes ved hjælp af:
Her 224 er træningsstørrelse for billedet i imagenet datasættet (resnet anvendt er bibeholdt på imagenet). k0 er det funktionskort, som ROI af størrelse 224 tildeles, w og h er bredde og højde af ROI. Hovedet har fælles parametre for hvert feature map.