Jag undersökte lite litteratur relaterad till helt konvolutionella nätverk och stötte på följande fras ,
Ett helt konvolutionsnätverk uppnås genom att ersätta de parameterrika fullständigt anslutna lagren i standard CNN-arkitekturer med konvolutionslag med $ 1 \ gånger 1 $ kärnor.
Jag har två frågor.
-
Vad menas med parameterrikt ? Kallas det parameterrikt eftersom de helt anslutna skikten överför parametrar utan någon form av ”rumslig” minskning?
-
Hur fungerar $ 1 \ gånger 1 $ kärnor? Betyder inte ”t $ 1 \ gånger 1 $ kärnan att man skjuter en enda pixel över bilden? Jag är förvirrad över detta.
Svar
Hela konvolutionsnätverk
A fullständigt fällningsnätverk (FCN) är ett neuralt nätverk som endast utför fällningsoperationer (och delprovtagning eller upsampling). På motsvarande sätt är ett FCN ett CNN utan fullständigt anslutna lager.
Convolution neural networks
Det typiska convolution neural network (CNN) är inte helt convolutional eftersom det innehåller ofta helt anslutna lager också (som inte utför konvolutionsoperationen), som är parameterrika , i den meningen att de har många parametrar (jämfört med motsvarande faltning) lager), även om kan de fullt anslutna lagren också ses som krökningar med ker nels som täcker hela inmatningsregionerna , vilket är huvudidén bakom konvertering av ett CNN till ett FCN. Se den här videon av Andrew Ng som förklarar hur man konverterar ett fullständigt anslutet lager till ett fällningsskikt.
Ett exempel på ett FCN
Ett exempel på ett helt fällt nätverk är U-net (kallas på detta sätt på grund av dess U-form, vilket du kan se från bilden nedan), vilket är ett känt nätverk som används för semantisk segmentering , dvs klassificera pixlar i en bild så att pixlar som tillhör samma klass (t.ex. en person) associeras med samma etikett (dvs. person), även pixelvis ( eller tät) klassificering.
Semantisk segmentering
Så, i semantisk segmentering, vill du associera en etikett med varje pixel (eller en liten del av pixlar) i den inmatade bilden. Här ”är en mer suggestiv illustration av ett neuralt nätverk som utför semantisk segmentering.
Instanssegmentering
Det finns också instanssegmentering , där du också vill skilja på olika instanser av samma klass (t.ex. att du vill skilja två personer i samma bild genom att märka dem annorlunda). Ett exempel på ett neuralt nätverk som används till exempel segmentering är mask R-CNN . Blogginlägget Segmentering: U-Net, Mask R-CNN och Medical Applications (2020) av Rachel Draelos beskriver dessa två problem och nätverk mycket bra.
Här är ett exempel på en bild där instanser av samma klass (dvs. person) har märkts annorlunda (orange och blått).
Både semantiska och instanssegment är tät klassificeringsuppgifter (specifikt faller de i kategorin bildsegmentering ), det vill säga att du vill klassificera varje pixel eller många små pixlar i en bild.
$ 1 \ gånger 1 $ krångel
I U-net-diagrammet ovan kan du se att det bara finns krökningar, kopiera och beskära, max- poolning och upsampling. Det finns inga helt anslutna lager.
Så hur kopplar vi en etikett till varje pixel (eller en liten lapp med p ixels) av ingången? Hur utför vi klassificeringen av varje pixel (eller lapp) utan ett slutligt helt anslutet lager?
Det är där $ 1 \ gånger 1 $ operationer med fällning och uppsampling är användbara!
När det gäller U-net-diagrammet ovan (specifikt den övre högra delen av diagrammet, som illustreras nedan för tydlighetens skull), två $ 1 \ gånger 1 \ gånger 64 $ kärnor tillämpas på inmatningsvolymen (inte bilderna!) för att producera två funktionskartor i storlek 388 $ \ gånger 388 $ . De använde två $ 1 \ gånger 1 $ kärnor eftersom det fanns två klasser i deras experiment (cell och inte-cell). Det nämnda blogginlägget ger dig också intuitionen bakom detta, så du bör läsa det.
Om du har försökt analysera U-net-diagrammet noggrant kommer du att märka att utdata kartläggs har andra rumsliga dimensioner (höjd och vikt) än inmatningsbilderna, som har mått $ 572 \ gånger 572 \ gånger 1 $ .
Det är bra eftersom vårt allmänna mål är att utföra tät klassificering (dvs. klassificera fläckar i bilden, där fläckarna bara kan innehålla en pixel ), även om jag sa att vi skulle ha utfört pixelvis klassificering, så kanske du förväntade dig att utgångarna skulle ha samma exakta rumsliga dimensioner av ingångarna. Observera att du i praktiken också kan ha utmatningskartorna att ha samma rumsliga dimension som ingångarna: du skulle bara ne redigeras för att utföra en annan upsampling (deconvolution) -åtgärd.
Hur fungerar $ 1 \ gånger 1 $ ? {h3>
A $ 1 \ gånger 1 $ konvolution är bara den typiska 2d-konvolutionen men med en $ 1 \ times1 $ kärna.
Som du förmodligen redan vet (och om du inte visste det nu, vet du det nu), om du har en $ g \ gånger g $ kärna som tillämpas på en ingång av storlek $ h \ times w \ times d $ , där $ d $ är djupet på inmatningsvolymen (vilket till exempel i fallet med gråskalebilder är $ 1 $ ), kärnan har faktiskt formen $ g \ gånger g \ gånger d $ , dvs den tredje dimensionen i kärnan är lika med den tredje dimensionen av den ingång som den tillämpas på. Detta är alltid fallet, förutom 3d-krökningar, men vi pratar nu om de typiska 2d-kretsarna! Se det här svaret för mer info.
Så, om vi vill använda en $ 1 \ gånger 1 $ konvolution till en inmatning av form $ 388 \ gånger 388 \ gånger 64 $ , där $ 64 $ är ingångens djup, då har de faktiska $ 1 \ gånger 1 $ kärnorna som vi behöver använda formen $ 1 \ gånger 1 \ gånger 64 $ (som jag sa ovan för U-nätet). Hur du minskar ingångsdjupet med $ 1 \ gånger 1 $ bestäms av antalet $ 1 \ gånger 1 $ kärnor som du vill använda. Detta är exakt samma sak som för alla 2d-fällningsoperationer med olika kärnor (t.ex. $ 3 \ gånger 3 $ ).
När det gäller U-nät reduceras ingångens rumsliga dimensioner på samma sätt som de rumsliga dimensionerna för varje ingång till ett CNN reduceras (dvs 2d faltning följt av nedprovningsoperationer). Huvudskillnaden (förutom att inte använda helt anslutna lager) mellan U-nätet och andra CNN är att U-nätet utför samplingsoperationer, så det kan ses som en kodare (vänster del) följt av en avkodare (höger del) .
Kommentarer
- Tack för ditt detaljerade svar, jag uppskattar det verkligen!