Tim versus het politie algoritme

Tim Hanssen

Begin november 2023 ontving ik een boete. Volgens de officiële beschikking had ik halverwege oktober als bestuurder tijdens het rijden een mobiel elektrisch apparaat vastgehouden. De kosten waren € 380,- met daarbovenop nog € 9,- aan administratiekosten. Dat was even schrikken dus, al kon ik me niet herinneren dat ik dat gedaan had. Uiteraard was ik benieuwd naar het bewijs, dus op de website van het CJIB (Centraal Justitieel Incassobureau) heb ik de bijbehorende foto opgezocht.

Op de foto is te zien dat ik mijn hand bij mijn gezicht heb, maar ik heb niks vast in mijn hand. De boete is dus onterecht. Mijn bekeuring is een “false positive”, daarover dadelijk meer. Uiteraard ben ik in bezwaar gegaan, maar daar heb ik nog geen uitslag van. Het kan namelijk tot wel 26 weken duren voordat het bezwaar behandeld is.

Het mooie van deze foto is dat het analyseren van zo’n flitsfoto erg dicht tegen mijn werkzaamheden aanligt. Ik maak zelf algoritmes waarmee afbeeldingen bewerkt en geanalyseerd worden. Zo’n soort algoritme zit natuurlijk ook achter het beoordelen van flitsfoto’s, want dat zal niet allemaal handmatig gebeuren. De rest van deze blog bevat een analyse van wat er mogelijk verkeerd is gegaan bij het algoritme van de politie en wat er verbeterd zou kunnen worden.

Wat is een false positive?

In de wereld van algoritmes en modellen bestaan verschillende soorten modellen. Zogenaamde classificatiemodellen worden gebruikt om beslissingen te nemen of items toe te wijzen aan categorieën. Op de achtergrond worden wel getallen of kans-percentages berekend, maar de output wordt omgezet in een categorie.

Enkele voorbeelden van vragen aan classificatiemodellen zijn: “Gaat de beurskoers omhoog of omlaag?”, “Wordt er meer dan 2x gescoord in een voetbalwedstrijd: ja of nee?”, “Welk voertuig staat op een afbeelding: een auto, een fiets of een trein?”

Als een model moet voorspellen of iets ‘wel’ of ‘niet’ het geval is, dan kan het natuurlijk ook gebeuren dat het model het fout heeft. In het geval van mijn bekeuring heeft het model aangegeven dat ik wel een telefoon vast heb, terwijl dat niet het geval is. Dan spreken we van een false positive. De 4 mogelijke scenario’s staan in de afbeelding hiernaast (de confusion matrix).

Een perfect model voorspelt alleen maar true positives en true negatives, maar 100% correct voorspellen komt maar zelden voor. Soms moet vooral het aantal false negatives geminimaliseerd worden, soms het aantal false positives en soms de combinatie ervan. Als het model vooral gericht is op het opsporen van iedereen die wél een boete moet krijgen, kunnen er ook veel mensen onterecht een boete krijgen. En andersom natuurlijk.

De Monocam 

Mijn collega Maarten Ketelaars kwam recent een blog tegen met daarin een video waarin het Advanced Analytics Platform van de politie wordt besproken. In de eerste minuut van die video wordt uitgelegd hoe de Monocam, de camera die mij geflitst heeft, gebruikt wordt. Hierbij een link naar die YouTube video: Het Advanced Analytics Platform van de Politie – YouTube.

In de video wordt uitgelegd dat een algoritme bepaalt of iemand een mobiel apparaat vasthoudt tijdens het rijden. Vervolgens moet een politiemedewerker beoordelen of er daadwerkelijk een overtreding is begaan. In mijn geval heeft het algoritme dus gezegd dat ik een mobiel apparaat vasthoud tijdens het rijden én de medewerker van de politie heeft dat geaccepteerd. Er zijn dus twee fouten gemaakt; een fout van het algoritme en een menselijke fout.

Reproductie van het gebruikte algoritme

Samen met collega Tom van der Wielen heb ik geprobeerd om de onterechte boete te reproduceren. Overigens is het belangrijk om te benadrukken dat we niet weten welk algoritme exact door de Monocam gebruikt wordt, maar het zal vergelijkbaar zijn met wat wij gedaan hebben.

Wij hebben gebruik gemaakt van een voorgetraind YOLO model (versie v8). YOLO, dat staat voor You Only Look Once, is een realtime objectdetectie-algoritme. Het algoritme is in staat om personen en mobiele apparaten te detecteren, waardoor potentiële verkeersovertreders ermee opgespoord kunnen worden. Door dit algoritme te runnen met het live beeld van de webcam, is goed te zien dat personen en telefoons inderdaad gedetecteerd worden. Maar zodra mijn lege hand naar mijn oor gaat, is op het filmpje ook te zien dat het algoritme zomaar kan terugkoppelen dat er een telefoon aanwezig is. Dit klopt dus niet en zo is het waarschijnlijk ook bij het algoritme van de politie gebeurd.

Hoe kan een algoritme worden verbeterd?

Om te begrijpen hoe zo’n algoritme verbeterd kan worden, vertel ik even kort hoe een algoritme slim gemaakt wordt. Want dat is een algoritme niet vanzelf. Om te beginnen moet er een grote set aan afbeeldingen zijn waarvan bekend is welke objecten op elke afbeelding te zien zijn. Deze grote set wordt in twee of drie groepen verdeeld: een trainset, een validatieset en een testset. 

De trainset wordt gebruikt om het algoritme te leren welke objecten op welke afbeeldingen staan en welke eigenschappen (kleuren, lijnen, etc.) daarbij horen. De validatieset is nodig om een aantal hyperparameters van het algoritme te optimaliseren en uiteindelijk wordt de testset gebruikt om te toetsen hoe goed het algoritme is geworden. 

Het is belangrijk dat het algoritme de testset niet eerder gezien heeft, om bias (vooroordeel) te voorkomen. Als het algoritme goed genoeg bevonden wordt op de testset, dan kan het voortaan in een productie-omgeving worden gebruikt.

Het algoritme dat wij gebruikt hebben, én dat van de politie, vermoeden mogelijk dat er een telefoon aanwezig is doordat in de training-dataset veel voorbeelden zitten van bellende mensen met een telefoon in hun hand naast het oor. Het kan goed zijn dat in de training-dataset geen of nauwelijks foto’s zitten waarbij mensen met een lege hand aan het oor zitten. In dat geval wordt het voor het algoritme minder belangrijk of er daadwerkelijk een telefoon in de hand vastgehouden wordt, maar is het dus al voldoende als de hand bij het oor in de buurt is. Om dit te verbeteren zouden meer foto’s toegevoegd moeten worden waarbij de hand leeg is, het liefst minimaal een paar honderd foto’s.

Bij een bekende artificial intelligence-case waarbij een wolf van een husky onderscheiden moest worden, trad een vergelijkbaar probleem op. De software scoorde erg goed op een grote set foto’s van husky’s en wolven, maar dat kwam niet doordat de kenmerken van de dieren onderscheidend waren. Het kwam vooral door de aanwezigheid van sneeuw of groen op de achtergrond. Als je de sneeuw of het groen vervangt door mijn hand/hoofd, dan komt dit voorbeeld perfect overeen met mijn case.

Het blijft dus erg lastig om het algoritme 100% betrouwbaar te krijgen. Daarom is het belangrijk dat de politiemedewerker, die de handmatige controle doet, wordt voorzien van relevante informatie. Als het betrouwbaarheidspercentage van de gevonden telefoon niet zo hoog is, helpt het om dat ook aan te geven aan de politiemedewerker. Die weet dan dat hij/zij extra goed moet opletten bij het beoordelen van het resultaat van het algoritme.

Hoe nu verder?

Er is dus zowel een technische als een menselijke fout opgetreden bij mijn boete. Het lijkt me leuk om de politie te helpen om het algoritme en het proces eromheen te verbeteren. En verder wacht ik rustig de uitslag van mijn bezwaar af. Zeker met deze blog achter de hand kan ik me niet voorstellen dat ik mijn boete moet betalen.

Tim Hanssen