Denk je dat onze experimenten die we deden met onze webcam en teachable machine bruikbaar zijn in een echte toepassing?
In sommige gevallen zou dat kunnen. De algoritmes achter teachable machine zijn immers erg degelijk. Toch zal dit meestal niet lukken omdat we met onze webcam vaak te weinig variatie in onze dataset krijgen om een model te maken dat bruikbaar is in een echte toepassing.
In deze opdracht gaan jullie proberen om een bruikbare data-set te maken. Hiervoor zal je beelden maken met je smartphone of beelden zoeken op het internet.
Bij het trainen van een model zal je voldoende data, in dit geval foto's moeten verzamelen om je model te trainen. Je zal ook moeten zorgen dat je van alle categorieën of classes voldoende beelden hebt. Hoe meer beelden je training-set bevat, hoe beter je model getraind kan worden.
Wanneer je echt een model wil trainen zal je ook een test-set moeten maken. Hiermee kan je je model gaan testen nadat het getraind is. Zo kan je te weten komen hoe goed je model getraind is en hoe nauwkeurig je model correct kan voorspellen. Deze test-set mag dus zeker geen beelden bevatten die al in de data-set zaten. Die werden immers al gebruikt om het model te trainen en zouden dus normaal zeker herkend moeten worden. Ze geven zo geen correct beeld van de bruikbaarheid van je model.
In Teachable Machine wordt de opdeling training-data en test-data voor jou gedaan. Van je beelden wordt 85% gebruikt om je model te trainen, 15% wordt gebruikt als test-set.
Bij beeldherkenning gaat ons algoritme op zoek naar gemeenschappelijke kenmerken bij beelden. Een algoritme 'weet' bijvoorbeeld niet wat een hond is, of wat een verkeerslicht is, dus het gaat gewoon op zoek naar patronen. De beelden worden 'gescand' als een enorme reeks pixels. Hierbij wordt gekeken naar kleuren, randen, patronen in lijnen of vlekken, lichte en donkere zones die in bepaalde patronen terugkomen, een bepaalde opbouw van het totale beeld die steeds terugkomt...
Je zal dus goed moeten opletten dat je training set voldoende geschikte beelden bevat die bruikbaar zijn om een model te trainen.
Hierboven zie je een voorbeeld van enkele foto's van een training-set en van een test-set om honden te herkennen. Omdat de maker van de training-set toevallig veel foto's van poedels heeft, gebruikt hij deze om zijn model te trainen. Daarna gaat hij het model testen met de test-set, en het resultaat blijkt teleurstellend. Wat is het probleem?
Niet alleen heeft hij enkel poedels in de training-set, bovendien zijn het ook telkens poedels op een fris groene gazon, en ze staan ook nog eens allemaal volledig in beeld.
Zowel de scheper, als de poedel op herfstbladeren als de close-up van de poedel werden daarom niet als 'hond' herkend. Je zal dus moeten vermijden dat je onbewust al patronen of herhalingen in de classes van je training-set steekt.
Enkele tips voor een goede training-set:
- Zorg dat je training-set representatief is voor wat herkend moet worden. Zorg dus dat je er voldoende variatie in steekt (vb: niet enkel poedels voor class 'honden').
- Als je meerdere classes hebt, zorg dan dat je van alle classes voldoende beelden hebt.
- Als je verwacht dat ook andere beelden zullen voorkomen die niet in je classes thuishoren, voorzie dan ook een class 'else' waar voorbeelden van andere beelden inzitten.
- Als je model bruikbaar moet zijn op meerdere locaties, zorg dan voor uiteenlopende achtergronden.
- Zorg dat niet al je beelden dezelfde opbouw hebben (vb: niet alle honden frontaal in het midden en even groot).
- Eventueel volledige en onvolledige beelden voorzien wanneer je denkt dat je beelden niet steeds optimaal in beeld gaan komen.
- Om een model te trainen is het nodig dat afbeeldingen dezelfde vorm hebben. In Teachable Machine worden foto's daarom bijgesneden tot een vierkant. Probeer de beelden die je maakt dus best al zo dicht mogelijk bij een vierkant te houden
Moet je zelf beelden uitsnijden uit bestaande afbeeldingen?
Een andere regel die vaak gebruikt wordt voor het herkennen van dieren/planten etc, is dat je je beeld zo uitsnijdt dat je het beperkt tot alle zichtbare delen van het dier. Zorg bijvoorbeeld dat er geen andere dieren op staan, dat alle delen van de hond op de foto mee worden uitgesneden, dat er geen overbodige delen mee in het beeld komen. Hieronder zie je enkele voorbeelden.
Je zal ook moeten kijken in welke context je model gebruikt zal worden. In een labo kunnen alle afbeeldingen op dezelfde manier gebruikt en gemaakt worden, daar kan je veel eenvormiger werken. In de natuur zal je moeten zorgen voor variatie in achtergrond en oriëntatie van je beeld. Je zal dan eventueel moeten kijken of je model nog wat extra getraind moet worden met beelden waar nog wat extra achtergrondelementen bijkomen.
De opdracht: Voor deze opdracht gaan jullie met je smartphone of met beelden van het internet proberen om een bruikbare data-set te maken. Die gaan jullie dan meteen gebruiken om jullie model te trainen. Jullie krijgen van ons een opdracht voor een concrete situatie, probeer hiervoor de best mogelijke training-set te maken. Een training-set bevat best zoveel mogelijk beelden. Probeer hier zeker voorbij de 50 beelden te gaan en probeer best zelfs aan een 100-tal beelden te raken.