mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
41 lines
1.4 KiB
Markdown
41 lines
1.4 KiB
Markdown
|
## 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](https://scikit-learn.org) 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.py` is 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 `-i` option to select a different digit.
|
||
|
For example, the following command:
|
||
|
```
|
||
|
$ ./generate_digit.py -i 1
|
||
|
```
|
||
|
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.
|
||
|
- `train_model.py` is used to train a new Scikit-Learn Random Forest estimator.
|
||
|
The trained model is stored in the `model` binary file.
|
||
|
```
|
||
|
$ ./train_model.py
|
||
|
```
|
||
|
will just train the model.
|
||
|
- `generate_model.py` is used to generate the `sonar.h` header file from the
|
||
|
`model` binary file. The script is called automatically by the build system
|
||
|
when the `model` binary file is updated.
|