Ik was wat literatuur aan het onderzoeken met betrekking tot Fully Convolutional Networks en kwam de volgende zin tegen ,

Een volledig convolutioneel netwerk wordt bereikt door de parameterrijke volledig verbonden lagen in standaard CNN-architecturen te vervangen door convolutionele lagen met $ 1 \ times 1 $ kernels.

Ik heb twee vragen.

  1. Wat wordt bedoeld met parameterrijk ? Wordt het parameterrijk genoemd omdat de volledig verbonden lagen parameters doorgeven zonder enige vorm van “ruimtelijke” reductie?

  2. Ook, hoe werken $ 1 \ times 1 $ kernels? Betekent “t $ 1 \ times 1 $ kernel niet gewoon dat men een enkele pixel over de afbeelding schuift? Ik ben hierover in de war.

Antwoord

Volledig convolutienetwerken

A volledig convolutienetwerk (FCN) is een neuraal netwerk dat alleen convolutie- (en subsampling- of upsampling-) bewerkingen uitvoert. Evenzo is een FCN een CNN zonder volledig verbonden lagen.

Neurale convolutie-netwerken

Het typische neurale convolutie-netwerk (CNN) is niet volledig convolutioneel omdat het bevat vaak ook volledig verbonden lagen (die de convolutiebewerking niet uitvoeren), die parameterrijk zijn, in die zin dat ze veel parameters hebben (vergeleken met hun equivalente convolutie lagen), hoewel de volledig verbonden lagen ook kunnen worden gezien als windingen met ker nels die de volledige invoerregios bestrijken , wat het belangrijkste idee is achter het omzetten van een CNN naar een FCN. Bekijk deze video door Andrew Ng waarin wordt uitgelegd hoe je een volledig verbonden laag converteert naar een convolutionele laag.

Een voorbeeld van een FCN

Een voorbeeld van een volledig convolutioneel netwerk is het U-net (op deze manier genoemd vanwege de U-vorm, die u kunt zien in de onderstaande afbeelding), een beroemd netwerk dat wordt gebruikt voor semantisch segmentatie , dwz classificeer pixels van een afbeelding zodat pixels die tot dezelfde klasse behoren (bijv. een persoon) worden geassocieerd met hetzelfde label (bijv. persoon), oftewel pixelgewijs ( of dichte) classificatie.

voer de afbeeldingsbeschrijving hier in

Semantische segmentatie

Dus, in semantische segmentatie, wil je een label koppelen aan elke pixel (of klein stukje pixels) van het invoerbeeld. Hier “een meer suggestieve illustratie van een neuraal netwerk dat semantische segmentatie uitvoert.

voer hier een afbeeldingsbeschrijving in

Instantiesegmentatie

Er is “ook instantie-segmentatie , waarbij u ook verschillende instanties van dezelfde klasse wilt onderscheiden (u wilt bijvoorbeeld twee mensen in dezelfde afbeelding onderscheiden door ze anders te labelen). Een voorbeeld van een neuraal netwerk dat wordt gebruikt voor bijvoorbeeld segmentatie is mask R-CNN . De blogpost Segmentatie: U-Net, Mask R-CNN en Medical Applications (2020) van Rachel Draelos beschrijft deze twee problemen en netwerken zeer goed.

Hier is een voorbeeld van een afbeelding waarbij instanties van dezelfde klasse (dwz persoon) anders zijn gelabeld (oranje en blauw).

voer hier de afbeeldingsbeschrijving in

Zowel semantische als instantiesegmentaties zijn dichte classificatietaken (in het bijzonder vallen ze in de categorie beeldsegmentatie ), dat wil zeggen dat u elke pixel of veel kleine stukjes pixels van een afbeelding wilt classificeren.

$ 1 \ times 1 $ convoluties

In het U-net-diagram hierboven kun je zien dat er alleen convoluties zijn, kopiëren en bijsnijden, max- pooling en upsampling-bewerkingen. Er zijn geen volledig verbonden lagen.

Dus, hoe koppelen we een label aan elke pixel (of een klein stukje p ixels) van de input? Hoe voeren we de classificatie van elke pixel (of patch) uit zonder een laatste volledig verbonden laag?

Dat is waar de $ 1 \ times 1 $ convolutie- en upsampling-bewerkingen zijn handig!

In het geval van het U-net-diagram hierboven (specifiek het gedeelte rechtsboven in het diagram, dat hieronder wordt geïllustreerd voor de duidelijkheid), twee $ 1 \ maal 1 \ maal 64 $ kernels worden toegepast op het invoervolume (niet de afbeeldingen!) om twee feature maps te maken van $ 388 \ maal 388 $ . Ze gebruikten twee $ 1 \ maal 1 $ kernels omdat er twee klassen in hun experimenten waren (cel en niet-cel). De genoemde blogpost geeft je ook de intuïtie hierachter, dus je zou het moeten lezen.

voer hier de afbeeldingsbeschrijving in

Als je hebt geprobeerd het U-net-diagram zorgvuldig te analyseren, zul je zien dat de output hebben andere ruimtelijke (hoogte en gewicht) afmetingen dan de invoerafbeeldingen, die afmetingen hebben $ 572 \ maal 572 \ maal 1 $ .

Dat is prima, want ons algemene doel is om dichte classificatie uit te voeren (dwz de patches van de afbeelding classificeren, waarbij de patches slechts één pixel kunnen bevatten ), hoewel ik zei dat we pixelgewijze classificatie zouden hebben uitgevoerd, dus misschien verwachtte u dat de uitvoer dezelfde exacte ruimtelijke afmetingen van de invoer zou hebben. Merk echter op dat u in de praktijk ook de uitvoerkaarten zou kunnen hebben dezelfde ruimtelijke dimensie als de ingangen: je zou gewoon ne ed om een andere upsampling (deconvolutie) operatie uit te voeren.

Hoe werken $ 1 \ maal 1 $ convoluties?

A $ 1 \ times 1 $ convolutie is gewoon de typische 2d convolutie maar met een $ 1 \ times1 $ kernel.

Zoals je waarschijnlijk al weet (en als je dit niet wist, weet je het nu), als je een $ g \ times g $ hebt kernel die wordt toegepast op een invoer met de grootte $ h \ maal w \ maal d $ , waarbij $ d $ is de diepte van het invoervolume (dit is bijvoorbeeld in het geval van afbeeldingen in grijstinten $ 1 $ ), de kernel heeft feitelijk de vorm $ g \ times g \ times d $ , dwz de derde dimensie van de kernel is gelijk aan de derde dimensie van de invoer waarop deze wordt toegepast. Dit is altijd het geval, behalve bij 3d-windingen, maar we hebben het nu over de typische 2d-windingen! Zie dit antwoord voor meer informatie.

Dus in het geval willen we een $ 1 \ maal 1 $ convolutie naar een invoer met de vorm $ 388 \ maal 388 \ maal 64 $ , waarbij $ 64 $ is de diepte van de invoer, dan hebben de werkelijke $ 1 \ maal 1 $ kernels die we nodig hebben om de vorm $ 1 \ times 1 \ times 64 $ (zoals ik hierboven al zei voor het U-net). De manier waarop u de diepte van de invoer verkleint met $ 1 \ maal 1 $ wordt bepaald door het aantal $ 1 \ maal 1 $ kernels die u wilt gebruiken. Dit is precies hetzelfde als voor elke 2D convolutie operatie met verschillende kernels (bijv. $ 3 \ times 3 $ ).

In het geval van de U-net, worden de ruimtelijke afmetingen van de invoer verkleind op dezelfde manier als de ruimtelijke afmetingen van elke invoer naar een CNN worden verkleind (dwz 2d convolutie gevolgd door downsamplingbewerkingen). Het belangrijkste verschil (afgezien van het niet gebruiken van volledig verbonden lagen) tussen het U-net en andere CNNs is dat het U-net upsampling-bewerkingen uitvoert, zodat het kan worden gezien als een encoder (linker gedeelte) gevolgd door een decoder (rechter gedeelte) .

Opmerkingen

  • Bedankt voor je gedetailleerde antwoord, ik waardeer het echt!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *