Steen, paper, schaar in een modern jasje? De MagPi redactie onderzoekt een heel eigentijdse draai voor dit klassieke spel.

De Canadese ruimtevaartingenieur Julien de la Bruère-Terreault heeft het traditionele spel steen, papier, schaar in een heel modern jasje gestoken. Zijn versie zet computervisie en machinaal leren in om een computer het tegen een mens te laten opnemen.

“Het idee voor dit project kwam eigenlijk van mijn zoon”, onthult Julien. Nadat hij een tekstgebaseerde versie van steen, papier, schaar in Python had geprogrammeerd, was Julien op zijn Raspberry Pi aan het experimenteren met elementaire computervisie. Zijn zoon vroeg toen of hij een versie van het spel zou kunnen maken die de handgebaren detecteert met de camera. “Omdat ik wist dat het haalbaar was, nam ik de uitdaging aan. Ik zag het als een kans om heel wat bij te leren.”
 
Figuur 1: De camera, die vastgehouden wordt door een 3D-geprinte steun, is door ledstrips omringd voor een consistente belichting. Een Raspberry Pi 3 interpreteert de handgebaren met OpenCV. De groene basis laat toe om de achtergrond uit de foto’s te verwijderen.

In de loop van een jaar scherpte Julien zijn vaardigheden aan in machinaal leren en computervisie. “De grote uitdaging voor mij was dat ik bijna alles wat nodig was om dit project te doen werken nog moest leren”, zegt hij. “Het algoritme voor machinaal leren ontwikkelen en testen, was het moeilijkste onderdeel.” Dit algoritme, of de classifier, leert de computer om een reeks handgebaren te erkennen. “Het was eerder al ‘getraind’ op een reeks gelabelde beelden die overeenkomen met de handgebaren voor steen, papier en schaar.”

Trainingsbeelden
Julien begon zijn project met het ontwerp van een 3D-geprinte armatuur (magpi.cc/VqvUAJ) om de camera en ledstrips te bevestigen. Daarna ontwikkelde hij een eenvoudige toepassing om de trainingsbeelden op te nemen om het algoritme voor machinaal leren te ontwikkelen.
“Ik startte oorspronkelijk met een reeks van ongeveer 150 gelabelde foto’s.” Omdat dit redelijk laag was, “moest ik een relatief eenvoudig algoritme met weinig parameters kiezen en een dimensionaliteitsreductie op de foto’s uitvoeren.”

Zodra hij tevreden was met het algoritme, begon Julien te werken aan de mogelijkheid om het spel realtime te spelen. Hij voegde daarvoor de logica en een grafische interface toe. Hij zegt dat de Raspberry Pi een integraal onderdeel van zijn project was: “Met zijn cameramodule en de geweldige Picamera-bibliotheek, zijn draagbare afmetingen en voldoende rekenkracht, was de Pi het ideale platform om dit project te ontwikkelen.”
 
Figuur 2: De verwerkingspijplijn om de beeldclassificator (bovenaan) te trainen en de gebaren te voorspellen op basis van foto’s die tijdens het spel zijn genomen (onderaan).

Lees het volledige artikel in MagPi nr.6 (Januari-Februari 2019).