Impulses can be deployed as a WebAssembly library. This packages all your signal processing blocks, configuration and learning blocks up into a single package. You can include this package in web pages, or as part of your Node.js application. This allows you to run your impulse locally, without any compilation. In this tutorial you'll export an impulse, and build a Node.js application to classify sensor data. You can also load this library from a web page, see Through WebAssembly (browser).
Edge Impulse for Linux
If you plan to run your impulse from Node.js you probably want to take a look at Edge Impulse for Linux. It offers full hardware acceleration, bindings to cameras and microphones, and Node.js bindings.
Make sure you followed the Continuous motion recognition tutorial, and have a trained impulse. Also install the following software:
Node.js - to build the application.
Head over to your Edge Impulse project, and go to Deployment. From here you can create the full library which contains the impulse and all external required libraries. Select WebAssembly and then click Build to create the library. Download and unzip the .zip
file.
Then, create a new file called run-impulse.js
in the same folder, and add:
With the project ready it's time to verify that the application works. Head back to the studio and click on Live classification. Then load a validation sample, and click on a row under 'Detailed result'.
To verify that the local application classifies the same, we need the raw features for this timestamp. To do so click on the 'Copy to clipboard' button next to 'Raw features'. This will copy the raw values from this validation file, before any signal processing or inferencing happened.
Then invoke the local application by passing these features as an argument to the application. Open a terminal or command prompt and run:
This will run the signal processing pipeline, and then classify the output:
Which matches the values we just saw in the studio. You now have your impulse running locally!
There's a limited number of arguments that you can pass on the command line, and if your raw features array is larger than this number you will be presented with the error: Argument list too long
. To get around this you can create a file called features.txt
, put your features in there, and then call the script via:
Impulses can be deployed as a WebAssembly library. This packages all your signal processing blocks, configuration and learning blocks up into a single package. You can include this package in web pages, or as part of your Node.js application. This allows you to run your impulse locally, without any compilation. In this tutorial you'll export an impulse, and build a web application to classify sensor data. You can also load this library from Node.js, see Through WebAssembly (Node.js).
Make sure you followed the Continuous motion recognition tutorial, and have a trained impulse. Also install the following software:
Python 3 - to run a web server that serves the MIME type of the .wasm
file correctly.
Head over to your Edge Impulse project, and go to Deployment. From here you can create the full library which contains the impulse and all external required libraries. Select WebAssembly and then click Build to create the library. Download and unzip the .zip
file.
Then, create a new file called run-impulse.js
in the same folder, and add:
Also, add a file called server.py
and add:
With the project ready it's time to verify that the application works. Head back to the studio and click on Live classification. Then load a validation sample, and click on a row under 'Detailed result'.
To verify that the local application classifies the same, we need the raw features for this timestamp. To do so click on the 'Copy to clipboard' button next to 'Raw features'. This will copy the raw values from this validation file, before any signal processing or inferencing happened.
Then, create a new HTML file where you'll call the inferencing engine with these features. Add a new file called index.html
and add:
Make sure to replace the features under YOUR FEATURES HERE
.
Then run the application via:
And navigate to http://localhost:8082 to see the application.
To see the output of the impulse, open the developer console in your browser.
Which matches the values we just saw in the studio. You now have your impulse running in your browser!