From b5dd94d223836f1e1cf2059a64cb9a3a59801fd3 Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Tue, 7 Jan 2020 11:04:57 +0100 Subject: [PATCH] tests/pkg_emlearn: add sample application --- tests/pkg_emlearn/.gitignore | 2 ++ tests/pkg_emlearn/Makefile | 13 +++++++++ tests/pkg_emlearn/README.md | 40 ++++++++++++++++++++++++++ tests/pkg_emlearn/digit | Bin 0 -> 256 bytes tests/pkg_emlearn/generate_digit.py | 43 ++++++++++++++++++++++++++++ tests/pkg_emlearn/generate_model.py | 8 ++++++ tests/pkg_emlearn/main.c | 36 +++++++++++++++++++++++ tests/pkg_emlearn/model | Bin 0 -> 393917 bytes tests/pkg_emlearn/tests/01-run.py | 18 ++++++++++++ tests/pkg_emlearn/train_model.py | 27 +++++++++++++++++ 10 files changed, 187 insertions(+) create mode 100644 tests/pkg_emlearn/.gitignore create mode 100644 tests/pkg_emlearn/Makefile create mode 100644 tests/pkg_emlearn/README.md create mode 100644 tests/pkg_emlearn/digit create mode 100755 tests/pkg_emlearn/generate_digit.py create mode 100755 tests/pkg_emlearn/generate_model.py create mode 100644 tests/pkg_emlearn/main.c create mode 100644 tests/pkg_emlearn/model create mode 100755 tests/pkg_emlearn/tests/01-run.py create mode 100755 tests/pkg_emlearn/train_model.py diff --git a/tests/pkg_emlearn/.gitignore b/tests/pkg_emlearn/.gitignore new file mode 100644 index 0000000000..d9f927a729 --- /dev/null +++ b/tests/pkg_emlearn/.gitignore @@ -0,0 +1,2 @@ +model.h +tmp/ diff --git a/tests/pkg_emlearn/Makefile b/tests/pkg_emlearn/Makefile new file mode 100644 index 0000000000..d1052615d4 --- /dev/null +++ b/tests/pkg_emlearn/Makefile @@ -0,0 +1,13 @@ +include ../Makefile.tests_common + +USEPKG += emlearn + +BLOBS += digit + +BUILDDEPS += model.h + +include $(RIOTBASE)/Makefile.include + +model.h: $(CURDIR)/model + $(Q)$(CURDIR)/generate_model.py + $(Q)echo "/* fix for no newline at eof */\n" >> model.h diff --git a/tests/pkg_emlearn/README.md b/tests/pkg_emlearn/README.md new file mode 100644 index 0000000000..fbae5eae37 --- /dev/null +++ b/tests/pkg_emlearn/README.md @@ -0,0 +1,40 @@ +## 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. diff --git a/tests/pkg_emlearn/digit b/tests/pkg_emlearn/digit new file mode 100644 index 0000000000000000000000000000000000000000..29df78f96f7c2723ca473ba862424acc9b98c9f5 GIT binary patch literal 256 zcmZQzKn4#S7#JKJkwp;f2B2I6NDhZQNS^@?Iglv@Ksg1FJP;pn0GeeF5=8)zd;?S- rrVb&?z>olx1Gx_d96)N30gw-~e}MzkEFg^x1b}Kl=72Cr4FdxJla&z# literal 0 HcmV?d00001 diff --git a/tests/pkg_emlearn/generate_digit.py b/tests/pkg_emlearn/generate_digit.py new file mode 100755 index 0000000000..89a2578a9f --- /dev/null +++ b/tests/pkg_emlearn/generate_digit.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 + +"""Generate a binary file from a sample image of the MNIST dataset. +Pixel of the sample are stored as float32, images have size 8x8. +""" + +import os +import argparse + +import numpy as np +import matplotlib.pyplot as plt + +from sklearn.model_selection import train_test_split +from sklearn import datasets + +SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) + + +def main(args): + output_path = os.path.join(SCRIPT_DIR, args.output) + digits = datasets.load_digits() + + rnd = 42 + _, data, _, _ = train_test_split(digits.data, digits.target, + random_state=rnd) + data = data[args.index] + np.ndarray.tofile(data.astype('float32'), output_path) + + if args.no_plot is False: + plt.gray() + plt.imshow(data.reshape(8, 8)) + plt.show() + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument("-i", "--index", type=int, default=0, + help="Image index in MNIST test dataset") + parser.add_argument("-o", "--output", type=str, default='digit', + help="Output filename") + parser.add_argument("--no-plot", default=False, action='store_true', + help="Disable image display in matplotlib") + main(parser.parse_args()) diff --git a/tests/pkg_emlearn/generate_model.py b/tests/pkg_emlearn/generate_model.py new file mode 100755 index 0000000000..855b706b37 --- /dev/null +++ b/tests/pkg_emlearn/generate_model.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python3 + +import emlearn +import joblib + +estimator = joblib.load("model") +cmodel = emlearn.convert(estimator) +cmodel.save(file='model.h') diff --git a/tests/pkg_emlearn/main.c b/tests/pkg_emlearn/main.c new file mode 100644 index 0000000000..5e87e6c917 --- /dev/null +++ b/tests/pkg_emlearn/main.c @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2019 Inria + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License v2.1. See the file LICENSE in the top level + * directory for more details. + */ + +/** + * @ingroup tests + * @{ + * + * @file + * @brief Emlearn test application + * + * @author Alexandre Abadie + * + * @} + */ + +#include +#include + +#include "model.h" + +/* the digit array included must be 4-byte aligned */ +__attribute__((__aligned__(4))) +#include "blob/digit.h" + +int main(void) +{ + printf("Predicted digit: %" PRIi32 "\n", + model_predict((const float *)digit, digit_len >> 2)); + + return 0; +} diff --git a/tests/pkg_emlearn/model b/tests/pkg_emlearn/model new file mode 100644 index 0000000000000000000000000000000000000000..66b1f6949e33422835a52f7e997bd622ac0f260c GIT binary patch literal 393917 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

-p{_;du}NE!wC8-@>>9u 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