Module 2B - Beeldanalyse Flashcards
Wat is computervisie?
- Tak binnen AI met als doel: beelden interpreteren, zonder menselijke hersenen?
- Voor mensen = beelden herkennen vanzelfsprekend maar hele uitdaging.
Hoe ziet een computer?
- De computer deelt een beeld op in een reeks pixels = kleine gekleurde vierkantjes die samen een beeld vormen: Daarop voert het wiskundige bewerkingen uit, bijvoorbeeld door via de kleurwaarde een plotse overgang te detecteren, en dus randen en vormen te ontdekken. Als je een digitale foto opent op je computer, dan kun je daarvan de resolutie zien: als die 1024x768 is, dan betekent dit dat de foto 1024 pixels breed is en 768 pixels hoog.
- De computer analyseert al deze pixels, en die dienen vervolgens als input of data voor een algoritme.
Hoe worden de pixels omgezet?
- Pixels worden omgezet naar pixelintensiteiten:
- Eendimensioneel: zwart-wit beelden
- Multidimensionaal: kleurenbeelden via RGB-kleurssysteem die voor elke basiskleur een dimensie heeft.
Wat met context in een afbeelding?
- Mensen maken gebruik van context in een afbeelding om zo realistische associates te maken: taak die veel complexer is voor algoritmen die alleen naar bepaalde objecten zoeken zonder de hele scène te interpreteren.
- Mensen leren deze associaties op hoog niveau vanuit ervaring en intuïtie, die erg moeilijk in een algoritme te coderen zijn.
Vooruitgang context herkennen door een computer?
Sterke vooruitgang geboekt:
- Automatische nummerplaatherkenning
- Identiteit herkennen van reizigers
- Aangeven wanneer je auto van het baanvlak dreigt af te wijken
Computervisie-algoritme stappen
- Beeldverwerking of voorverwerkingsstap
- Kenmerk of functie-extractie
- Classificatie
Beeldverwerking of voorverwerkingsstap
- Doel: onbewerkte beeldgegevens verbeteren om de kenmerkextractie te verbeteren of te vergemakkelijken.
- Stappen die veel voorkomen:
- Ruisonderdrukking
- Contrastverbetering
- Achtergrondverwijdering in videosequentie
- Verwijderen van lensvervormingen
Kenmerk- of functie-extractie
- Bedoeld om beschrijvende kenmerken in de afbeelding te detecteren: bv. scherpe randen, hoeken, lokale gradiëntverdelingen,…
Wat is de moeilijkheid bij kenmerk- of functie-extractie
- De kenmerkdetectoren moeten werken onder wisselende omstandigheden. Idealiter is de de kenmerkdescriptor (feature descriptor) even goed voor variabele afmetingen van het object (is hij dus ‘schaalinvariant’), rotaties (‘rotatie-invariant’), verlichtingen
Classificatie bij beeldverwerking?
- Hierbij wordt een eindresultaat berekend voor de afbeelding op basis van de geëxtraheerde kenmerken. Kenmerk A kan bijvoorbeeld aangeven dat er een persoon in de afbeelding staat, terwijl kenmerk B een laag zelfvertrouwen geeft. Het is de taak van de classificator om de informatie van alle kenmerkdescriptoren te combineren tot een eindresultaat.
- Sommige classificaties maken het ook mogelijk om een betrouwbaarheidsscore tussen 0 en 1 te geven voor het resultaat, dat na normalisatie als klassekansen kan worden behandeld.
Computervisie-taken:
- Classificatie
- Lokalisatie
- Objectdetectie
- Segmentatie
Object en segmentatie: veelal op meerdere objecten.
Onderscheid beeldverwerking, computervisie of beeldinterpretatie en beeldgeneratie.
- Beeldverwerking = computer verwerkt de beelden zonder ze verder te interpreteren: beeld in, beeld uit
- Computervisie of beeldinterpretatie, waarbij de computer aangeleerd wordt de beelden te herkennen: beeld in, informatie uit
- Beeldgeneratie: waarbij de computer beelden creëert op basis van instructies: ‘informatie in, beeld uit’
Wat gebruiken we voor beeldinterpretatie?
- Om de inhoud van beelden te herkennen en te interpreteren, maken we gebruik van machinaal leren: uit een grote hoeveelheid voorbeelden, kan de machine achterhalen welke patronen overeenkomen met een bepaald concept, zoals een kat of een hond in een beeld.
- Vooral deep learning wordt hier gebruikt omdat deze erg goed is in omgaan met context en veel doorbraken.
Waarom is deep learning nuttig voor beeldinterpretatie?
- Veel groter aantal lagen dan bij een klassiek neuraal netwerk. Elke laag bestaat uit een groot aantal neuronen, die verbonden zijn met de neuronen uit de vorige laag en de outputs daarvan combineren tot een nieuwe output. Op die manier worden uit een beeld een aantal kenmerken gehaald, zoals randen of hoeken, die dan op hun beurt gecombineerd worden in complexere kenmerken, en zo verder.
Kan je elke functie benaderen via neurale netwerken?
- Met een neuraal netwerk kan je in principe eender welke functie benaderen. Er bestaan dus netwerken die vertrekken van een beeld en daar een klasse-label aan toekennen (bv. is dit een beeld van een kat? of van een hond? is deze persoon blij of triest?), maar ook netwerken die een waarde toekennen aan een beeld (bv. hoe oud schat je de persoon in deze afbeelding?), en bij uitbreiding ook netwerken die een complexere output genereren, zoals de locatie van alle auto’s en voetgangers in een beeld, een segmentatie van een beeld in lucht, vegetatie, gebouwen, personen, etc., of zelfs een volledig nieuw beeld.
Grote uitdaging bij beeldinterpretatie?
- Netwerk trainen omdat de werking van elke neuron afhangt van een groot aantal parameters, die bepalen hoe de outputs van de vorige laag precies gecombineerd moeten worden (=miljoenen parameters!). Voor elk van die parameters moet een geschikte waarde gevonden worden, om ervoor te zorgen dat het netwerk zich gedraagt zoals we verwachten → trainingsdata: input van beelden en correcte outputs (bijbehorende labels):
- Stochastische gradiëntafdeling
Stochastische gradiëntafdaling
- Op een iteratieve manier worden de parameters dan aangepast = stochastische gradiëntafdalig (stochastic gradient descend en/of backpropogation).
- Beide algoritmes worden gebruikt om telkens zeer kleine wijzigingen aan de parameters aan te brengen, om zo de gegenereerde output van het netwerk dichter en dichter bij de outputs t brengen: het verlies, de loss, van een voorspellingsmodel te minimaliseren met betrekking tot trainingsdata
Convolutionele neurale netwerken toepassen op beeldinterpretatie?
- CNN’s zijn een speciaal soort diepe neurale netwerken die over convolutionele lagen beschikken. In tegenstelling tot fully connected, ontvangt hier elke neuron alleen input van een beperkt gebied van de vorige laag = receptieve veld van het neuron: Meestal is het gebied een vierkant (bijv. 5 bij 5 neuronen).
- Dus in elke volgende convolutionele laag neemt elk neuron input van een groter gebied van pixels in het invoerbeeld dan eerdere lagen. Dit komt doordat de convolutie keer op keer wordt toegepast, waarbij rekening wordt gehouden met de waarde van een pixel en de omliggende pixels.
Wat zijn de convoluties bij beeldinterpretatie?
Filterprocessen, waarbij de pixels van een afbeelding op een of andere manier gewogen en/of gecombineerd worden.
Belangrijkste eigenschap CNN’s beeldinterpretatie?
- Ze gaan zelf de relevante filters aanleren, waardoor ze in staat zijn om op basis van trainingsbeelden relevante eigenschappen of features te herkennen die eigen zijn aan het te detecteren object, zoals lichte of donkere plekken (of met een specifieke kleur), randen in verschillende richtingen, patronen, enzovoort. De technische term voor die filters om de kenmerken van een afbeelding te extraheren is kernels.
Feature map
- De convolutionele lagen ‘convolueren’ de invoer en geven het resultaat door aan de volgende laag. Na door een convolutionele laag te zijn gegaan, wordt het beeld geabstraheerd tot een ‘feature map’. Dit is de basis voor het herkennen van abstractere kenmerken, zoals kattenoren, een hondensnuit, een mensenoog of de achthoekige vorm van een stopbord.
Wat heb je nodig voor een feature map?
- Normaal gesproken heel moeilijk om een neuraal netwerk te trainen om zulke kenmerken te herkennen op basis van de pixels van een afbeelding, omdat de kenmerken in verschillende plaatsen, richtingen en formaten op de afbeelding kunnen voorkomen: door het verschuiven van het voorwerp of de camerahoek veranderen de pixelwaarden aanzienlijk, zelfs als het voorwerp zelf er voor ons hetzelfde uitziet.
- We moeten er in slagen dat het neuraal netwerk een stopbord herkent in alle mogelijke omstandigheden → grote hoeveelheid trainingsdata nodig!
- CNN’s kunnen het voorwerp op elke plaats in de afbeelding herkennen, ongeacht waar dit op de trainingsafbeeldingen stond.
Beeldtransformatie over de lagen heen
Slim trucje CNN’s voor hoeveelheid trainingsgegevens onder verschillende omstandigheden te herkennen, te verkleinen?
- Het komt er in feite op neer dat voor veel neuronen dezelfde inputgewichten worden gebruikt, zodat al deze neuronen door hetzelfde patroon worden geactiveerd, maar met verschillende inputpixels.
- We kunnen bijvoorbeeld een neuronenset hebben die wordt geactiveerd door het puntige oor van een kat. Als de input een foto van een kat is, worden er twee neuronen geactiveerd: een voor het linkeroor en een voor het rechteroor.
- Het is ook mogelijk om de inputpixels van het neuron van een groter of kleiner gebied te laten nemen, zodat er door het verschijnen van het oor verschillende neuronen worden geactiveerd op verschillende schalen (formaten), zodat we oren van een kleine kat ook kunnen herkennen als er in de trainingsgegevens uitsluitend afbeeldingen van grote katten zijn opgenomen.
Convolutionele in de onderste lagen bij beeldinterpretatie?
- Hier worden de ruwe inputpixels verwerkt. Gewone neuronen (zoals de perceptron-neuron die we hierboven hebben besproken) bevinden zich in de hogere lagen, waar de output van de onderste lagen wordt verwerkt.
- De onderste lagen kunnen vaak worden getraind met gebruik van ongesuperviseerd leren, zonder specifieke voorspellingstaak. Hun gewichten worden zo aangepast dat ze kenmerken herkennen die vaak voorkomen in de inputgegevens.
- Foto’s van dieren: oren en snuiten = typische kenmerken. Bij gebouwen: bouwkundige onderdelen: muren, daken, ramen,…
Waarom is het interessant dat de kenmerken die de onderste lagen leren min of meer algemeen zijn?
- Als de inputgegevens bestaan uit een mix van verschillende voorwerpen en decors, zullen de kenmerken die de onderste lagen leren, min of meer algemeen zijn. Dit houdt in dat de van tevoren getrainde convolutionele lagen bij veel verschillende beeldverwerkingstaken opnieuw kunnen worden gebruikt.
- Dit is ontzettend belangrijk, omdat op die manier makkelijk onbeperkte hoeveelheden ongelabelde trainingsgegevens kunnen worden verkregen, dus afbeeldingen zonder labels, die kunnen worden gebruikt om de onderste lagen te trainen.
Bovenste lagen bij CNN bij beeldinterpretatie?
- De bovenste lagen daarentegen worden altijd getraind door technieken voor gesuperviseerd machinaal leren, zoals backpropagation. Als een neuraal netwerk heeft geleerd van gegevens, kan het worden gebruikt om voorspellingen te doen (bijvoorbeeld, wat is de probabiliteit dat het gedetecteerde object een kat is).
- Omdat de bovenste lagen van het netwerk gesuperviseerd zijn getraind om bepaalde classificaties of voorspellingen te doen, zijn deze lagen meestal alleen nuttig voor die taak. Een netwerk dat is getraind om stopborden te herkennen, is zinloos voor het herkennen van handgeschreven cijfers of katten.