Nu we onze data-set (hier zijn dat de foto's) hebben verzameld, kunnen we ons model gaan trainen. Een 'model' is een getraind machine learning algoritme.
Meer info over het werken met Teachable Machine vind je op de pagina Machine Learning. Gebruik best de Google Chrome browser.
Wanneer je je foto's hebt verzameld, steek die dan eerst per categorie (class) samen in een map.
Normaal gebruik je 85% van je foto's om je model te trainen en 15% van je foto's om je model na het trainen te testen. Deze foto's mogen niet in de training-set voorkomen. Teachable machine houdt automatisch een test-set opzij, maar hou voor deze opdracht toch van elke categorie (class) 5 beelden apart voor een extra test.
Nu gaan we de foto's die we gebruiken om ons model te trainen uploaden naar Teachable Machine.
Open opnieuw een image project, geef je eerste class een naam en klik op de upload knop, en upload al de foto's van deze categorie. Doe dan hetzelfde voor je andere class(es).
Klik op de Upload knop:
Ga dan naar je bestanden op je computer:
Vanaf daar ziet alles er hetzelfde uit als bij je eerste experiment met Teachable Machine. Je kan nu opnieuw je model gaan trainen.
Vergeet niet je project te downloaden! Zodra je je browservenster hebt afgesloten kan je niet meer aan je project.
Nu ons model getraind is kunnen we gaan kijken hoe nauwkeurig het kan 'voorspellen' of klasseren. Bij elk nieuw beeld dat je aan je model toont, zal je model met een getal tussen 0 en 1 aangeven hoe groot de kans is dat het tot een bepaalde categorie behoort. Op basis van dat getal wordt je beeld in een bepaalde categorie geklasseerd. Hoe dichter het getal bij 1 komt, hoe zekerder het model is van de gemaakte keuze.
Zoals je eerder kon lezen houdt Teachable Machine zo'n 15% van je beelden apart om die te gebruiken voor zo' test. Nu willen we gaan kijken wat die test heeft opgeleverd.
Ga onder 'Training' naar 'Advanced', ga daar onderaan naar 'Under the hood', scroll dan naar beneden tot je 'Accuracy per class' en 'Confusion Matrix' ziet. Die gegevens willen we gebruiken.
Hiernaast zie je het resultaat van een test bij een model dat getraind werd om 'katten' en 'honden' te herkennen. Er werden van beide categorieën telkens iets meer dan 1000 afbeeldingen ingegeven en zowel van de katten als van de honden werden er 152 afbeeldingen opzij gezet om het model te testen na de training.
De 'accuraatheid' van het model was bij beide categorieën 0.97. Dat betekent dat 97% van de honden en 97% van de katten juist werd geklasseerd.
Onder de cijfers die de 'Accuracy per class' geven, vinden we een grafiek die we vaak tegenkomen bij Machine Learning: de 'Confusion Matrix' of foutenmatrix.
Een confusion matrix interpreteren:
Hiernaast zie je een fictieve confusion matrix. Links zie je de beelden die werden ingegeven in het model, bovenaan zie je de classes waarin de beelden geklasseerd werden. Van de 8 leeuwen die werden ingegeven, werden er dus 6 correct als leeuw geklasseerd en 2 werden er foutief als kameel geklasseerd.
Van de 11 herten die werden ingegeven werden er 9 correct als hert geklasseerd, 1 werd foutief als leeuw geklasseerd, 1 werd foutief als kameel geklasseerd.
De confusion matrix in Teachable Machine:
Daaronder zie je een Confusion Matrix uit Teachable machine. Hier zien we dat telkens 152 (148 + 4) honden en katten werden ingegeven bij de test.
Toevallig is hier voor beide categorieën het resultaat hetzelfde. 148 Katten werden correct herkend, en 4 werden er foutief als hond geklasseerd. 148 Honden werden correct als hond geklasseerd en 4 werden er verkeerd bij de katten geklasseerd. Dit is een behoorlijk resultaat, maar afhankelijk van je doel zal je moeten beoordelen of dit voldoende is.
Indien je model nog niet werkt zoals je gehoopt had, dan kan de confusion matrix je meer inzicht geven in wat er zoal fout liep. Hieronder gaan we daarom wat dieper in op de confusion matrix.
Wanneer we nu even enkel naar de leeuwen kijken, dan kunnen we daar wat meer bruikbare informatie uithalen.
De beoordeling van de beelden waarbij de leeuwen correct als leeuw werden geklasseerd noemen we 'True Positive'.
De beoordeling van de beelden van de twee leeuwen die verkeerd geklasseerd werden als kameel noemen we 'False Negative'.
De beoordeling van de beelden van de kameel en het hert die foutief bij de leeuwen terecht kwamen noemen we 'False Positive'.
De beoordeling van de andere dieren die correct in de andere categorie terecht kwamen noemen we 'True Negative'.
Deze begrippen gebruik je dus steeds om de resultaten van je model voor één categorie (hier de leeuwen) van nabij te bekijken. Wanneer je naar de leeuwen kijkt, dan is het hert linksonder een 'false positive', maar wanneer je naar de herten kijkt dan is het hert linksonder een 'false negative'.
Al naargelang de fouten die we krijgen kunnen we onze training-set eventueel nog wat bijwerken zodat ons model in de toekomst nieuwe beelden nog nauwkeuriger kan beoordelen.
Indien de resultaten van je test niet goed genoeg zijn voor je doel zal je je model moeten verbeteren. Maar hoe pak je dat aan? Hieronder vind je al enkele mogelijkheden.
1) Meer data (beelden) voorzien is waarschijnlijk de beste keuze. Je zal dan nóg meer beelden moeten vinden of maken om je model te trainen. Dat hoeven niet altijd totaal nieuwe beelden te zijn. Soms kan je beelden meermaals gebruiken door ze bijvoorbeeld ook eens te spiegelen.
2) De kwaliteit van je data verbeteren. Misschien staat er op flink wat foto's een hoop informatie die enkel voor verwarring zorgt bij het trainen. Probeer bijvoorbeeld bij dieren in het wild de beelden wat bij te snijden zodat enkel de nuttige informatie van het dier in beeld is (zie ook de tips bij het maken van een training-set.
3) Wanneer je echt veel data hebt kan het zijn dat je model nog niet voldoende getraind is. We spreken dan van 'underfit'. Hier kan het helpen om meer 'epochs' (zie hiernaast bij 'advanced') door te lopen. Dat betekent dat we ons model langer laten trainen met de training-set. Bij grote training-sets kan dat helpen. Ga hier niet mee overdrijven, want als je je model 'overtraind', dan kan het perfect alle foto's van de training-set herkennen, maar nieuwe beelden worden minder goed herkend. Je zal merken dat de resultaten van je test dan minder goed worden. We spreken dan van 'overfit'.