Bordherkenning

Een afgerond PyTorch-experiment uit 2021 — classificatie van verkeersborden met neurale netwerken, en een vroege les in "overfitting".

Dit project is afgerond. De code en modellen staan in een gedeelde repository op gitlab.com/alanta_alterna/various-ai — samen met andere experimenten, dus niet geheel geisoleerd.

Aan de vooravond van de opkomst van AI, ver terug in begin 2021, had ik een sterke interesse in AI en leerde ik dat machine learning iets is dat je thuis kunt doen. Met behulp van online tutorials en andere bronnen experimenteerde ik met neurale netwerken in PyTorch en Python. Mijn eerste model leerde een hond van een kat te onderscheiden; daarna ging ik verder met iets gevarieerders: verkeersborden.

De verkeersbordclassifier haalde 94,17% nauwkeurigheid op validatiedata en 99,63% op trainingsdata — een nuttige herinnering aan overfitting in de praktijk.

Aanvullende informatie

Steekpunten

  • Thuis getrainde PyTorch-modellen uit 2021 — eerst hond/kat, daarna verkeersborden.
  • 94,17% validatie tegenover 99,63% trainingsnauwkeurigheid: overfitting zichtbaar gemaakt.
  • Herbruikbare tsNet- en dogCatNet-weights, zwart-wit preprocessing, matplotlib-trainingsgrafieken, en een apart gehouden validatie dataset.

Ik begon uit nieuwsgierigheid, maar liep al snel tegen de grenzen aan van wat ik bereid was te doen. Leren was leuk; het trainen van grotere netwerken betekende meer GPU-belasting, stroomkosten en wachttijd — waar ik niet bijzonder geinteresseerd in was. Ik heb dezelfde ideeën sindsdien hergebruikt voor kleine scriptjes wanneer ik software iets wilde laten herkennen in een afbeelding, met wisselend succes. Zo bleek het herkennen van LEGO-steentjes bijzonder lastig: weinig beschikbare datasets, en veel steentjes lijken veel op elkaar.

Om het beheersbaar te houden, zetten de netwerken die ik trainde afbeeldingen om naar zwart-wit. De opgeslagen modelbestanden tsNet en dogCatNet zouden nog steeds bruikbaar moeten zijn vanuit de repo — één voor verkeersborden, één voor hond / kat.

Onderweg pikte ik ook simpele visualisatie op, door de trainingsvoortgang met matplotlib in kaart te brengen. Het project houdt ook een deel van de dataset achter voor validatie, zodat overfitting en bias makkelijker te herkennen zijn.

Dit project is afgerond en het is onwaarschijnlijk dat ik het weer oppak. AI fascineert me en heeft duidelijk een rol in de toekomst, maar er is weinig dat ik met neurale netwerken kan doen dat kan concurreren met wat grote organisaties uitbrengen. Het was leuk en leerzaam — geen terrein waarop ik verwacht partijen als OpenAI of Google te overtreffen.