AI-basisprincipes

Hoe Werkt Beeldclassificatie?

mm
Voeg Unite.AI toe aan je voorkeursbronnen op Google

Hoe kan je telefoon bepalen wat een object is door alleen maar een foto te maken? Hoe kunnen sociale media-websites automatisch personen taggen in foto’s? Dit gebeurt door middel van AI-geactiveerde beeldherkenning en classificatie.

De herkenning en classificatie van beelden is wat veel van de indrukwekkendste prestaties van kunstmatige intelligentie mogelijk maakt. Maar hoe leren computers beelden te detecteren en te classificeren? In dit artikel zullen we de algemene methoden behandelen die computers gebruiken om beelden te interpreteren en te detecteren, en vervolgens kijken we naar enkele van de meest populaire methoden voor het classificeren van deze beelden.

Pixelniveau vs. Objectgebaseerde Classificatie

Beeldclassificatietechnieken kunnen hoofdzakelijk in twee verschillende categorieën worden onderverdeeld: pixelgebaseerde classificatie en objectgebaseerde classificatie.

Pixel zijn de basis eenheden van een beeld, en de analyse van pixel is de primaire manier waarop beeldclassificatie wordt gedaan. Echter, classificatie-algoritmen kunnen ofwel alleen de spectrale informatie binnen individuele pixel gebruiken om een beeld te classificeren, ofwel ruimtelijke informatie (dichtbijgelegen pixel) samen met de spectrale informatie onderzoeken. Pixelgebaseerde classificatiemethoden gebruiken alleen spectrale informatie (de intensiteit van een pixel), terwijl objectgebaseerde classificatiemethoden zowel pixel spectrale informatie als ruimtelijke informatie in overweging nemen.

Er zijn verschillende classificatietechnieken die worden gebruikt voor pixelgebaseerde classificatie. Deze omvatten minimum-afstand-tot-het-gemiddelde, maximum-waarschijnlijkheid en minimum-Mahalanobis-afstand. Deze methoden vereisen dat de gemiddelden en varianties van de klassen bekend zijn, en ze werken allemaal door de “afstand” tussen klasse-gemiddelden en de doelpixel te onderzoeken.

Pixelgebaseerde classificatiemethoden zijn beperkt door het feit dat ze geen informatie van andere nabijgelegen pixel kunnen gebruiken. In tegenstelling tot objectgebaseerde classificatiemethoden kunnen deze andere pixel en dus ook ruimtelijke informatie gebruiken om items te classificeren. Let op dat “object” alleen maar verwijst naar aaneengesloten gebieden van pixel en niet naar het feit of er een doelobject binnen dat gebied van pixel is.

Voorverwerking van Beeldgegevens voor Objectdetectie

De meest recente en betrouwbare beeldclassificatiesystemen gebruiken voornamelijk objectniveau-classificatieschema’s, en voor deze benaderingen moeten beeldgegevens op specifieke manieren worden voorbereid. De objecten/gebieden moeten worden geselecteerd en voorverwerkt.

Voordat een beeld en de objecten/gebieden binnen dat beeld kunnen worden geclassificeerd, moet de gegevens die dat beeld vormen, worden geïnterpreteerd door de computer. Beelden moeten worden voorverwerkt en klaargemaakt voor invoer in het classificatie-algoritme, en dit gebeurt door middel van objectdetectie. Dit is een kritisch onderdeel van het voorbereiden van de gegevens en het voorbereiden van de beelden om de machine learning-classificator te trainen.

Objectdetectie wordt gedaan met verschillende methoden en technieken. Om te beginnen, of er één object van interesse is of meerdere objecten van interesse, heeft invloed op hoe de beeldvoorverwerking wordt afgehandeld. Als er slechts één object van interesse is, ondergaat het beeld beeldlocalisatie. De pixel die het beeld vormen, hebben numerieke waarden die door de computer worden geïnterpreteerd en gebruikt om de juiste kleuren en tinten weer te geven. Een object dat bekend staat als een begrenzingsvak wordt getekend rond het object van interesse, wat de computer helpt om te weten welk deel van het beeld belangrijk is en welke pixelwaarden het object definiëren. Als er meerdere objecten van interesse in het beeld zijn, wordt een techniek genaamd objectdetectie gebruikt om deze begrenzingsvakken toe te passen op alle objecten in het beeld.

Foto: Adrian Rosebrock via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Intersection_over_Union_-_object_detection_bounding_boxes.jpg)

Een andere methode van voorverwerking is beeldsegmentatie. Beeldsegmentatie werkt door het hele beeld te verdelen in segmenten op basis van gelijke kenmerken. Verschillende delen van het beeld zullen gelijke pixelwaarden hebben in vergelijking met andere delen van het beeld, dus worden deze pixel samengevoegd in beeldmaskers die overeenkomen met de vorm en grenzen van de relevante objecten in het beeld. Beeldsegmentatie helpt de computer om de kenmerken van het beeld te isoleren die zullen helpen om een object te classificeren, net zoals begrenzingsvakken doen, maar ze bieden veel nauwkeurigere, pixelniveau-etiketten.

Nadat de objectdetectie of beeldsegmentatie is voltooid, worden labels toegepast op de betreffende gebieden. Deze labels worden, samen met de waarden van de pixel die het object vormen, gevoerd in de machine learning-algoritmen die patronen zullen leren die geassocieerd zijn met de verschillende labels.

Machine Learning-algoritmen

Zodra de gegevens zijn voorbereid en gelabeld, worden de gegevens gevoerd in een machine learning-algoritme, dat getraind wordt op de gegevens. We zullen enkele van de meest voorkomende soorten machine learning beeldclassificatie-algoritmen hieronder behandelen.

K-Nearest Neighbors

K-Nearest Neighbors is een classificatie-algoritme dat de dichtstbijzijnde trainingsvoorbeelden onderzoekt en naar hun labels kijkt om de meest waarschijnlijke label voor een gegeven testvoorbeeld te bepalen. Wanneer het gaat om beeldclassificatie met KNN, worden de kenmerkvector en labels van de trainingsbeelden opgeslagen en wordt alleen de kenmerkvector doorgegeven aan het algoritme tijdens het testen. De trainings- en testkenmerkvector worden vervolgens vergeleken met elkaar voor gelijkenis.

KNN-gebaseerde classificatie-algoritmen zijn extreem eenvoudig en ze kunnen gemakkelijk omgaan met meerdere klassen. Echter, KNN berekent gelijkenis op basis van alle kenmerken gelijk. Dit betekent dat het gevoelig kan zijn voor misclassificatie wanneer het wordt geconfronteerd met beelden waarbij alleen een subset van de kenmerken belangrijk is voor de classificatie van het beeld.

Support Vector Machines

Support Vector Machines zijn een classificatie-methode die punten in de ruimte plaatst en vervolgens scheidingen trekt tussen de punten, waardoor objecten in verschillende klassen worden geplaatst, afhankelijk van welke kant van het scheidingvlak de punten vallen. Support Vector Machines zijn in staat om niet-lineaire classificatie uit te voeren door middel van een techniek genaamd de kernel-truc. Terwijl SVM-classificatoren vaak zeer nauwkeurig zijn, is een aanzienlijk nadeel van SVM-classificatoren dat ze vaak worden beperkt door zowel grootte als snelheid, waarbij de snelheid lijdt naarmate de grootte toeneemt.

Multi-Layer Perceptrons (Neurale Netwerken)

Multi-layer perceptrons, ook wel neurale netwerkmodellen genoemd, zijn machine learning-algoritmen geïnspireerd door de menselijke hersenen. Multilayer perceptrons bestaan uit verschillende lagen die met elkaar zijn verbonden, net zoals neuronen in de menselijke hersenen met elkaar zijn verbonden. Neurale netwerken maken aannamen over hoe de invoerkenmerken zijn gerelateerd aan de klassen van de gegevens en deze aannamen worden aangepast tijdens het trainingsproces. Eenvoudige neurale netwerkmodellen zoals de multilayer perceptron zijn in staat om niet-lineaire relaties te leren, en als gevolg daarvan kunnen ze veel nauwkeuriger zijn dan andere modellen. Echter, MLP-modellen lijden aan enkele opvallende problemen, zoals de aanwezigheid van niet-convexe verliesfuncties.

Diepe Leer-algoritmen (CNN’s)

Foto: APhex34 via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Typical_cnn.png)

Het meest gebruikte beeldclassificatie-algoritme in de laatste tijd is het Convolutional Neural Network (CNN’s). CNN’s zijn aangepaste versies van neurale netwerken die multilayer neurale netwerken combineren met gespecialiseerde lagen die in staat zijn om de kenmerken te extraheren die het meest belangrijk en relevant zijn voor de classificatie van een object. CNN’s kunnen automatisch ontdekken, genereren en leren van beeldkenmerken. Dit vermindert sterk de noodzaak om handmatig labels en segmenten toe te voegen aan beelden om ze voor te bereiden op machine learning-algoritmen. Ze hebben ook een voordeel ten opzichte van MLP-netwerken omdat ze om kunnen gaan met niet-convexe verliesfuncties.

Convolutional Neural Networks krijgen hun naam van het feit dat ze “convoluties” creëren. CNN’s werken door een filter te nemen en deze over een beeld te schuiven. Je kunt dit zien als het bekijken van delen van een landschap door een beweegbare venster, waarbij je je alleen richt op de kenmerken die zichtbaar zijn door het venster op een bepaald moment. De filter bevat numerieke waarden die worden vermenigvuldigd met de waarden van de pixel zelf. Het resultaat is een nieuw kader, of matrix, vol met nummers die het oorspronkelijke beeld vertegenwoordigen. Dit proces wordt herhaald voor een gekozen aantal filters, en vervolgens worden de kaders samengevoegd tot een nieuw beeld dat iets kleiner en minder complex is dan het oorspronkelijke beeld. Een techniek genaamd pooling wordt gebruikt om alleen de meest belangrijke waarden binnen het beeld te selecteren, en het doel is dat de convolutionele lagen uiteindelijk alleen de meest opvallende delen van het beeld extraheren die zullen helpen om de objecten in het beeld te herkennen.

Convolutional Neural Networks bestaan uit twee verschillende delen. De convolutionele lagen zijn wat de kenmerken van het beeld extraheren en omzetten in een formaat dat de neurale netwerklaag kan interpreteren en leren van. De vroege convolutionele lagen zijn verantwoordelijk voor het extraheren van de meest basale elementen van het beeld, zoals eenvoudige lijnen en grenzen. De middelste convolutionele lagen beginnen complexere vormen te extraheren, zoals eenvoudige bochten en hoeken. De latere, diepere convolutionele lagen extraheren de hoogste kenmerken van het beeld, die worden doorgegeven aan het neurale netwerkdeel van de CNN, en zijn wat de classificator leert.

Blogger en programmeur met specialisaties in Machine Learning en Deep Learning onderwerpen. Daniel hoopt anderen te helpen de kracht van AI te gebruiken voor het sociale goede.