stomp Hoe werkt beeldclassificatie? - Verenig AI
Verbind je met ons

AI 101

Hoe werkt beeldclassificatie?

mm
Bijgewerkt on

Hoe kan je telefoon bepalen wat een object is door er gewoon een foto van te maken? Hoe taggen sociale-mediawebsites automatisch mensen in foto's? Dit wordt bereikt door middel van AI-aangedreven beeldherkenning en classificatie.

De herkenning en classificatie van afbeeldingen is wat veel van de meest indrukwekkende prestaties van kunstmatige intelligentie mogelijk maakt. Maar hoe leren computers afbeeldingen te detecteren en te classificeren? In dit artikel behandelen we de algemene methoden die computers gebruiken om afbeeldingen te interpreteren en te detecteren, en bekijken we enkele van de meest populaire methoden om die afbeeldingen te classificeren.

Pixelniveau versus objectgebaseerde classificatie

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

Pixels zijn de basiseenheden van een afbeelding en de analyse van pixels is de primaire manier waarop afbeeldingsclassificatie wordt uitgevoerd. Classificatie-algoritmen kunnen echter alleen de spectrale informatie binnen individuele pixels gebruiken om een ​​afbeelding te classificeren of ruimtelijke informatie (pixels in de buurt) samen met de spectrale informatie onderzoeken. Op pixels gebaseerde classificatiemethoden gebruiken alleen spectrale informatie (de intensiteit van een pixel), terwijl objectgebaseerde classificatiemethoden zowel spectrale informatie over pixels als ruimtelijke informatie in aanmerking nemen.

Er zijn verschillende classificatietechnieken die worden gebruikt voor op pixels gebaseerde classificatie. Deze omvatten minimale afstand tot gemiddelde, maximale waarschijnlijkheid en minimale Mahalanobis-afstand. Deze methoden vereisen dat de gemiddelden en varianties van de klassen bekend zijn, en ze werken allemaal door de "afstand" tussen klassengemiddelden en de doelpixels te onderzoeken.

Op pixels gebaseerde classificatiemethoden worden beperkt door het feit dat ze geen informatie van andere nabije pixels kunnen gebruiken. Objectgebaseerde classificatiemethoden kunnen daarentegen andere pixels bevatten en daarom gebruiken ze ook ruimtelijke informatie om items te classificeren. Merk op dat "object" alleen verwijst naar aaneengesloten gebieden van pixels en niet of er al dan niet een doelobject binnen dat gebied van pixels is.

Voorbewerken van beeldgegevens voor objectdetectie

De meest recente en betrouwbare beeldclassificatiesystemen gebruiken voornamelijk classificatieschema's op objectniveau, en voor deze benaderingen moeten beeldgegevens op specifieke manieren worden voorbereid. De objecten/regio's moeten worden geselecteerd en voorbewerkt.

Voordat een afbeelding en de objecten/gebieden binnen die afbeelding kunnen worden geclassificeerd, moeten de gegevens waaruit die afbeelding bestaat, door de computer worden geïnterpreteerd. Afbeeldingen moeten worden voorbewerkt en klaargemaakt voor invoer in het classificatiealgoritme, en dit gebeurt via objectdetectie. Dit is een cruciaal onderdeel van het voorbereiden van de gegevens en het voorbereiden van de afbeeldingen om de machine learning-classificator te trainen.

Objectdetectie is gedaan met een verscheidenheid aan methoden en technieken. Om te beginnen, of er al dan niet meerdere interessante objecten of een enkel interessant object zijn, heeft invloed op de manier waarop de voorverwerking van afbeeldingen wordt afgehandeld. Als er slechts één interessant object is, ondergaat het beeld beeldlokalisatie. De pixels waaruit de afbeelding bestaat, hebben numerieke waarden die door de computer worden geïnterpreteerd en gebruikt om de juiste kleuren en tinten weer te geven. Een object dat een begrenzingskader wordt genoemd, wordt rond het object van interesse getekend, waardoor de computer weet welk deel van de afbeelding belangrijk is en welke pixelwaarden het object definiëren. Als er meerdere interessante objecten in de afbeelding zijn, wordt een techniek genaamd objectdetectie gebruikt om deze begrenzingskaders toe te passen op alle objecten in de afbeelding.

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 manier van voorbewerken is beeldsegmentatie. Beeldsegmentatie functioneert door het hele beeld in segmenten te verdelen op basis van vergelijkbare kenmerken. Verschillende delen van de afbeelding hebben vergelijkbare pixelwaarden in vergelijking met andere delen van de afbeelding, dus deze pixels zijn gegroepeerd in afbeeldingsmaskers die overeenkomen met de vorm en grenzen van de relevante objecten in de afbeelding. Beeldsegmentatie helpt de computer de kenmerken van de afbeelding te isoleren die hem helpen een object te classificeren, net zoals selectiekaders dat doen, maar ze bieden veel nauwkeurigere labels op pixelniveau.

Nadat de objectdetectie of beeldsegmentatie is voltooid, worden labels aangebracht op de betreffende gebieden. Deze labels worden, samen met de waarden van de pixels waaruit het object bestaat, ingevoerd in de machine learning-algoritmen die patronen zullen leren die verband houden met de verschillende labels.

Algoritmen voor machine learning

Nadat de gegevens zijn voorbereid en gelabeld, worden de gegevens ingevoerd in een machine learning-algoritme, dat traint op de gegevens. We behandelen enkele van de meest voorkomende vormen van machine learning algoritmen voor beeldclassificatie hieronder.

K-dichtstbijzijnde buren

K-Nearest Neighbours is een classificatie-algoritme dat de dichtstbijzijnde trainingsvoorbeelden onderzoekt en naar hun labels kijkt om het meest waarschijnlijke label voor een bepaald testvoorbeeld vast te stellen. Als het gaat om beeldclassificatie met behulp van KNN, worden de kenmerkvectoren en labels van de trainingsafbeeldingen opgeslagen en wordt tijdens het testen alleen de kenmerkvector aan het algoritme doorgegeven. De trainings- en testkenmerkvectoren worden vervolgens met elkaar vergeleken op overeenkomst.

Op KNN gebaseerde classificatie-algoritmen zijn uiterst eenvoudig en kunnen vrij gemakkelijk met meerdere klassen omgaan. KNN berekent echter gelijkheid op basis van alle kenmerken gelijk. Dit betekent dat het vatbaar kan zijn voor verkeerde classificatie wanneer het wordt geleverd met afbeeldingen waarbij slechts een subset van de kenmerken belangrijk is voor de classificatie van de afbeelding.

Ondersteuning van vectormachines

Support Vector Machines zijn een classificatiemethode die punten in de ruimte plaatst en vervolgens scheidslijnen tussen de punten trekt, waarbij objecten in verschillende klassen worden geplaatst, afhankelijk van aan welke kant van het scheidingsvlak de punten vallen. Support Vector Machines zijn in staat om niet-lineaire classificatie uit te voeren door middel van een techniek die bekend staat als de kerneltruc. Hoewel SVM-classificaties vaak erg nauwkeurig zijn, is een aanzienlijk nadeel van SVM-classificaties dat ze de neiging hebben om beperkt te worden door zowel de grootte als de snelheid, waarbij de snelheid achteruitgaat naarmate de grootte toeneemt.

Meerlaagse perceptrons (neurale netten)

Meerlaagse perceptrons, ook wel neurale netwerkmodellen genoemd, zijn machine learning-algoritmen die zijn geïnspireerd op het menselijk brein. Meerlaagse perceptrons zijn samengesteld uit verschillende lagen die met elkaar zijn verbonden, net zoals neuronen in het menselijk brein met elkaar zijn verbonden. Neurale netwerken maken aannames over hoe de invoerkenmerken verband houden met de klassen van de gegevens en deze aannames worden in de loop van de training aangepast. Eenvoudige neurale netwerkmodellen zoals het meerlaagse perceptron zijn in staat om niet-lineaire relaties te leren en kunnen daardoor veel nauwkeuriger zijn dan andere modellen. MLP-modellen hebben echter enkele opmerkelijke problemen, zoals de aanwezigheid van niet-convexe verliesfuncties.

Algoritmen voor diep leren (CNN's)

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

Het meest gebruikte algoritme voor beeldclassificatie de laatste tijd is het Convolutional Neural Network (CNN's). CNN's zijn aangepaste versies van neurale netwerken die de meerlaagse neurale netwerken combineren met gespecialiseerde lagen die in staat zijn de kenmerken te extraheren die het belangrijkst en relevantst zijn voor de classificatie van een object. CNN's kunnen automatisch kenmerken van afbeeldingen ontdekken, genereren en leren. Dit vermindert de noodzaak om afbeeldingen handmatig te labelen en te segmenteren om ze voor te bereiden op machine learning-algoritmen aanzienlijk. Ze hebben ook een voordeel ten opzichte van MLP-netwerken omdat ze niet-convexe verliesfuncties aankunnen.

Convolutionele neurale netwerken ontlenen hun naam aan het feit dat ze "convoluties" creëren. CNN's werken door een filter te nemen en dit over een afbeelding te schuiven. U kunt dit zien als het bekijken van delen van een landschap door een verplaatsbaar raam, waarbij u zich concentreert op alleen de kenmerken die op elk moment door het raam zichtbaar zijn. Het filter bevat numerieke waarden die worden vermenigvuldigd met de waarden van de pixels zelf. Het resultaat is een nieuw frame, of matrix, vol getallen die de originele afbeelding vertegenwoordigen. Dit proces wordt herhaald voor een gekozen aantal filters en vervolgens worden de frames samengevoegd tot een nieuwe afbeelding die iets kleiner en minder complex is dan de originele afbeelding. Een techniek die pooling wordt genoemd, wordt gebruikt om alleen de belangrijkste waarden in de afbeelding te selecteren, en het doel is dat de convolutionele lagen uiteindelijk alleen de meest opvallende delen van de afbeelding extraheren, zodat het neurale netwerk de objecten in de afbeelding kan herkennen.

Convolutional Neural Networks bestaan ​​uit twee verschillende delen. De convolutionele lagen extraheren de kenmerken van de afbeelding en zetten ze om in een indeling die de neurale netwerklagen kunnen interpreteren en waarvan ze kunnen leren. De vroege convolutionele lagen zijn verantwoordelijk voor het extraheren van de meest elementaire elementen van het beeld, zoals eenvoudige lijnen en grenzen. De middelste convolutionele lagen beginnen meer complexe vormen vast te leggen, zoals eenvoudige rondingen en hoeken. De latere, diepere convolutionele lagen extraheren de kenmerken op hoog niveau van de afbeelding, die worden doorgegeven aan het neurale netwerkgedeelte van de CNN, en wat de classificator leert.

Blogger en programmeur met specialiteiten in Machine leren en Diepe leren onderwerpen. Daniel hoopt anderen te helpen de kracht van AI te gebruiken voor maatschappelijk welzijn.