Voordat Artificiële Intellegentie klaar is om in praktijk gebruikt te worden, gaat er een uitgebreid leerproces aan vooraf waarbij het algoritme getraind wordt op basis van beelden waarvan het ‘juiste’ resultaat handmatig is aangeduid. Dit betekent dat mensen voor een groot aantal afbeeldingen hebben aangegeven of de afbeelding bijvoorbeeld een gezonde of zieke plant laat zien of dat ze scheuren in een betonnen plafond hebben vastgesteld of niet. Het is duidelijk dat het voorbereiden van een goede reeks oefeningen en validatietests cruciaal is voor de uiteindelijke prestaties van het alogritme. Maar hoe begin je daar nu aan?
Een belangrijk uitgangspunt bij het verzamelen van data is de idee dat ‘deep-learning’ algoritmen, vaak zelfs voor professionals, zwarte dozen zijn die een output voor elke input berekenen. Deze programma’s wijzigen in wezen een reeks variabelen in een ongelooflijk complexe functie die het invoerbeeld omzet naar de gewenste uitvoer. Aangezien er gemakkelijk meer dan 1 miljoen variabelen kunnen zijn, is het duidelijk dat u als gebruiker niet kan begrijpen ‘hoe’ deze algoritmen tot een conclusie komen. Alle informatie die u wilt dat het algoritme heeft, moet dus in de dataset staan die u verstrekt.
Laten we, om een eenvoudig voorbeeld te geven, aannemen dat u de AI deze twee oefeningen geeft: ‘5-3 = 2’ en ‘8-6 = 2’. Zal het algoritme hieruit leren hoe het kan aftrekken? Mogelijk. De kans bestaat echter dat het leert om op elke vraag 2 te antwoorden. In tegenstelling tot mensen, worden AI-algoritmen niet gedreven door een aangeboren verlangen om (hersen)activiteit te minimaliseren. Er is echter een duidelijk willekeurig element in het leerproces, waardoor het mogelijk is dat, als er een shortcut-redenering bestaat die leidt tot bovengemiddelde correcte resultaten, het algoritme dit oppikt. De oplossing voor dit probleem is duidelijk om de trainingsset gevarieerder te maken en voorbeelden van aftrekkingen met alle mogelijke uitkomsten op te nemen.
Het hierboven beschreven probleem staat doorgaans bekend als bias en is een van de grootste valkuilen bij het verzamelen van gegevens. Deze kunnen te wijten zijn aan ‘eenvoudige’ problemen met het object dat wordt bestudeerd: bijv. alle honden rennen, terwijl alle katten slapen. Er kunnen echter ook meer subtiele veranderingen in omgevingsomstandigheden optreden. Het kan bijvoorbeeld zijn dat je alleen buiten op klaarlichte dag foto’s hebt verzameld van roestige metalen balken, terwijl alle goede foto’s met metalen balken binnenshuis zijn gemaakt. Dan is er duidelijk een mogelijkheid dat de verschillende lichtomstandigheden invloed kunnen hebben op het AI-algoritme (bijvoorbeeld door de iso-instelling die automatisch door de camera wordt gekozen).
De beste oplossing voor bias is om de diversiteit van de trainingsdataset te maximaliseren. Zorg ervoor dat u een diverse set objecten in alle mogelijke omstandigheden opneemt. Probeer ook in verschillende lichtomstandigheden, met andere acquisitie-instellingen en zelfs met verschillende camera’s of lenzen op te nemen. Als de omgevingsinvloeden voldoende gerandomiseerd zijn, is het onwaarschijnlijk dat het AI-algoritme ze zal gebruiken om zijn beslissing te sturen. Merk op dat er na de acquisitie ook behoorlijk wat randomisatie kan worden verkregen door de afbeeldingen ‘digitaal’ te roteren, bij te snijden, te zoomen of de intensiteitswaarden direct te veranderen (ruis toevoegen, tint veranderen of gemiddelde intensiteit …).
Als neveneffect van het vergroten van de diversiteit, zal het totaal aantal afbeeldingen in de trainingsdataset toenemen. Hoeveel afbeeldingen er nodig zijn, hangt sterk af van de taak die voorhanden is. Als u al een algoritme heeft dat een vergelijkbare taak kan uitvoeren, kan het aantal afbeeldingen in de orde van 100 afbeeldingen zijn. Zo niet, dan hebben we het over 1.000 tot zelfs 10.000 afbeeldingen. Hoewel het aangeven van de exacte locatie van objecten in afbeeldingen al minuten kan duren, kunnen andere annotaties andere stappen vereisen (labo-analyse van monsters) voordat een beslissing kan worden genomen. In elk geval kan de tijd die nodig is voor de gegevensannotatie gemakkelijk de kosten van het vastleggen van gegevens en algoritme-training omzeilen. Daarom is het van vitaal belang om dit proces zo efficiënt mogelijk te laten verlopen.
Voordat we dit proberen te optimaliseren, kunnen we best eerst de verschillende soorten gegevensannotaties beschrijven die voor afbeeldingen bestaan. Zoals te zien is in de onderstaande afbeelding, is er een groot verschil in annotatie, afhankelijk van of u een volledige afbeelding in een of meer categorieën wilt classificeren, of dat u een of meerdere objecten in een afbeelding wilt lokaliseren. In het geval van classificatie bestaat annotatie meestal uit het maken van één map voor elk type en het kopiëren van elke trainingsafbeelding naar de juiste map. In het eenvoudigste geval van lokalisatie kunt u selectiekaders opgeven om de locatie van alle identificeerbare objecten in de afbeelding aan te geven.
AI-algoritmen zijn tegenwoordig echter in staat tot een veel fijnmazigere herkenning en kunnen worden getraind om op pixelniveau te detecteren waar de kat in de bovenstaande afbeelding zich bevindt. Om dat te doen, bestaat annotatie uit het maken van nauwkeurige maskers die voor elke pixel aangeven tot welke klasse deze behoort. Dit wordt segmentatie genoemd en in bovenstaande afbeelding is dit aangetoond voor de kattenklasse. Men zou echter ook de klassen deken, mand, vloer en radiator in de afbeelding kunnen aangeven en bij voldoende voorbeelden zal het algoritme deze klassen in elke afbeelding gaan herkennen.
Er is een gigantisch verschil is in de benodigde inspanning per object in deze twee lokalisatietechnieken: bounding box lokalisatie versus segmentatie. Uit de literatuur is bekend dat segmentatie van een object door de contouren ervan te volgen met een schildersoftware gemakkelijk 2 minuten per object kan duren. Een effectievere benadering is om computerondersteuning te hebben tijdens het traceren. Er zijn talloze artikels en open-sourcecodes geschreven waarin een interactieve segmentatiebenadering wordt gevolgd, waarbij de gebruiker de computer iteratief helpt bij het detecteren van de grenzen van het object.
Het kan echter ook een goed idee zijn om samen te werken met het AI-algoritme dat u probeert te trainen. Hoewel het een speciale setup vereist, kan men het algoritme zo ontwerpen dat het een extra input accepteert waarop je goede en slechte zones voor de segmentatie kunt aangeven. Op deze manier kunt u, na het uitvoeren van een eerste training, het algoritme vragen om een eerste schatting van de locatie van het object. Door wat krabbels of klikken uit te voeren, kan het algoritme de schatting in een volgende ronde bijwerken. Over het algemeen hebben al deze semi-automatische of ‘human-in-the-loop’ annotatiestrategieën de belofte om de annotatiekosten met één orde van grootte te verlagen. Maar toch, zelfs met lagere kosten per afbeelding, zijn de totale annotatiekosten die nodig zijn voor b.v. een zelfrijdende auto al snel meerdere persoonsjaren.
Naast het verlagen van de kosten per afbeelding, hebben mensen ook manieren onderzocht om het aantal afbeeldingen dat nodig is om een bepaald nauwkeurigheidsdoel te bereiken, te verminderen. In dit tijdperk van ‘big data’ en snelle computers ligt de bottleneck niet langer bij het aantal afbeeldingen dat we kunnen vastleggen of verwerken, maar eerder bij de menselijke inspanning die nodig is voor de annotatie. Als gevolg hiervan beperken bedrijven tegenwoordig vaak het maximale annotatiebudget en proberen ze de maximale nauwkeurigheid te bereiken, of omgekeerd, stellen ze een doelnauwkeurigheid in en proberen ze het annotatiebudget te minimaliseren.
Hoe kan men 100 afbeeldingen selecteren uit een voorraad van 10.000 afbeeldingen en ervoor zorgen dat aan ‘de diversiteit wordt voldaan’? Je wilt niet dat een mens naar elk van deze 10.000 afbeeldingen kijkt en de meest uiteenlopende maar representatieve voorbeelden van de verschillende klassen kiest. Op deze manier loopt u het risico het budget te overschrijden voordat u de eerste annotatie uitvoert. Dus op de een of andere manier moeten we een manier bedenken waarop de computer deze 10.000 afbeeldingen kan bekijken en een diverse set kan selecteren om te annoteren.
Vooral wat het algoritme als ‘moeilijk’ beschouwt, zal evolueren naarmate meer afbeeldingen worden geannoteerd en aan het algoritme worden toegevoerd. Als zodanig is het geen goed idee om van tevoren te beslissen over de hele reeks afbeeldingen die moeten worden geannoteerd. Een veel betere benadering is om het totale annotatiebudget in meerdere rondes op te splitsen en het algoritme de overige plaatjes te laten rangschikken op basis van het huidige ‘kennisniveau’. Deze hechte koppeling tussen training en annotatiefase kan nog sterker zijn als het algoritme ook wordt gebruikt bij de segmentatie-inspanning, zoals eerder vermeld.
Auteur
SAM DEHAECK
Sam is een onderzoeker met ruime ervaring in optische metingen en beeldverwerking. Terwijl hij zich in zijn vorige projecten focuste op opmeten van verdampingsfenomenen en andere stromingsmechanica problemen, is hij bij Flanders Make de wondere wereld van de artificiële intelligentie binnengestapt.
Contacteer EUKA/Flanders Make voor meer informatie
Updates en nieuwe artikels ontvangen in je mailbox? Schrijf je dan snel in voor onze nieuwsbrief!