mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-27 07:21:18 +01:00
The Makefile rule to regenerate model.h has been left in place, but just adding the header to the test allows to build the application without heaving emlearn installed, which is convenient for the CI. Actual users of emlearn will like still want to generate the header.
Emlearn package test application
This application shows how to use a machine learning model with emlearn on RIOT in order to predict a value from a hand written digit image. The model is a Scikit-Learn random forest estimator trained on the MNIST dataset.
Expected output
The default digit to predict is a hand-written '6', so the application output is the following:
Predicted digit: 6
Use the Python scripts
The application comes with 3 Python scripts:
generate_digit.pyis used to generate a new digit file. This file is embedded in the firmware image and is used as input for the inference engine. Use the-ioption to select a different digit. For example, the following command:
will generate a digit containing a '9'. The digit is displayed at the end of the script so one knows which digit is stored. Note that each time a new digit is generated, the firmware image must be rebuilt to include this new digit.$ ./generate_digit.py -i 1train_model.pyis used to train a new Scikit-Learn Random Forest estimator. The trained model is stored in themodelbinary file.
will just train the model.$ ./train_model.pygenerate_model.pyis used to generate thesonar.hheader file from themodelbinary file. The script is called automatically by the build system when themodelbinary file is updated.