Belote A.I. : quand la Belote rencontre Core ML

Nicolas Furno |

Belote A.I. est une app dédiée au comptage de points à la Belote, mais avec une particularité supplémentaire. Au lieu de mémoriser le nombre de points associés à chaque carte, ce qui dépend de la couleur de l’atout dans ce jeu séculaire, vous pouvez simplement passer les cartes devant la caméra de votre iPhone. La reconnaissance des cartes est quasiment instantanée et l’app se charge de comptabiliser les points en fonction des paramètres saisis au départ. À la fin du processus, un décompte est affiché pour chaque équipe et vous pouvez passer à la manche suivante.

Pendant la phase de détection de la carte.

C’est malin, mais c’est plus complexe à réaliser qu’on pourrait le croire. Pierre Boudoin, le lecteur qui a créé cette app nous a envoyé un mail pour expliquer comment il a créé Belote A.I. Sous le capot, c’est CoreML 2, l’outil d’Apple dédié à l’intelligence artificielle et plus particulièrement à l’apprentissage automatique, qui est utilisé. Pierre a créé un modèle capable de reconnaître les 32 cartes utilisées dans la belote1, quel que soit l’éclairage ou l’angle de la carte et du smartphone.

Pour créer ce modèle, il fallait un jeu de données qui alimente l’apprentissage automatique. Dans le cas de la Belote, il s’agit d’un ensemble de photos des 32 cartes, en multipliant les angles et éclairages. Pierre a créé son propre jeu de données. Le processus lui a demandé plusieurs semaines, le temps d’avoir prévu suffisamment de cas pour détecter toutes les cartes avec la fiabilité nécessaire.

Sa machine personnelle, un MacBook Pro de 2013, ne pouvant pas travailler suffisamment rapidement, il a utilisé un service dans le nuage dédié à cette tâche, associé à une puissante carte graphique de Nvidia. Malgré tout, un modèle basé sur 50 000 itérations nécessitait huit heures de travail ; à titre de comparaison, chaque itération demandait deux heures de travail sur son Mac.

Pour garantir de bons résultats, l’app ne fonctionne que sur une carte à la fois. On pourrait croire que c’est une contrainte insupportable, mais elle est si rapide (testée avec un iPhone X) que ce n’est pas gênant. On passe les cartes sous la caméra une à une, une vibration du Taptic Engine se fait sentir à chaque fois que la carte a été reconnue et cela peut aller très vite.

Pierre nous indique que le taux de réussite de l’app est de 95 %. En essayant de détecter plusieurs cartes à la fois, il tombe à 80 % et le risque d’erreur est alors trop grand pour obtenir un résultat fiable en usage réel. Peut-être qu’il pourra améliorer son modèle, mais le problème du poids de l’app se pose vite. CoreML fonctionne entièrement en local et Belote A.I. frôle les 160 Mo dans la première version. Une mise à jour sera proposée rapidement pour diviser ce poids par deux grâce à une optimisation du modèle, nous a toutefois signalé notre lecteur.

Belote A.I. est proposée en français et en anglais, elle est gratuite et financée par des publicités. Dans une future version, un achat in-app permettra de supprimer ces publicités. Core ML 2 étant utilisé, iOS 12 est indispensable pour l’installer.

Pour finir, que les amateurs de Tarot se rassurent, Pierre a d’ores et déjà prévu de créer une app pour compter les points de ce jeu. Avant cela, des variantes régionales de la Belote seront ajoutées à Belote A.I.


  1. Pour les néophytes, la Belote se joue sans les cartes 2 à 6 et elles ne seront pas reconnues correctement. ↩︎


avatar Rom 1 | 

Pas mal, belle performance mais je vois dans la vidéo qu’un jeu de cartes anglais est utilisé, ça fonctionne également avec les cartes de jeu françaises ?

Après, quand on sait jouer à la belote on arrive à compter très vite les points à la fin de la partie. Là ça parait plus fastidieux, même si c’est ludique.

avatar pboudoin | 

Cette application fonctionne avec des cartes Françaises et Américaines ;)

avatar Rom 1 | 

@pboudoin

Merci pour la précision et belle performance. ;)

avatar RedMak | 

@pboudoin

Pouvez-vous me dire quel cloud vous avez utilisé et combien ça vous a coûté.
Merci ?

avatar warmac33 | 

pas de version android ?

avatar pboudoin | 

Malheureusement, non

avatar Derw | 

Mon grand-père comptait les points au rythme de 3 à 4 cartes/seconde en moyenne avec un taux d'erreur proche de 0. Je ne suis pas sûr qu'on y soit là…

avatar pboudoin | 

L'application est bridée volontairement pour l'instant, mais elle est capable en théorie de scanner un éventail de cartes ou même un tapis de cartes étalées. Peut-être une future mise à jour ;)

Cette application est également pensée pour les gens qui savent y jouer mais pas forcément compter les cartes ;)

avatar Derw | 

@pboudouin

Attention, je ne discrédite absolument pas le travail fait, que je trouve par ailleurs très intéressant pour l'expérience. Je vous en félicite d'ailleurs !

Je me pose juste la question de la cible. En son état actuel, un joueur de belote expérimenté ira plus vite que l'application et j'ai des doutes sur l'existence de joueurs néophytes… Personnellement, les seuls joueurs de belotes qui restent dans mon entourages ont plus de 70 ans et sont tous expérimentés en comptage de points et néophytes en utilisation de smartphone. Mes enfants, encore mineurs, ne savent même pas ce que c'est… Mais, avec un peu de chance, il y a encore un public d'apprenants dans ce domaine ?

avatar Nesus | 

@Derw

C’est le cas des joueurs expérimentés. Normalement on compte les points par paires (une figure et un chiffre) et seules les paires complètes comptent. Et oui, ca prend moins d’une seconde par paire.

Toutefois c’est intéressant de voir ce que la machine est capable de faire.

avatar vincedev | 

@Nesus

On parle bien de belote ici, pas de tarot :)

avatar Nesus | 

@vincedev

Merci pour l’info. Heureusement que je n’ai pas passé mon adolescence à gagner de l’argent grâce à la belote, sinon j’aurais pu avoir un doute.

avatar vincedev | 

@Nesus

J'ai peut-être mal compris, mais on ne compte pas les points par paires de cartes à la belote, si ?

avatar oomu | 

et après on ose dire que les mobiles servent à rien, tssss

avatar bubu16 | 

Comme beaucoup d’autres j’avoue compter les cartes à la main relativement rapidement, donc pas la cible immédiate, mais je salue la performance et l’idée !

Je trouve que c’est une bonne démo des capacités et il y a sûrement un travail colossal derrière.

Après, avec la fonction « carte en éventail », comme évoquée dans les commentaires par le développeur, ou pour des gens pas à l’aise en calculs mental (et il y en a !) je pense que c’est clairement une bonne idée.

Félicitations donc pour l’initiative ?

avatar pocketalex | 

ah mince, je pensais que c'était une app pour aider le joueur (ou créer un joueur virtuel de haut niveau) ?

avatar Finouche | 

Belote, re belote et dix de der !

avatar marciton | 

j'adorerai la même chose pour le uno ... avec toutes les règles qui existent ce serait sympa.
Je suppose que le plus fastidieux est le scan des cartes...

avatar pboudoin | 

En effet, le scan des cartes est le gros du travail. J'avais également pensé au UNO, mais il y a tellement de manière de jouer que ca serait compliqué de satisfaire tout le monde.

avatar marciton | 

il faudrait commencer par le nombre de carte que l'on a avec l'option de donner un nombre de point par carte...après c'est des évolutions...

CONNEXION UTILISATEUR