Konvolutionella neurala nätverk

Slutförd

Anmärkning

Mer information finns på fliken Text och bilder !

Möjligheten att använda filter för att tillämpa effekter på bilder är användbar i bildbearbetningsuppgifter, till exempel du kan utföra med bildredigeringsprogram. Målet med datorsyn är dock ofta att extrahera meningsfull information, eller åtminstone användbara insikter, från bilder; vilket kräver att maskininlärningsmodeller skapas som tränas att igenkänna drag baserat på stora mängder befintliga bilder.

Tips/Råd

Den här lektionen förutsätter att du är bekant med de grundläggande principerna för maskininlärning och att du har konceptuell kunskap om djupinlärning med neurala nätverk. Om du är nybörjare på maskininlärning kan du överväga att slutföra modulen Introduktion till maskininlärningskoncept på Microsoft Learn.

En av de vanligaste maskininlärningsmodellarkitekturerna för datorseende är ett konvolutionellt neuralt nätverk (CNN), en typ av djupinlärningsarkitektur. CNN använder filter för att extrahera numeriska funktionskartor från bilder och matar sedan in funktionsvärdena i en djupinlärningsmodell för att generera en etikettförutsägelse. I ett bildklassificeringsscenario representerar etiketten till exempel bildens huvudämne (med andra ord vad är det här en bild av?). Du kan träna en CNN-modell med bilder av olika typer av frukt (till exempel äpple, banan och apelsin) så att etiketten som förutsägs är typen av frukt i en viss bild.

Under träningsprocessen för en CNN definieras filterkärnor ursprungligen med hjälp av slumpmässigt genererade viktvärden. När träningsprocessen fortskrider utvärderas sedan modellernas förutsägelser mot kända etikettvärden och filtervikterna justeras för att förbättra noggrannheten. Så småningom använder den tränade klassificeringsmodellen för fruktbilder de filtervikter som bäst extraherar funktioner som hjälper till att identifiera olika typer av frukt.

Följande diagram visar hur en CNN för en bildklassificeringsmodell fungerar:

Diagram av ett konvolutionellt neuralt nätverk.

  1. Bilder med kända etiketter (till exempel 0: äpple, 1: banan eller 2: orange) matas in i nätverket för att träna modellen.
  2. Ett eller flera filterlager används för att extrahera funktioner från varje bild när de matas via nätverket. Filterkärnorna börjar med slumpmässigt tilldelade vikter och genererar matriser med numeriska värden som kallas funktionskartor. Ytterligare lager kan "poola" eller "minska" funktionsmappningarna för att skapa mindre matriser som framhäver de viktiga visuella funktioner som extraheras av filtren.
  3. Funktionskartarna plattas ut till en endimensionell matris med funktionsvärden.
  4. Funktionsvärdena matas in i ett fullständigt anslutet neuralt nätverk.
  5. Utdataskiktet i det neurala nätverket använder en softmax - eller liknande funktion för att skapa ett resultat som innehåller ett sannolikhetsvärde för varje möjlig klass, till exempel [0.2, 0.5, 0.3].

Under träningen jämförs sannolikheterna för utdata med den faktiska klassetiketten – till exempel ska en bild av en banan (klass 1) ha värdet [0,0, 1,0, 0,0]. Skillnaden mellan de förutsagda och faktiska klasspoängen används för att beräkna förlusten i modellen, och vikterna i det fullständigt anslutna neurala nätverket och filterkärnorna i funktionsextraheringsskikten ändras för att minska förlusten.

Träningsprocessen upprepas över flera epoker tills en optimal uppsättning vikter har lärts. Sedan sparas vikterna och modellen kan användas för att förutsäga etiketter för nya bilder som etiketten är okänd för.

Anmärkning

CNN-arkitekturer innehåller vanligtvis flera convolutional filterlager och ytterligare lager för att minska storleken på funktionskartor, begränsa de extraherade värdena och på annat sätt ändra funktionsvärdena. Dessa lager har utelämnats i det här förenklade exemplet för att fokusera på nyckelbegreppet, vilket är att filter används för att extrahera numeriska funktioner från bilder, som sedan används i ett neuralt nätverk för att förutsäga bildetiketter.