This is a continuation of my previous post SensiML Toolkit for TinyML .
I watched all of the 10 videos of the Quick Start Tutorial Series and while they were informative, I found them to be a bit disjointed because they did not follow a single project through all of the steps. That being said, they have a lot of documentation and some good project examples. The problem, as always, is being able to find the answers that you need specifically in the documentation
. It seems that SensiML does not have a User Forum, maybe I just haven't found it.
The overall flow in SensiML is the same as with Edge Impulse as would be expected.
- Data Acquisition
- Model Development
- Model Deployment
The tools used to implement the flow are substantially different, again not surprising. Just have to learn a new paradigm and install a lot of new tools. At some point, I'll just need to decide which framework I like best.
In this post, I'll cover the Data Acquisition and do the Model Development and Deployment in separate posts.
Data Acquisition
The default method for live data capture for both Edge Impulse and SensiML is by streaming the sensor data through the serial port. This requires loading firmware to your device in both cases.
Here are the firmware repositories:
- https://github.com/edgeimpulse/firmware-arduino-nano-33-ble-sense
- https://github.com/sensiml/nano33_data_capture
Getting started with Edge Impulse was easier because they provided a precompiled binary for the Arduino Nano 33 BLE Sense. Edge Impulse uses the Arduino CLI for compiling. SensiML uses PlatformIO. So, again Edge Impulse had an advantage for me since I use the Arduino IDE a lot and PlatformIO infrequently. Edge Impulse uses a custom script file to upload/flash the binaries and SensiML uses the upload capability of PlatformIO. It is easier to use PlatformIO in this case except that the SensiML example documentation is incorrect as it is out of date and doesn't match what is in the repository.
Once the firmware is on the device, the host computer will receive the data over a serial port and pass that data to the Data Collection tool. With Edge Impulse the data is forwarded by the edge_impulse_daemon on the host computer to the Data Acquisition tool which is part of the cloud based Dashboard. SensiML uses a Windows application, the Data Capture Lab, to receive the serial data. Data Capture Lab is also used to segment and label data.
Here is a video of accelerometer and gyro data being captured in Data Capture Lab:
and here is a video showing data segmentation and labeling:
SensiML has a couple of advantages in data labeling relative to Edge Impulse. The first advantage is that data with different labels can be captured in the same sample and can be easily segmented post capture. The second advantage is that it is easy to add additional metadata tags to the samples to aid with filtering.
SensiML also claims to support data acquisition over WiFi and BLE. I was never able to figure out how to do that with Edge Impulse, so I'm going to give it a try with SensiML.
I didn't realize it, but SensiML is located only about 5-6 miles from my house
.
Top Comments