Convolutionele neurale netwerken
Opmerking
Zie het tabblad Tekst en afbeeldingen voor meer informatie.
De mogelijkheid om filters te gebruiken om effecten op afbeeldingen toe te passen, is handig bij het verwerken van afbeeldingen, zoals u kunt uitvoeren met software voor het bewerken van afbeeldingen. Het doel van computer vision is echter vaak het extraheren van betekenis, of ten minste bruikbare inzichten, uit afbeeldingen; hiervoor moeten machine learning-modellen worden gemaakt die zijn getraind om kenmerken te herkennen op basis van grote hoeveelheden bestaande afbeeldingen.
Aanbeveling
In deze les wordt ervan uitgegaan dat u bekend bent met de basisprincipes van machine learning en dat u conceptuele kennis hebt van deep learning met neurale netwerken. Als u geen kennis hebt met machine learning, kunt u de module Inleiding tot machine learning-concepten in Microsoft Learn voltooien.
Een van de meest voorkomende machine learning-modelarchitecturen voor Computer Vision is een convolutionele neurale netwerk (CNN), een type deep learning-architectuur. CNN's gebruiken filters voor het extraheren van numerieke functietoewijzingen uit afbeeldingen en voeren vervolgens de functiewaarden in een Deep Learning-model in om een labelvoorspelling te genereren. In een afbeeldingsclassificatiescenario vertegenwoordigt het label bijvoorbeeld het hoofdonderwerp van de afbeelding (met andere woorden, waar is dit een afbeelding van?). U kunt een CNN-model trainen met afbeeldingen van verschillende soorten fruit (zoals appel, banaan en sinaasappel), zodat het label dat wordt voorspeld het type fruit in een bepaalde afbeelding is.
Tijdens het trainingsproces voor een CNN worden filterkernels in eerste instantie gedefinieerd met behulp van willekeurig gegenereerde gewichtswaarden. Naarmate het trainingsproces vordert, worden de voorspellingen van modellen geëvalueerd op basis van bekende labelwaarden en worden de filtergewichten aangepast om de nauwkeurigheid te verbeteren. Uiteindelijk gebruikt het getrainde model voor afbeeldingsclassificatie van fruit de filtergewichten die de beste kenmerken extraheren die helpen verschillende soorten fruit te identificeren.
In het volgende diagram ziet u hoe een CNN voor een afbeeldingsclassificatiemodel werkt:
- Afbeeldingen met bekende labels (bijvoorbeeld 0: appel, 1: banaan of 2: oranje) worden ingevoerd in het netwerk om het model te trainen.
- Een of meer lagen filters worden gebruikt om functies uit elke afbeelding te extraheren terwijl deze via het netwerk worden ingevoerd. De filterkernels beginnen met willekeurig toegewezen gewichten en genereren matrices met numerieke waarden die functietoewijzingen worden genoemd. Aanvullende lagen kunnen de kenmerktoewijzingen 'poolen' of 'verkleinen' om kleinere matrices te creëren die de belangrijkste visuele kenmerken benadrukken die door de filters zijn geëxtraheerd.
- De feature maps worden platgemaakt in een ééndimensionale array van kenmerkwaarden.
- De functiewaarden worden ingevoerd in een volledig verbonden neuraal netwerk.
- De uitvoerlaag van het neurale netwerk maakt gebruik van een softmax of vergelijkbare functie om een resultaat te produceren dat een waarschijnlijkheidswaarde voor elke mogelijke klasse bevat, bijvoorbeeld [0.2, 0,5, 0,3].
Tijdens het trainen worden de uitvoerkansen vergeleken met het werkelijke klasselabel, bijvoorbeeld een afbeelding van een banaan (klasse 1) moet de waarde [0,0, 1.0, 0,0 hebben]. Het verschil tussen de voorspelde en werkelijke klassescores wordt gebruikt om het verlies in het model te berekenen en de gewichten in het volledig verbonden neurale netwerk en de filterkernels in de functieextractielagen worden gewijzigd om het verlies te verminderen.
Het trainingsproces herhaalt zich over meerdere tijdvakken totdat een optimale reeks gewichten is geleerd. Vervolgens worden de gewichten opgeslagen en kan het model worden gebruikt om labels te voorspellen voor nieuwe afbeeldingen waarvoor het label onbekend is.
Opmerking
CNN-architecturen bevatten meestal meerdere convolutionele filterlagen en extra lagen om de grootte van functietoewijzingen te verminderen, de geëxtraheerde waarden te beperken en de functiewaarden anders te manipuleren. Deze lagen zijn weggelaten in dit vereenvoudigde voorbeeld om te focussen op het belangrijkste concept, dat wil zeggen dat filters worden gebruikt voor het extraheren van numerieke functies uit afbeeldingen, die vervolgens worden gebruikt in een neuraal netwerk om afbeeldingslabels te voorspellen.