Konvolutionelle neurale netværk

Fuldført

Seddel

Se fanen Tekst og billeder for flere detaljer!

Muligheden for at bruge filtre til at anvende effekter på billeder er nyttig i billedbehandlingsopgaver, f.eks. når du udfører billedredigeringssoftware. Målet med computersyn er dog ofte at udtrække betydning eller i det mindste handlingsvisende indsigt fra billeder; hvilket kræver oprettelse af modeller til maskinel indlæring, der er oplært til at genkende funktioner, der er baseret på store mængder eksisterende billeder.

Tips

I dette undermodul antages det, at du kender de grundlæggende principper for maskinel indlæring, og at du har en konceptuel viden om dyb læring med neurale netværk. Hvis du er ny bruger af maskinel indlæring, kan du overveje at fuldføre modulet Introduktion til begreber i maskinel indlæring på Microsoft Learn.

En af de mest almindelige arkitekturer for modeller til maskinel indlæring til computer vision er en convolutional neural network (CNN), en type deep learning-arkitektur. CNN'er bruger filtre til at udtrække numeriske funktionskort fra billeder og derefter overføre funktionsværdierne til en detaljeret læringsmodel for at generere en etiketforudsigelse. I et billedklassificering scenarie repræsenterer etiketten f.eks. billedets hovedemne (med andre ord, hvad er dette et billede af?). Du kan oplære en CNN-model med billeder af forskellige slags frugt (f.eks. æble, banan og orange), så den forudsagte mærkat er frugttypen i et givet billede.

Under den oplæringsproces for et CNN defineres filterkerner indledningsvist ved hjælp af tilfældigt genererede vægtværdier. Efterhånden som oplæringsprocessen skrider frem, evalueres modellernes forudsigelser i forhold til kendte mærkatværdier, og filtervægtene justeres for at forbedre nøjagtigheden. Til sidst bruger den oplærte model til klassificering af frugtbilleder de filtervægte, der bedst udtrækker funktioner, der hjælper med at identificere forskellige slags frugt.

I følgende diagram illustreres det, hvordan en CNN for en model til billedklassificering fungerer:

Diagram over et konvolutionelt neuralt netværk.

  1. Billeder med kendte mærkater (f.eks. 0: apple, 1: banan eller 2: orange) føres ind i netværket for at oplære modellen.
  2. Et eller flere lag af filtre bruges til at udtrække funktioner fra hvert billede, når det føres via netværket. Filterkernerne starter med tilfældigt tildelte vægte og genererer matrixer af numeriske værdier, der kaldes funktionskort. Yderligere lag kan "gruppere" eller "reducere" funktionskortene for at oprette mindre matrixer, der fremhæver de vigtigste visuelle funktioner, der udtrækkes af filtrene.
  3. Funktionsoversigterne flades ud til en enkeltdimensionel matrix af funktionsværdier.
  4. Funktionsværdierne føres ind i et fuldt forbundet neuralt netværk.
  5. Outputlaget i det neurale netværk bruger en softmax- eller lignende funktion til at producere et resultat, der indeholder en sandsynlighedsværdi for hver mulige klasse, f.eks. [0.2, 0.5, 0.3].

Under oplæringen sammenlignes outputsandsynlighederne med den faktiske klasseetiket – f.eks. skal et billede af en banan (klasse 1) have værdien [0.0, 1.0, 0.0]. Forskellen mellem de forudsagte og faktiske klassescores bruges til at beregne tab i modellen, og vægterne i det fuldt forbundne neurale netværk og filterkernerne i funktionsudtrækningslagene ændres for at reducere tabet.

Træningsprocessen gentages over flere epoker indtil et optimalt sæt vægte er blevet lært. Derefter gemmes vægterne, og modellen kan bruges til at forudsige mærkater for nye billeder, som mærkaten er ukendt for.

Seddel

CNN-arkitekturer omfatter normalt flere konvolutionelle filterlag og yderligere lag for at reducere størrelsen af funktionskort, begrænse de udtrukne værdier og på anden måde manipulere funktionsværdierne. Disse lag er udeladt i dette forenklede eksempel for at fokusere på nøglebegrebet, dvs. at filtre bruges til at udtrække numeriske funktioner fra billeder, som derefter bruges i et neuralt netværk til at forudsige billedmærkater.