In this project we have used STM32F429I-DISC board to create an AI game inspired by Google's Quick, Draw! AI experiment (https://quickdraw.withgoogle.com/).
Link to demo video : https://www.youtube.com/watch?v=8oBEGNwsj4A
Tensoflow 2.0 is used to train and save network in JSON and h5 format. More details and python code for training is here: [https://github.com/nimaaghli/quickdrawTF2]
Upon starting, the console shows a random keyword out of 100 categories and the user has 5 seconds to think and 20 seconds to draw the keyword on the screen. After 20 seconds system converts the user's drawing to an image and feeds it to the neural network. If the drawing is recognized as one of the top five output probabilities, then the system considers it as a correct drawing for the keyword. STM32F429 ARM microcontroller is used as the main processor. It has 2 Mbytes of Flash memory and 256 Kbytes of RAM. Our neural network only uses 1.42MB of flash and needs 103KBytes of RAM for inference.
We trained Convolutional Neural Network with 100 categories from Google`s doodle drawings dataset using TensoFlow 2.0. Our network accuracy for TOP5 category was 95%.
STM32CUBEMX.AI is used to integrate the trained neural network to STM32F429I-DISC. STM32CUBEMX configuration file is STM32AI_QuickDraw.ioc
STM32F429I-DISC BSP drivers are used to drive LCD and touch screen.
The firmware is compiled by SW4STM32 IDE. This repository contains configuration for this IDE.