VT2021 TinyML demo
Préparation
- Installer STM32CubeIde
- Installer minicom
- Avoir le kit de découverte 32F746GDiscovery
- Cloner le déport git https://github.com/mirzafahad/stm32_tflite_sine
Utilisation
Ouvrir le projet dans STM32CubeIde. Cliquez ensuite sur Project puis build project depuis la barre des menus. Nous pouvons maintenant brancher la carte au PC et lancer le programme depuis le menu Run.
Vous devriez voir ça sur la carte :
Vous pouvez ensuite repérer le port /dev/tty.* sur lequel votre carte est branché et lancé minicom -s sur ce port avec la configuration suivante : 9600 8N1.
Vous devriez voir des valeurs de x et y comme ceci :
Explication
Le but de ce projet est de générer via un modèle de réseaux de neurones, une onde sinusoïdale.
Pour cela, on doit d'abord entraîner un modèle. On va donc lui montrer un ensemble de données composé de données d’entrées et des données de sorties correspondantes. On va ensuite demander au modèle de comprendre la relation entre l’entrée et la sortie. Concernant notre projet, on va apprendre à notre modèle à recevoir une valeur de x (comprise entre 0 et 2pi) et à prédire la valeur y (comprise entre -1 et 1) tels que y = sin(x).
Au cours de son entraînement, le modèle va pouvoir vérifier ses propres performances à partir d’un ensemble de données de validation, composé de données qu’il n’aura jamais vu auparavant. Ceci permet à notre modèle d’ajuster ses paramètres internes tout au cours de son entraînement afin d’être le plus performant possible.
À la fin de l'entraînement, on va tester notre modèle sur un ensemble de tests, composé lui aussi de données que notre modèle n’aura jamais vu auparavant. Les performances obtenues sur cet ensemble reflèteront les performances globales de notre modèle.
Après avoir obtenu un modèle avec des résultats satisfaisants, nous allons utiliser le convertisseur TensorfFlow Lite pour le convertir dans un format spécial et peu encombrant à utiliser sur des appareils à mémoire limitée.