Retour aux projets

Drawzy AI / Hackathon MobAI

Prototype de jeu de dessin de hackathon où l'application mobile envoie des dessins à un backend FastAPI pour la prédiction d'objets et le score des manches.

PrototypeCode source disponibleBackend d'IA pour un jeu de hackathon / 2025

Problème

Un jeu de dessin a besoin d'une reconnaissance rapide des dessins et d'un score qui reflète le temps et la qualité des prédictions.

Solution

Construire deux routes FastAPI : l'une décode les dessins en base64, les prétraite en entrées en niveaux de gris de 28x28 et appelle un CNN ; l'autre construit une observation de 61 valeurs et appelle un modèle PPO.

Fonctionnalités clés

Application FastAPI avec des endpoints routés de prédiction de dessin et de score
Décodage de dessins en base64 depuis le flux d'export du canevas Flutter
Pipeline de prétraitement des images : conversion en niveaux de gris, recadrage de la zone dessinée, redimensionnement à proportions conservées et remplissage à 28x28
Modèle CNN de devinette de dessins entraîné sur un sous-ensemble de classes de type Quick, Draw, avec la prédiction principale en sortie
Environnement Gymnasium et modèle de score PPO utilisant le temps, la séquence de similarité et le contexte du score précédent
Surfaces mobiles Flutter pour l'accueil, le choix du mode, le dessin, la prédiction, les sessions adossées à Firebase et le flux de chat/jeu
Dépôt de page d'accueil Next.js qui donne au prototype une couche de présentation tournée vers le produit

Rôle

Contributeur IA au hackathon MobAI de l'ENSIA, concentré sur la reconnaissance de dessins et le score par apprentissage par renforcement, pendant que l'équipe construisait les surfaces mobile et d'accueil.

Stack

FastAPIPythonTensorFlowKerasStable-Baselines3GymnasiumPillowNumPyPandasPydanticFlutterFirebaseNext.js

Schéma d'architecture

Mermaid
flowchart LR
  Player["Joueur mobile"] --> Mobile["Application Flutter Drawzy"]
  Mobile --> Canvas["Canevas de dessin et modes de jeu"]
  Canvas --> GuessRoute["Route FastAPI de prédiction de dessin"]
  GuessRoute --> ImagePrep["Décodage base64, recadrage, redimensionnement, remplissage"]
  ImagePrep --> GuessModel["Modèle CNN de devinette de dessins"]
  GuessModel --> Predictions["Classe prédite et cinq meilleures hypothèses"]
  Mobile --> ScoreRoute["Route FastAPI de score"]
  ScoreRoute --> Observation["Chronologie de similarité et score précédent"]
  Observation --> ScoreModel["Modèle de score PPO"]
  ScoreModel --> RoundScore["Score de la manche"]
  Mobile --> Firebase["Services applicatifs Firebase"]
  Landing["Page d'accueil Next.js"] --> Mobile

Captures d'écran : Drawzy AI

4 vues
Courbes d'entraînement du modèle de devinette, issues du backend d'IA, pour le classifieur de dessins.
Écran d'accueil et de marque de l'application Flutter, qui donne au backend d'IA un contexte produit visible.
Écran de choix du mode pour les parties de dessin hors ligne, en ligne et multijoueur.
Visuel d'intégration issu du dépôt mobile, qui montre le prototype comme une expérience d'application complète.