This repository is an example on how to add a custom learning block to Edge Impulse. This repository contains a XGBOOST classifier and a XGBOOST regression model.
As a primer, read the Custom learning blocks page in the Edge Impulse docs.
You run this pipeline via Docker. This encapsulates all dependencies and packages for you.
-
Install Docker Desktop.
-
Install the Edge Impulse CLI v1.16.0 or higher.
-
We need an Edge Impulse project with some data. Preferably create a new one and upload your own data, or alternatively:
Classifier
Clone a classification project, e.g. Tutorial: continuous motion recognition
Regression
Clone a regression project, e.g. Tutorial: temperature regression
-
If you've created a new project, then under Create impulse add a processing block, and either a Classification or Regression block (depending on your data).
-
Open a command prompt or terminal window.
-
Initialize the block:
Classifier
cd classifier $ edge-impulse-blocks init # Answer the questions: # ? Choose a type of block: "Machine learning block" # ? Choose an option: "Create a new block" # ? Enter the name of your block: "XGBOOST classifier" # ? What type of data does this model operate on? "Classification" # ? Where can your model train? "Both CPU or GPU (default)"
Regression
cd regression $ edge-impulse-blocks init # Answer the questions: # ? Choose a type of block: "Machine learning block" # ? Choose an option: "Create a new block" # ? Enter the name of your block: "XGBOOST regression" # ? What type of data does this model operate on? "Regression" # ? Where can your model train? "Both CPU or GPU (default)"
-
Fetch new data via:
$ edge-impulse-blocks runner --download-data data/
-
Build the container:
Classifier
$ cd classifier $ docker build -t xgboost-classifier .
Regression
$ cd regression $ docker build -t xgboost-regression .
-
Run the container to test the script (you don't need to rebuild the container if you make changes):
Classifier
$ docker run --rm -v $PWD:/app xgboost-classifier --data-directory /app/data --out-directory /app/out
Regression
$ docker run --rm -v $PWD:/app xgboost-regression --data-directory /app/data --out-directory /app/out
-
This creates a
model.json
file in the out directory.
If you have extra packages that you want to install within the container, add them to requirements.txt
and rebuild the container.
To add new arguments, see Custom learning blocks > Arguments to your script.
To get up-to-date data from your project:
-
Install the Edge Impulse CLI v1.16 or higher.
-
Open a command prompt or terminal window.
-
Fetch new data via:
$ edge-impulse-blocks runner --download-data data/
You can also push this block back to Edge Impulse, that makes it available like any other ML block so you can retrain your model when new data comes in, or deploy the model to device. See Docs > Adding custom learning blocks for more information.
-
Push the block:
$ edge-impulse-blocks push
-
The block is now available under any of your projects via Create impulse > Add new learning block.