Mensen maken in het dagelijks leven enorm veel gebruik van visuele gegevens. Als mens is het vaak erg eenvoudig om snel een specifiek object in een afbeelding te detecteren en de setting te begrijpen. Dit komt vooral doordat we onze hoogontwikkelde hersenen hebben voor het verwerken van de gegevens, in combinatie met een levenslange ervaring om te begrijpen wat we in het dagelijks leven zien. Computervisie is een interdisciplinair wetenschappelijk veld dat zich bezighoudt met hoe computers op hoog niveau inzicht kunnen krijgen uit digitale afbeeldingen of video’s, maar dan zonder het voordeel van menselijke hersenen te kunnen gebruiken.

Aan de rechterkant van de afbeelding hieronder zie je een voorbeeld van de ruwe data waaruit een afbeelding bestaat. Als we een kleur aan elke waarde koppelen, wordt het voor ons als mensen veel gemakkelijker om het beeld te interpreteren. Deze kloof tussen ruwe gegevens en het begrijpen van het beeld is wat computer vision probeert te bereiken op machines / computers zonder de kracht en ervaring van menselijke hersenen.


Bron: https://medium.com/@manishislampur1988/fun-with-cnn-app-to-identify-breed-of-your-doggy-9d3dbd06c513

Een mens maakt ook buitensporig gebruik van de context in een afbeelding, omdat het voor ons gemakkelijk is om de hele scène te begrijpen en realistische associaties te maken; een taak die veel complexer is voor algoritmen die alleen naar bepaalde objecten zoeken zonder de hele scène te interpreteren. Bijvoorbeeld: in de wazige afbeeldingen hieronder classificeert een mens de linker- en rechterobjecten meestal met weinig moeite als respectievelijk ‘auto’ en ‘voetganger’.


Bron: https://homes.esat.kuleuven.be/~joramas/papers/slides/joramas-publicDefense_20150429_0050_short_slides.pdf

De onbewerkte gegevens van beide afbeeldingsvlakken zijn echter hetzelfde, maar 90 graden gedraaid! Dus waarom classificeren we het linkerobject niet als een liggende persoon? Misschien omdat de weg aangeeft dat een auto waarschijnlijker is, of misschien omdat de houding van de hypothetische persoon liggend niet realistisch lijkt, of omdat de grootte van de persoon niet in verhouding staat tot het gebouw op de achtergrond … Mensen leren deze associaties op hoog niveau vanuit ervaring en intuïtie, die erg moeilijk in een algoritme te coderen zijn.

Architectuur van een computervisie-algoritme

Over het algemeen bestaat een computervisie-algoritme doorgaans uit 3 stappen: beeldverwerking (of voorverwerking), kenmerkextractie en kenmerkclassificatie.

1. Voorverwerking

De voorverwerkingsstap heeft tot doel de onbewerkte beeldgegevens te verbeteren om de kenmerkextractie te verbeteren of te vergemakkelijken. Veel voorkomende voorbewerkingsstappen zijn:

  • Ruisonderdrukking (lineaire afvlakking, mediaanfiltering, wavelet-transformaties, …)
  • Contrastverbetering (histogramvereffening, …)
  • Achtergrondverwijdering in videosequentie
  • Verwijderen van lensvervormingen
  • ….

2. Functie-extractie

Deze fase is bedoeld om beschrijvende kenmerken in de afbeelding te detecteren. Enkele veelgebruikte functies zijn:

  • Randen (bijv. scherpe randen)
  • Hoeken (bijvoorbeeld Harris-hoeken)
  • Lokale gradiëntverdelingen (bijvoorbeeld HoG-descriptoren)
  • Blobs (bijvoorbeeld LoH-descriptoren)
  • SIFT-functies

Een typische moeilijkheid is dat de kenmerkdetectoren onder wisselende omstandigheden moeten werken. Idealiter is de kenmerkdescriptor even goed voor variabele afmetingen van het object (schaalinvariant), rotaties (rotatie-invariant), verlichtingen, enz.

3. Classificatie

De classifier berekent een eindresultaat 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 feature descriptors 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. De afbeelding hierboven kan bijvoorbeeld worden ingedeeld in de klasse ‘Angela Merkel’ met een vertrouwen van 0,11 en in de klasse ‘Lena Soderberg’ met een vertrouwen gelijk aan 0,8 en tot de rest-klasse ‘anders’ met een vertrouwen van 0,09. Enkele voorbeelden van classificatiemethoden zijn:

  • Naïeve Bayes-classificator
  • Support Vector Machines (SVM)
  • (Volledig verbonden) neurale netwerken

Ontworpen versus gegevensgestuurde filters

‘Engineered’ of ontworpen filters zijn beeldverwerkingstechnieken die ‘met de hand zijn gemaakt’. De Canny Edge-detector is bijvoorbeeld een algoritme voor het detecteren van randen in een afbeelding. De heer John F. Canny vond dit algoritme uit door na te denken over hoe pixelwaarden kunnen worden gemanipuleerd en verwerkt om lokale gradiëntintensiteiten te detecteren en hoe een stukje code vervolgens kan bepalen of deze gradiënten zijn verbonden om een ​​rand te vormen. De ingenieur moet er ook naar streven zijn algoritme robuust te maken voor variabele omstandigheden zoals variabele schalen, verlichting, occlusies, enz.

Aan de andere kant van het spectrum bevinden zich de datagestuurde filters, een typische vorm van Machine Learning. De datagestuurde filters passen hun filterparameters aan of stemmen deze af op voorbeelddata. Bijvoorbeeld: in plaats van een filter te ontwerpen en hard te coderen voor het berekenen van gradiëntintensiteiten, zou men een generieke filter kunnen definiëren met variabele parameterwaarden. Deze filter kan vervolgens worden getraind op voorbeeldgegevens van afbeeldingen en geannoteerde gradiëntintensiteiten. Op deze manier probeert het de optimale parameterwaarden te leren die een goede mapping tussen de voorbeeldbeeldgegevens en gradiëntintensiteiten mogelijk maken. De resulterende filter wordt dus automatisch afgestemd om goed te werken op de trainingsgegevens.


Bron: https://arxiv.org/ftp/arxiv/papers/1910/1910.13796.pdf

1. Engineered feature extractors + Data-driven classifiers (klassieke benadering)

In de klassieke computer vision-benadering bestaan ​​de voorbewerking en kenmerkextractie uit handgemaakte filters. Dit betekent dat de algoritme-ontwikkelaar de set functies definieert (en hardcodes) die relevant kunnen zijn, en hoe deze functies moeten worden berekend op basis van de onbewerkte afbeeldingsgegevens. Voor gezichtsherkenning zouden bijvoorbeeld kenmerken als de kleur van de ogen, de vorm van de mond en de vorm van de neus als mogelijk relevante kenmerken kunnen worden gekozen. De ontwikkelaar schrijft vervolgens een algoritme om deze kenmerken uit onbewerkte beeldgegevens te extraheren (d.w.z. beeldvoorverwerking + kenmerkextractie).

De classificator daarentegen is typisch datagestuurd. Het neemt de kenmerken die uit voorbeeldgegevens zijn geëxtraheerd als invoer en leert een methode om deze kenmerken te combineren om tot de gewenste geannoteerde resultaten te komen. In ons gezichtsherkenningsvoorbeeld leert de classificeerder dus hoe de typische kenmerken (kleur van de ogen, vorm van mond, vorm van neus) eruit zien voor alle verschillende personen in onze trainingsgegevens. Stel dat we bijvoorbeeld alleen mensen met bruine ogen in onze trainingsdataset hebben, dan kan (en moet) de classificator leren dat de functie ‘oogkleur’ ​​niet relevant is.

2. Alles datagestuurd (deep learning)

Bij deep learning is het gehele computer vision-algoritme datagestuurd (afgezien van mogelijk enkele kleine voorbewerkingsstappen). De architectuur van een dergelijk algoritme is typisch een convolutioneel neuraal netwerk (CNN), dat miljarden variabele parameters heeft die allemaal zijn afgestemd op voorbeeldgegevens. Om de enorme hoeveelheid parameters te laten convergeren naar een geschikte set, is een enorme hoeveelheid trainingsgegevens nodig die zoveel mogelijk relevante variabiliteit in de onbewerkte gegevens dekken. Een belangrijk verschil met de klassieke benadering is dat de feature set niet beperkt is. Dit betekent dat de CNN zeer complexe functies of functies kan leren die een menselijke ingenieur zelf niet zou bedenken.

 

Auteur
PIETER DE CLERCQ
Pieter is een onderzoeker/ingenieur gespecialiseerd in het verwerken van camera en lidar data voor object detectie en perceptie voor autonome voertuigen. Hij heeft ervaring in deep learning en andere takken binnen AI, maar ook in de meer klassieke computer vision en signaalverwerking.

Contacteer EUKA/Flanders Make voor meer informatie
Updates en nieuwe artikels ontvangen in je mailbox? Schrijf je dan snel in voor onze nieuwsbrief!

Pin It on Pinterest