FPN(feature pyramid networks)

Yah alaotsikko on oikein, FPN on hyvin yksinkertainen menetelmä, jota voidaan käyttää lähes minkä tahansa mallin kanssa tulosten parantamiseksi. Hyppäämme pian paperin teknisiin yksityiskohtiin, mutta tätä blogia varten on joitain ennakkoedellytyksiä. Sinulla pitäisi olla korkean tason käsitys seuraavista Fast RCNN, Faster RCNN, ankkurilaatikot, SSD:n tuntemus on hyödyllistä. Minulla on blogeja kaikista näistä papereista, voit tarkistaa ne (linkit tämän blogin lopussa). FPN on suhteellisen yksinkertaisempi, jos ymmärrät kaikki edellytykset hyvin.

Kuvapyramideja (useita kuvia useissa mittakaavoissa) käytetään usein ennusteiden aikana tulosten parantamiseksi. Mutta tulosten laskeminen nykyaikaisilla syväoppimisarkkitehtuureilla on usein kallis prosessi sekä laskennallisesti että ajallisesti.

FPN perustuu syvän CNN:n luontaisen moniasteisen pyramidihierarkian hyödyntämiseen. Se on analoginen RCNN:n ja Fast RCNN:n välisen eron kanssa, RCNN on aluepohjainen objektinilmaisin, jossa ensin etsitään ROI:t käyttämällä algoritmia, kuten valikoivaa hakua, ja sitten leikataan nämä ROI:t (noin 2000) kuvasta ja syötetään ne CNN:ään tulosten saamiseksi, ja Fast RCNN:ssä CNN:n alkukerrokset jaetaan täydelle kuvalle ja ROI:n rajaus tehdään poimitun ominaisuustiedon kartan perusteella, mikä säästää paljon aikaa. FPN:n tapauksessa tutkimus perustuu sisäisen moniasteisen luonteen hyödyntämiseen, ja kuvapyramidi on jotenkin toteutettu sisäisesti arkkitehtuuriin ja useimpien verkon osien jakamiseen. Hyppäämme nyt teknisiin yksityiskohtiin.

CNN perustuu hierarkkiseen rakenteeseen, jossa piirrekartan resoluutio pienenee jokaisen kerroksen jälkeen, mutta jokaisen syvemmän kerroksen kaappaama semantiikka on vahvempi kuin edellisen kerroksen. Semanttisesti vahvemmat piirteet ovat pienennetyn näytteenoton vuoksi spatiaalisesti karkeampia. FPN luo arkkitehtuurin, jossa semanttisesti vahvemmat piirteet yhdistetään aiempien kerrosten piirteisiin (joista otetaan vähemmän näytteitä ja joilla on siten tarkempaa paikannustietoa).

Arkkitehtuuri koostuu kahdesta polusta: FPN paper

  • Se on normaali feed-forward CNN-arkkitehtuuri. Kirjoittajat käyttivät paperissa Resnet-arkkitehtuuria suorituskyvyn arviointiin. Nimetään ensin kerrokset C2, C3, C4, C5, jotka ovat Resnet-arkkitehtuurissa Conv 2,3,4 ja 5 kerrosta. Ominaisuuskartan koko C2:n soveltamisen jälkeen on imagesize/4, ja tätä spatiaalista ulottuvuutta pienennetään jokaisen kerroksen jälkeen kertoimella 2.

Top-down-polku (oikeanpuoleinen pyramidi yllä olevassa kuvassa)

Tässä polussa syvemmälle ulottuvat piirteet yhdistetään alempiin piirteisiin lateraalisten yhteyksien avulla. Koska alhaalta ylöspäin kulkevan polun kerrosten kanavien määrä ei ole sama, sovelletaan ensin 1*1-konvoluutiota, jotta saadaan kiinteä määrä kanavia kullekin kerrokselle (tämä ulottuvuus säilytetään asiakirjassa 256:na). Myös spatiaalinen koko on erilainen, joten syvempien piirteiden näytteenottoa lisätään (2x), jotta tämän piirteen spatiaalinen koko vastaa alhaalta alaspäin kulkevan reitin edellisen kerroksen korkeamman resoluution piirrekarttaa. Nyt kahden piirrekartan ulottuvuudet ovat samat ja ne yhdistetään elementtiviisaalla yhteenlaskulla.

Voidaan ymmärtää tämä esimerkin avulla. Oletetaan, että kuvamme koko on 512*512, jolloin jokaisen konvoluutiokerroksen (C2, C3, C4, C5) jälkeen piirrekartan koko on . Kunkin kerroksen kanavien ulostulomäärä on . Nyt sovellamme 1*1-konvoluutiota (jossa kanavien määrä on 256) C2:n, C3:n, C4:n ja C5:n ulostuloihin, jotta saamme yhtä monta kanavaa. Kutsumme näitä väliominaisuuksia, joilla on sama määrä ulostulokanavia, nimillä S2, S3, S4, S5, jotka vastaavat C2:ta, C3:ta, C4:ää ja C5:tä. Nyt S5:n näytteistetään 32*32:een ja yhdistetään S4:ään elementtiviisaalla yhteenlaskulla. Nyt tämä ulostulo näytteistetään 64*64:ään ja yhdistetään S3:n kanssa ja niin edelleen. Kutsumme tämän vaiheen ulostuloja nimillä T2, T3, T4, T5.

Ylösnäytteenotosta johtuvan aliasing-vaikutuksen vähentämiseksi T2:een, T3:een, T4:ään ja T5:een sovelletaan 3*3-konvoluutiota, jotta saadaan lopulliset piirrekartat P2, P3, P4, P5, jotka vastaavat C2:ta, C3:ta, C4:ää ja C5:tä. Näitä piirteitä käytetään lopullisten luokitus- ja regressiopisteiden tuottamiseen (bbox). Pään parametrit voidaan jakaa ja erillinen pää ei anna mitään lisähyötyä.

Se siitä FPN:n teoriasta. Mutta katsomme, miten FPN voidaan toteuttaa Faster RCNN:lle ja Fast RCNN:lle.

FPN for Faster RCNN

Faster RCNN käyttää alue-ehdotusverkkoa. RPN:ää käytetään rajauslaatikkoehdotusten tuottamiseen ja näitä ehdotuksia käytetään myöhemmin lopullisten ennusteiden tuottamiseen. RPN on pieni verkko, joka toteutetaan viimeisen kerroksen (C5) uutettujen piirteiden yli. Tähän uutettuun piirteeseen sovelletaan 3*3-konvoluutiota, jota seuraa kaksi samanlaista 1*1-konvoluutiokerrosta (toinen luokittelua ja toinen regressiota varten).

RPN:ää mukautetaan tässä yksinkertaisesti korvaamalla yhden mittakaavan piirrekartta FPN:llä. Nyt RPN on siis toteutettu P2-P5:lle eikä pelkästään C5:lle. RPN:n harjoittelussa käytetään usean mittakaavan ankkurilaatikoita. Mutta koska moniasteikko on nyt luontainen uutetussa piirteessä, moniasteikkoisia ankkurilaatikoita ei tarvita millään tasolla. Sen sijaan kullekin tasolle määritetään yhden mittakaavan ankkurilaatikko. Tässä työssä käytettyjen ankkurilaatikoiden koko on {32², 64², 128², 256², 512²} {P2, P3, P4, P5, P6}. P6 otetaan tässä käyttöön, jotta voidaan käyttää suurikokoista ankkurilaatikkoa. P6 on poimittu P5:stä alinäytteenotolla, jonka askel on 2. Käytetään ankkurilaatikoita, joiden kuvasuhteet ovat {1:1, 1:2, 2:1}.

Nämä ankkurilaatikot sovitetaan yhteen ground truth -laatikoiden kanssa ja malli koulutetaan päästä päähän.

FPN nopealle RCNN:lle

FPN:n toteuttaminen nopeassa RCNN:ssä on hyvin yksinkertaista. Fast RCNN käyttää alue-ehdotustekniikoita, kuten valikoivaa hakua, ROI:n luomiseksi ja käyttää ROI:n yhdistämistä yhden mittakaavan piirrekarttaan lopullisten tulosten saamiseksi. Soveltamalla FPN:ää meillä on useita eri mittakaavaisia ominaisuustietokarttoja, ja tarvitsemme strategian tietyn ROI:n osoittamiseksi ominaisuustietokartalle (nyt meillä on useita ominaisuustietokarttoja, mitä ominaisuustietokarttaa käytämme tietylle ROI:lle?).

Käytetty feature map lasketaan käyttämällä:

Tässä 224 on koulutuskoko, joka on kuvan koko imagenet-tietokannassa (käytetty resnet säilytetään imagenetissä). k0 on ominaisuustietokartta, johon osoitetaan 224-kokoinen ROI, w ja h ovat ROI:n leveys ja korkeus. Päässä on jaetut parametrit kullekin ominaisuuskartalle.

Vastaa

Sähköpostiosoitettasi ei julkaista.