A felirat helyes, az FPN egy nagyon egyszerű módszer, amely szinte bármilyen modellel használható az eredmények javítására. Hamarosan beleugrunk a papír technikai részleteibe, de ehhez a bloghoz van néhány előfeltétel. Magas szintű elképzeléssel kell rendelkeznie a következőkről: Fast RCNN, Faster RCNN, anchor boxok, az SSD ismerete jól fog jönni. Mindezekhez a papírokhoz is vannak blogjaim, amelyeket megnézhet (linkek a blog végén). Az FPN viszonylag egyszerűbb, ha jól érti az összes előfeltételt.
A képpiramisokat (több skála több képét) gyakran használják az előrejelzések idején az eredmények javítása érdekében. De az eredmények kiszámítása a modern mélytanulási architektúrák használatával gyakran költséges folyamat mind számítási, mind időbeli szempontból.
A FPN a mély CNN-ben rejlő több skálájú piramishierarchia kihasználásán alapul. Ez analóg az RCNN és a Fast RCNN közötti különbséggel, az RCNN egy régióalapú objektumdetektor, amelyben először megtaláljuk a ROI-kat egy algoritmus, például a szelektív keresés segítségével, majd levágjuk ezeket a ROI-kat (körülbelül 2000) a képről és betápláljuk őket a CNN-be, hogy eredményeket kapjunk, és a Fast RCNN-ben a CNN kezdeti rétegeit a teljes képre megosztják, és a ROI-k levágása a kivont jellemzőtérképen történik, így sok időt takarít meg. Az FPN esetében a kutatás a belső több skálájú természet kihasználásán alapul, és a képpiramis valamilyen módon belsőleg valósul meg az architektúrához és a hálózat legtöbb részének megosztásához. Most ugorjunk bele a technikai részletekbe.
A CNN a hierarchikus struktúrán alapul, amelyben a jellemzőtérkép felbontása minden réteg után csökken, de az egyes mélyebb rétegek által rögzített szemantika erősebb, mint az előző réteg. A szemantikailag erősebb jellemzők a lemintavételezés miatt térben durvábbak. Az FPN olyan architektúrát hoz létre, ahol a szemantikailag erősebb jellemzők összeolvadnak az előző rétegek jellemzőivel (amelyek kevesebb almintavételezéssel rendelkeznek, és így pontosabb lokalizációs információval rendelkeznek).
Az architektúra két útvonalból áll:
- Bottom-up pathway (Normál feed-forward CNN)
- Top-down pathway (A jellemzők összevonására használt új architektúra)
- Ez egy normál feed-forward CNN architektúra. A cikkben a szerzők Resnet architektúrát használtak a teljesítmény értékeléséhez. A rétegeket először C2, C3, C4, C5 néven nevezzük meg, amelyek a resnet architektúrában a Conv 2,3,4 és 5 rétegek. A C2 alkalmazása után a jellemzőtérkép mérete képméret/4, és ezt a térbeli dimenziót minden réteg után 2-vel lemintavételezik.
Top-down pathway (jobb oldali piramis a fenti képen)
Ebben az útvonalban a mélyebb jellemzők oldalirányú kapcsolatok segítségével összeolvadnak az alacsonyabb jellemzőkkel. Mivel a rétegek csatornáinak száma az alulról felfelé irányuló útvonalban nem azonos, először 1*1 konvolúciót alkalmazunk, hogy minden réteghez fix számú csatornát kapjunk (ezt a dimenziót a dolgozatban 256-nak tartjuk). A térbeli méret is eltérő, ezért a mélyebb jellemzőket felmintavételezzük(2x), hogy ennek a jellemzőnek a térbeli mérete megegyezzen az alulról lefelé vezető útvonal előző rétegének nagyobb felbontású jellemzőtérképével. Most a két feature térkép dimenziója megegyezik, és elemenkénti összeadással egyesítjük őket.
Ezt egy példával érthetjük meg. Tegyük fel, hogy a képünk mérete 512*512, most az egyes konvolúciós rétegek(C2, C3, C4, C5) utáni feature map mérete . Az egyes rétegek kimeneti csatornáinak száma . Most a C2, C3, C4, C5 kimenetein 1*1 konvolúciót alkalmazunk (a kimeneti csatornák száma = 256), hogy azonos számú csatornát kapjunk. Ezeket az azonos számú kimeneti csatornával rendelkező köztes jellemzőket S2, S3, S4, S5-nek fogjuk nevezni a C2, C3, C4, C5-nek megfelelően. Most az S5-öt felmintavételezzük 32*32-re, és elemenkénti összeadással egyesítjük az S4-gyel. Most ezt a kimenetet felmintavételezzük 64*64-re, és összevonjuk az S3-mal, és így tovább. Ennek a szakasznak a kimeneteit T2, T3, T4, T5-nek fogjuk nevezni.
A felmintavételezés miatti aliasing hatásának csökkentése érdekében a T2, T3, T4, T5-re 3*3 konvolúciót alkalmazunk, hogy megkapjuk a C2, C3, C4, C5-nek megfelelő P2, P3, P4, P5 végső jellemzőtérképeket. Ezeket a jellemzőket használjuk a végső osztályozási és regressziós pontszámok létrehozására (bbox). A fej paraméterei megoszthatók, és a külön fej nem ad hozzáadott előnyt.
Ez az FPN elméletében. De megnézzük, hogyan lehet az FPN-t megvalósítani a Faster RCNN és a Fast RCNN esetében.
FPN a Faster RCNN számára
A Fast RCNN régiójavaslat-hálózatot használ. Az RPN-t a határoló doboz javaslatok létrehozására használják, és ezeket a javaslatokat később a végső előrejelzések létrehozására használják. Az RPN egy kis hálózat, amely az utolsó réteg(C5) kivont jellemzőin keresztül valósul meg. Erre a kivont jellemzőre 3*3 konvolúciót alkalmaznak, amelyet két hasonló 1*1 konvolúciós réteg követ (az egyik az osztályozáshoz, a másik a regresszióhoz).
A RPN-t itt úgy adaptálják, hogy egyszerűen egy egyskálájú jellemzőtérképet helyettesítenek FPN-nel. Így most az RPN a P2-P5 és nem csak a C5 esetében kerül végrehajtásra. Az RPN képzéséhez több skálájú horgonydobozokat használunk. Mivel azonban a több skála most már a kivont jellemzőben rejlik, nincs szükség több skálájú horgonyzódobozokra egyik szinten sem. Ehelyett minden szinthez egyetlen skála horgonyzódoboz van hozzárendelve. A dolgozatban használt horgonyzódobozok mérete {32², 64², 128², 256², 512²} a {P2, P3, P4, P5, P6} esetében. A P6-ot azért vezettük be, hogy nagyméretű horgonyzódobozt használhassunk. A P6 a P5-ből 2 lépcsővel történő almintavételezéssel történik. Az {1:1, 1:2, 2:1} képarányú horgonydobozokat használjuk.
Ezeket a horgonydobozokat összepárosítjuk a ground truth dobozokkal, és a modellt végpontról végpontra képezzük.
FPN gyors RCNN-hez
A FPN bevezetése a gyors RCNN-ben nagyon egyszerű. A gyors RCNN olyan régiójavaslati technikákat használ, mint a szelektív keresés a ROI létrehozásához, és ROI-összevonást alkalmaz az egyskálájú jellemzőtérképen a végeredmény eléréséhez. Az FPN alkalmazásával több különböző skálájú jellemzőtérképünk lesz, és szükségünk van egy stratégiára, amellyel az adott ROI-t hozzárendelhetjük a jellemzőtérképhez (most már több jellemzőtérképünk van, melyik jellemzőtérképet használjuk az adott ROI-hoz?).
A felhasznált feature map kiszámítása a következő módon történik: