Tot 12/7 ben ik voornamelijk bezig geweest met het verbeteren van de color histogram matching.
Dit gebeurt vaak: Je zit te prutsen, en je wilt weten ofdat je aanpassingen het systeem verbeteren of niet. Zou je zeggen, kan niet zo’n probleem zijn. Ik heb mijn plaatjes, ik heb mijn labels, en we kunnen gewoon tellen hoeveel van de pixels in het label gevonden worden en hoeveel pixels er buiten het label gevonden worden door het histogram, toch?
Niet helemaal, omdat er in de histogram matcher een threshold ingesteld moet worden (Bij welke verhouding van een kleur in de positief-voorbeeld trainset tov de negatief-voorbeeld trainset, beschouwen we een kleur als verkeersbord-blauw). Omdat bij elke verandering van de dataset deze verhouding opschuift, kunnen deze waarden niet direct met elkaar vergeleken worden. Daarom worden er vaak RoC-curves gebruikt om de performance van twee classifiers over een brede range van thresholds met elkaar te vergelijken.
Oftewel: Is de performance beter geworden, nu we meer voorbeelden van verkeersborden hebben?

De RoC curves voor verschillende trainsets.
Langs de verticale as staat het deel van de pixels in het verkeersbord dat correct gedetecteerd wordt (sensitivity). Langs de horizontale as staat het deel van de pixels dat geen deel uitmaakt van het verkeersbord, maar toch als zodanig gedetecteerd wordt (1 – specificity). Als de threshold verlaagd wordt neemt de gevoeligheid van de detector toe, maar neemt het aantal verkeerde detecties ook toe. Dat is goed te zien in de RoC curve. De meest slechte detector denkbaar zal willekeurig positief of negatief classificeren, en zou een rechte lijn van het 0,0 tot 1,1 punt opleveren. Hoe beter de detector, hoe meer de lijn naar de linker bovenhoek bolt. Anders gezegd: Hoe groter de oppervlakte onder de grafiek, hoe beter. We zien hier dat we met de nieuwe dataset ongeveer 40% correcte detectie kunnen behalen met nauwelijks verkeerde detecties, maar als we 90% van de pixels correct willen classificeren, moeten we ook genoegen nemen met zo’n 50% verkeerde detecties.
Trainset 1 is de oorspronkelijke trainset. Trainset 2 is extra data die ik later verzameld heb. Trainset 3 zijn de straatnaamborden aangeleverd door de vriendelijke mensen op de talk-nl mailinglist, waarvoor mijn hartelijke dank! De testset bestaat uit een subset van trainset 1, 2, en 3 inc. nog wat foto’s van stefan, en wordt niet meer gebruikt om op te trainen.
We zien dus dat de extra data werkt! – De groene lijn van alle trainsets samen, geeft een betere detectie dan trainset 1, of trainset 2 en 3 alleen.
Bovendien heeft deze tool het mogelijk gemaakt om allerlei experimenten te doen.

De RoC curve bij het resizen van afbeeldingen in de trainset.
Hier heb ik bijvoorbeeld het effect bekeken van het resize van alle afbeeldingen in de trainset van 1600×1200 voor trainen, welliswaar nog op alleen de eerste trainset. We zien dat beide histrogrammen zeer vergelijkbaar presteren, waar soms de ene en some de andere beter is op een bepaald deel van de curve. Als we de oppervlakte onder de grafiek uitrekenen, blijkt de niet-geresizede trainer toch nog net iets beter te presteren.