DOOR STEVEN PUTTEMANS. Hoe weet een aardbeiplukrobot waar de aardbeien aan de plant hangen? En hoe onderscheidt hij de rijpe van de onrijpe aardbeien? Ik leg jullie hieronder uit hoe ik die robot dat aanleer!
Artificiële intelligentie is een begrip dat tegenwoordig dagelijks in de media komt. Jammer genoeg koppelen heel wat mensen dit nog steeds aan robots die terminator-gewijs de wereld proberen te veroveren. Als onderzoeker ben ik er echter van overtuigd dat we met AI ook heel wat problemen uit het dagelijks leven kunnen oplossen. Denk maar aan een zelfrijdende auto die moet bepalen waar zijn tegenliggers rijden, welke verkeersborden we passeren of waar de wegmarkering zich bevindt. Ook in de ouderenzorg vinden we heel wat uitdagingen die via deze technieken opgelost kunnen worden. Denk bijvoorbeeld aan een monitorsysteem voor valdetectie bij ouderen.
Voor mijn onderzoek sluit ik camera’s aan op een bestaand computersysteem, waardoor die live beelden van zijn omgeving binnen krijgt. Welke camera’s dat zijn, daar maak ik mij niet zoveel zorgen om, dat kan gaan van een eenvoudige webcam, tot een zeer robuuste industriële camera. Op de live beeldenstroom die toekomt in de computer voer ik vervolgens slimme computeralgoritmes uit de beeldverwerking uit. Zo komt de computer te weten wat er in het beeld te zien is.
Vertellen aan een computer wat er in het beeld te zien is lijkt misschien eenvoudig, maar dat is het zeker niet.
Als mens hebben we het makkelijk.
Vertellen aan een computer wat er in het beeld te zien is lijkt misschien eenvoudig, maar dat is het zeker niet. Nochtans is het voor ons als mens gemakkelijk met één blik op de foto te vertellen wat er te zien is in het beeld. Maar hoe komt dat? Wel, tijdens ons leven van baby tot jongvolwassene krijgen we duizenden voorbeelden te zien van alles wat er in onze omgeving voorkomt. We zien bijvoorbeeld stoelen, een vreemd object met enkele poten, een rugleuning en een zitvlak, en we vragen ons luidop af wat dat eigenlijk is. Op datzelfde moment benoemen mensen in onze omgeving, vaak onbewust, dat dit een stoel is.
Die associatie tussen die duizenden voorbeelden van een stoel en de effectieve benamingen, is een link die in onze hersenen wordt opgebouwd via een complex netwerk van neuronen. We doen dit voor onze volledige omgeving, waardoor we uiteindelijk in onze hersenen een heel complex netwerk opbouwen, dat voor elke combinatie van onderdelen, ons zal vertellen welk label erbij hoort. Zo kunnen we in onze leefruimte stoelen van tafels en zetels onderscheiden, en kennen we als mens het verschil tussen een vork en een mes. Ik probeer een computer diezelfde vaardigheden aan te leren, want uit zichzelf kan die de verbinding niet leggen tussen de duizenden voorbeelden van een stoel en een tafel en daarmee het verband leggen met een objectlabel. Om dit te bereiken, boots ik via complexe beeldverwerkingsalgoritmes het gedrag van onze hersenen na. Ik programmeer software die voor de computer probeert een gelijkaardig complex netwerk uit te bouwen, dat onderdelen koppelt aan labels. En net zoals bij de mens, doen we dat ook voor heel wat verschillende objecten. Hierdoor kent de computer dus ook het onderscheid tussen een stoel en een tafel.
Aardbeien detecteren in 3 stappen
Om jullie concreet uit te leggen hoe we zo’n complex netwerk opbouwen, nemen we een kijkje bij een aardbeiplukrobot. Dat is immers een actueel probleem, iedereen lust graag aardbeien, we vinden het in heel wat producten terug, maar de boer die deze aardbeien moet kweken, die vindt geen mensen meer om al die aardbeien te plukken. Hij zou dus zeer gebaat zijn bij een computersysteem dat volledig zelfstandig de rijpe aardbeien kan lokaliseren en plukken. Het uitbouwen van een algoritme dat de computer vertelt waar die rijpe aardbeien precies hangen, gebeurt in drie grote stappen.
Stap 1: het verzamelen van voldoende beeldmateriaal
Bij elk beeldverwerkingsalgoritme heb je een voorbereidende fase. Daarin verzamelen we heel wat beeldmateriaal van de objectklasse waarvoor we een model willen aanleren, in dit geval aardbeien. We vragen aan de boer om zoveel mogelijk foto’s te maken van aardbeiplanten en dit in zoveel mogelijk omstandigheden. Veel of weinig licht, rijpe of onrijpe aardbeien, aardbeien gedeeltelijk bedekt door bladeren of net duidelijk zichtbaar, … hoe meer variatie er in onze beeldenset zit hoe beter!
Stap 2: het tijdsintensieve manuele labelwerk
Wanneer de beelden bij ons als onderzoeker terugkeren, moet iemand manueel door alle beelden gaan en aanduiden waar de rijpe aardbeien zich bevinden. Die gelabelde data wordt vervolgens aan de computer gegeven, die alle geannoteerde aardbeien uit de afbeelding knipt. Aan al die positieve voorbeelden geven we een aardbeilabel. Alle andere beeldinformatie wordt willekeurig verknipt in extra, negatieve voorbeelden, die het label ‘achtergrond’ krijgen. Op dat moment hebben we een dataset waaruit een objectmodel geleerd kan worden.
Stap 3: het aanleren van ons uiteindelijke aardbeimodel
We voeden de trainingsdata aan het beeldverwerkingsalgoritme dat op basis van al deze voorbeelden een compacte wiskundige voorstelling leert van een aardbei. Het model wordt voorbeeld per voorbeeld bijgestuurd tot de computer een perfecte link kan leggen tussen een afbeelding van een aardbei en het label aardbei. Hoe meer geannoteerde data we aan het leeralgoritme aanbieden, hoe beter hij de link kan leggen tussen object en label.
Op basis van dit aangeleerde model weet de computer nu hoe een rijpe aardbei eruitziet. Als we dit model nu in een aardbeiplukrobot inbouwen, dan kan deze bij het zien van nieuwe beelden, aanduiden waar de rijpe aardbeien zich in het beeld bevinden. Deze coördinaten stuurt hij vervolgens door naar de robotica, waarmee de uiteindelijke aardbei geplukt kan worden.
Uiteraard kan dit principe toegepast worden op veel meer dan een aardbeiplukrobot. We kunnen dit allereerst uitbreiden naar andere gewassen en producten. Maar het gaat veel verder!
Ondertussen werd ons onderzoek voor het lokaliseren van aardbeien in beelden ook opgepikt door de industrie, die volop aan het experimenteren is met de mogelijkheden voor de fruitpluksector. Uiteraard kan dit principe toegepast worden op veel meer dan een aardbeiplukrobot. We kunnen dit allereerst uitbreiden naar andere gewassen en producten. Maar het gaat veel verder! Denk maar aan een postrobot, die automatisch huizen herkent, op zoek gaat naar het correcte huisnummer en jouw pakje achterlaat. Of een automatisch telsysteem in warenhuizen, dat herkent wat er uit het rek wordt weggenomen en vervolgens de tekorten bijbestelt. Zoals je kan lezen, zijn de toepassingsmogelijkheden volgens mij eindeloos.