You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
treewide: Add documentation for hello_ei sample and Edge Impulse
- Add README for edge_impulse/hello_ei sample.
- Make changes in doc/integrations/edge_impulse.rst related to
change of form of deployment EI models (use of EI SDK module).
- Add section about usage of EI west extension commands.
Jira: NCSDK-37082
Signed-off-by: Bartosz Meus <bartosz.meus@nordicsemi.no>
Copy file name to clipboardExpand all lines: doc/integrations/edge_impulse.rst
+99-22Lines changed: 99 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ Edge Impulse integration
8
8
:depth: 2
9
9
10
10
`Edge Impulse`_ is a development platform that can be used to enable `embedded machine learning`_ on |NCS| devices.
11
-
You can use this platform to collect data from sensors, train machine learning model, and then deploy it to your Nordic Semiconductor's device.
11
+
You can use this platform to collect data from sensors, train a machine learning model, and then deploy it to your Nordic Semiconductor's device.
12
12
13
13
Integration prerequisites
14
14
*************************
@@ -19,16 +19,34 @@ Before you start the |EAI| integration with Edge Impulse, make sure that the fol
19
19
* Setup of the required Development Kit (DK).
20
20
* Creation of an `Edge Impulse studio account <Edge Impulse studio signup_>`_ and an Edge Impulse project.
21
21
22
+
Solution architecture
23
+
*********************
24
+
25
+
The Edge Impulse integration consists of three main components:
26
+
27
+
* **Edge Impulse SDK** - A C++ library that provides the inference engine and digital signal processing (DSP) functions required to run machine learning models on embedded devices.
28
+
The SDK is integrated into the build system as a Zephyr module through the west manifest file of the |EAI|.
29
+
* **Deployed ML model** - A Zephyr library package generated by Edge Impulse Studio that contains your trained model's parameters.
30
+
This is provided as a :file:`zip` archive with C/C++ source files that are compiled together with your application.
31
+
* **Application code** - Your |NCS| application that collects sensor data, feeds it to the inference engine through the Edge Impulse SDK API, and processes the classification results.
32
+
33
+
The typical workflow involves collecting sensor samples, running inference using a sliding window approach, and interpreting the classification results to make decisions or trigger actions.
34
+
This is presented in the :ref:`hello_ei_sample` sample.
35
+
22
36
Integration overview
23
37
********************
24
38
25
39
Before integrating the Edge Impulse machine learning model into an |EAI| application, you must prepare and deploy the machine learning model for your embedded device.
26
40
This model is prepared using the `Edge Impulse studio`_ external web tool.
27
41
It relies on sensor data that can be provided by different sources, for example data forwarder.
28
-
Check the :ref:`ei_data_forwarder_sample` sample for a demonstration of how you can send sensor data to Edge Impulse studio using `Edge Impulse's data forwarder`_.
29
42
30
-
The machine learning model is distributed as a single :file:`zip` archive that includes C++ library sources.
31
-
This file is used by the |NCS| build system to build the Edge Impulse library.
43
+
.. note::
44
+
You can collect data using either a development board that is supported directly by Edge Impulse or your mobile phone.
45
+
Alternatively, you can modify the :ref:`ei_data_forwarder_sample` sample to forward data from a sensor that is connected to any board available in the |NCS|.
46
+
47
+
The machine learning model is distributed as a single :file:`zip` archive that includes C/C++ machine learning model sources.
48
+
You must include these files in your |EAI| application.
49
+
Apart from that, you must also enable the `Edge Impulse`_ SDK (see :ref:`ug_edge_impulse_building`).
32
50
33
51
Integration steps
34
52
*****************
@@ -45,46 +63,105 @@ Complete the following steps to generate the archive and add it to the build sys
45
63
Preparing the machine learning model
46
64
====================================
47
65
48
-
To prepare the machine learning model, use `Edge Impulse studio`_ and follow one of the tutorials described in `Edge Impulse getting started guide`_.
49
-
For example, you can try the `Continuous motion recognition tutorial`_.
50
-
This tutorial will guide you through the following steps:
66
+
1. Prepare your own machine learning model.
51
67
52
-
1. Collecting data from sensors and uploading the data to Edge Impulse studio.
68
+
To prepare a machine learning model, use `Edge Impulse studio`_ and follow one of the tutorials described in `Edge Impulse getting started guide`_.
69
+
For example, to test the solution, you can try the `Continuous motion recognition tutorial`_.
70
+
You will complete the following steps:
53
71
54
-
.. note::
55
-
You can use one of the development boards supported directly by Edge Impulse or your mobile phone to collect the data.
56
-
You can also modify the :ref:`ei_data_forwarder_sample` application and use it to forward data from a sensor that is connected to any board available in the |NCS|.
72
+
a. Collect data from sensors and upload them to the Edge Impulse studio.
73
+
74
+
#. Design your machine learning model (an *impulse*).
75
+
76
+
#. Deploy your machine learning model to use it on an embedded device by following one of the two methods:
77
+
78
+
You can obtain a library in two ways:
79
+
80
+
.. tabs::
81
+
82
+
.. group-tab:: Using |EIS| web interface
83
+
84
+
Go to the :guilabel:`Deployment` tab and select :guilabel:`Zephyr library`.
85
+
This will generate a :file:`zip` file that contains source files defining the |EI| ML model.
86
+
87
+
.. figure:: ./images/ei_deploy.png
88
+
:scale:50 %
89
+
:alt:Model deployment in |EIS| dashboard
90
+
91
+
Model deployment in |EIS| dashboard
92
+
93
+
.. note::
94
+
Edge Impulse supports multiple deployment formats, some of which are compatible with |NCS| applications.
95
+
However, this instruction focuses on the Zephyr library deployment format.
96
+
97
+
.. group-tab:: Using |EI| west extensions
57
98
58
-
#. Designing your machine learning model (an *impulse*).
59
-
#. Deploying the machine learning model to use it on an embedded device.
60
-
As part of this step, you must select the :guilabel:`C++ library` to generate the required :file:`zip` file that contains the source files for building the Edge Impulse library in |EAI|.
99
+
|EI| provides west command extensions that let you build and deploy the machine learning model from |EIS| using the command line instead of the web interface.
100
+
The commands are already configured in the |EAI| west manifest and are ready to use.
101
+
102
+
a. Find two parameters that are required by the commands:
103
+
104
+
* ``Project ID`` - You can find it in the :guilabel:`Project info` panel under :guilabel:`Dashboard`.
105
+
106
+
.. figure:: ./images/ei_project_id.png
107
+
:scale:50 %
108
+
:alt:Project ID in |EIS| dashboard
109
+
110
+
Project ID in |EIS| dashboard
111
+
112
+
* ``API key`` - You can find it under the :guilabel:`Keys` tab in the |EI| project dashboard.
113
+
114
+
.. figure:: ./images/ei_api_key.png
115
+
:scale:50 %
116
+
:alt:API key under the Keys tab in |EIS|
117
+
118
+
API key under the Keys tab in |EIS|
119
+
120
+
#. Build the machine learning model by running the following command:
121
+
122
+
.. code-block:: console
123
+
124
+
west ei-build -p <PROJECT_ID> -k <API_KEY>
125
+
126
+
#. Deploy the machine learning model by running the following command:
127
+
128
+
.. code-block:: console
129
+
130
+
west ei-deploy -p <PROJECT_ID> -k <API_KEY>
131
+
132
+
As a result, file :file:`ei_model.zip` is downloaded to your working directory.
133
+
134
+
For more details on how to use these commands, see `Automated Deployment with West Commands`_ documentation.
61
135
62
136
.. _ug_edge_impulse_adding_building:
63
137
64
138
.. rst-class:: numbered-step
65
139
66
-
Building the machine learning model in |EAI|
67
-
============================================
140
+
Building an application with machine learning model
.. _`Automated Deployment with West Commands`: https://docs.edgeimpulse.com/hardware/deployments/run-zephyr-module#automated-deployment-with-west-commands-early-access-preview
The Hello Edge Impulse sample demonstrates how to use the `Edge Impulse`_ SDK and custom machine learning model when :ref:`integrating Edge Impulse with the nRF Connect SDK <edge_impulse_integration>`.
11
+
12
+
Requirements
13
+
************
14
+
15
+
The sample supports the following development kits:
16
+
17
+
.. table-from-sample-yaml::
18
+
19
+
Overview
20
+
********
21
+
22
+
This sample runs a pre-trained `Edge Impulse`_ machine learning model using two input data series that represent a sine wave and a triangle wave with added noise.
23
+
Sample's main purpose is to:
24
+
25
+
1. Provide input data to the |EI| model.
26
+
#. Start predictions using the machine learning model.
27
+
#. Display the prediction results and time measurements.
28
+
29
+
Configuration
30
+
*************
31
+
32
+
|config|
33
+
34
+
The sample can be configured using the following Kconfig options:
0 commit comments