Mon compteur de points à la belote

Après avoir joué à la belote avec de la famille, j'ai eu l'idée d'automatiser le processus de comptage des cartes. J'ai imaginé les différentes étapes nécessaires à ce projet, qui doit fonctionner dans le monde physique.
Le code source sera disponible sur github une fois que le programme sera raffiné, et commenté.
Voici ce que qu'ai imaginé que la machine ai besoin de faire pour cela:

  • -Indiquer au programme l'atout qui est en jeu.
  • -Prendre une photo d'une carte avec une camera controllée par un Rasperry Pi 3B+
  • -La reconnaissance des cartes, avec un modèle de Deep Learning entraîné au préalable.
  • -La comptage des points.
  • -Faire en sorte que la machine passe à la prochaine carte, au moyens de moteurs et de roues poussant les cartes une par une, avec des moteurs controllés avec un arduino.
  • -Afficher le score avec un petit écran connecté à l'arduino.

Malheureusement, j'ai rencontré des difficulté quand au fonctionnement des moteurs, qui nécessitent un shield moteur que je ne possède pas encore, c'est pour ça que cette page va décrire principalement les étapes de la reconnaissance des cartes.

Keras

Pour reconnaître les cartes, j'ai décidé d'utiliser la librairie Keras, qui permet, très simplement d'entraîner un modèle de machine learning pour pouvoir reconnaître des images. Après avoir suivi quelques tutos en ligne, je me suis mis à créer mon propre modèle, et à l'affiner avec le temps.

L'image traitée

Pour que le modèle soit plus rapide, j'ai réduit la résolution de la photo capturée par la piCamera, ainsi, et ai mis l'image en noir et blanc, auquel j'applique aussi un masque pour éviter d'avoir du bruit sur l'image, dû au passage de la couleur au noir et blanc.

Pour entraîner le modèle, il a fallu que je prenne plusieurs photos des cartes avec différents éclairage, pour augmenter le nombre d'échantillons pour l'apprentissage. J'applique ensuite des modifications sur ces images pour augmenter de manière virtuelle le nombre d'échantillons pour améliorer l'apprentissage. Ces modifications sont générées aléatoirement grâce au preprocessing de keras .