From 917cb2e1241d49831fea105e55e475d60521be3e Mon Sep 17 00:00:00 2001 From: Marcelo Rovai Date: Tue, 7 Nov 2023 10:27:39 -0300 Subject: [PATCH 1/2] Adding DSP Chapter. Adding a Preprocessing DSP Chapter. Deep dive into Inertial data preprocessing. --- Motion_Classif_Anomaly_Detect.qmd | 404 ++++++++++++ _quarto.yml | 1 + dsp_spectral_features_block.qmd | 613 ++++++++++++++++++ .../imgs_dsp_spectral_features/case_study.png | Bin 0 -> 24972 bytes .../data_sample.png | Bin 0 -> 19150 bytes .../imgs_dsp_spectral_features/features.png | Bin 0 -> 21923 bytes images/imgs_dsp_spectral_features/fft.png | Bin 0 -> 9299 bytes .../imgs_dsp_spectral_features/fft_result.png | Bin 0 -> 35897 bytes images/imgs_dsp_spectral_features/impulse.png | Bin 0 -> 38241 bytes images/imgs_dsp_spectral_features/kurto.png | Bin 0 -> 7070 bytes .../process_features.png | Bin 0 -> 5767 bytes images/imgs_dsp_spectral_features/rms.png | Bin 0 -> 3046 bytes images/imgs_dsp_spectral_features/sample.png | Bin 0 -> 20659 bytes .../sample_no_mean.png | Bin 0 -> 23419 bytes images/imgs_dsp_spectral_features/skew.png | Bin 0 -> 16051 bytes images/imgs_dsp_spectral_features/skew_2.png | Bin 0 -> 5601 bytes .../spectral_block.jpeg | Bin 0 -> 9827 bytes images/imgs_dsp_spectral_features/v1.png | Bin 0 -> 26784 bytes .../v1_features.png | Bin 0 -> 33316 bytes images/imgs_dsp_spectral_features/wav.png | Bin 0 -> 8547 bytes .../wav_processed.png | Bin 0 -> 8858 bytes .../imgs_dsp_spectral_features/wav_result.png | Bin 0 -> 49110 bytes .../wavelet_input.png | Bin 0 -> 19852 bytes 23 files changed, 1018 insertions(+) create mode 100644 Motion_Classif_Anomaly_Detect.qmd create mode 100644 dsp_spectral_features_block.qmd create mode 100644 images/imgs_dsp_spectral_features/case_study.png create mode 100644 images/imgs_dsp_spectral_features/data_sample.png create mode 100644 images/imgs_dsp_spectral_features/features.png create mode 100644 images/imgs_dsp_spectral_features/fft.png create mode 100644 images/imgs_dsp_spectral_features/fft_result.png create mode 100644 images/imgs_dsp_spectral_features/impulse.png create mode 100644 images/imgs_dsp_spectral_features/kurto.png create mode 100644 images/imgs_dsp_spectral_features/process_features.png create mode 100644 images/imgs_dsp_spectral_features/rms.png create mode 100644 images/imgs_dsp_spectral_features/sample.png create mode 100644 images/imgs_dsp_spectral_features/sample_no_mean.png create mode 100644 images/imgs_dsp_spectral_features/skew.png create mode 100644 images/imgs_dsp_spectral_features/skew_2.png create mode 100644 images/imgs_dsp_spectral_features/spectral_block.jpeg create mode 100644 images/imgs_dsp_spectral_features/v1.png create mode 100644 images/imgs_dsp_spectral_features/v1_features.png create mode 100644 images/imgs_dsp_spectral_features/wav.png create mode 100644 images/imgs_dsp_spectral_features/wav_processed.png create mode 100644 images/imgs_dsp_spectral_features/wav_result.png create mode 100644 images/imgs_dsp_spectral_features/wavelet_input.png diff --git a/Motion_Classif_Anomaly_Detect.qmd b/Motion_Classif_Anomaly_Detect.qmd new file mode 100644 index 00000000..bcddb36c --- /dev/null +++ b/Motion_Classif_Anomaly_Detect.qmd @@ -0,0 +1,404 @@ +# Motion Classification and Anomaly Detection {.unnumbered} + +## Introduction + +Transportation is the backbone of global commerce. Millions of containers are transported daily via various means, such as ships, trucks, and trains, to destinations worldwide. Ensuring these containers' safe and efficient transit is a monumental task that requires leveraging modern technology, and TinyML is undoubtedly one of them. + +In this hands-on tutorial, we will work to solve real-world problems related to transportation. We will develop a Motion Classification and Anomaly Detection system using the Arduino Nicla Vision board, the Arduino IDE, and the Edge Impulse Studio. This project will help us understand how containers experience different forces and motions during various phases of transportation, such as terrestrial and maritime transit, vertical movement via forklifts, and stationary periods in warehouses. + +### Learning Objectives + +1. Setting up the Arduino Nicla Vision Board +2. Data Collection and Preprocessing +3. Building the Motion Classification Model +4. Implementing Anomaly Detection +5. Real-world Testing and Analysis +6. Conclusion and Next Steps + +By the end of this tutorial, you'll have a working prototype that can classify different types of motion and detect anomalies during the transportation of containers. This knowledge can be a stepping stone to more advanced projects in the burgeoning field of TinyML involving vibration. + +## IMU Installation and testing + +For this project, we will use an accelerometer. As discussed in the Hands-On Tutorial, *Setup Nicla Vision*, the Nicla Vision Board has an onboard **6-axis IMU**: 3D gyroscope and 3D accelerometer, the [LSM6DSOX](https://www.st.com/resource/en/datasheet/lsm6dsox.pdf). Let's verify if the [LSM6DSOX IMU library](https://github.com/arduino-libraries/Arduino_LSM6DSOX) is installed. If not, install it. + +![](images/imgs_motion_classif/imu_ide.jpg){fig-align="center" width="6.5in"} + +Next, go to `Examples > Arduino_LSM6DSOX > SimpleAccelerometer` and run the accelerometer test. You can check if it works by opening the IDE Serial Monitor or Plotter. The values are in g (earth gravity), with a default range of +/- 4g: + +![](images/imgs_motion_classif/imu_test.jpg){fig-align="center" width="6.5in"} + +### Defining the Sampling frequency: + +Choosing an appropriate sampling frequency is crucial for capturing the motion characteristics you're interested in studying. The Nyquist-Shannon sampling theorem states that the sampling rate should be at least twice the highest frequency component in the signal to reconstruct it properly. In the context of motion classification and anomaly detection for transportation, the choice of sampling frequency would depend on several factors: + +1. **Nature of the Motion**: Different types of transportation (terrestrial, maritime, etc.) may involve different ranges of motion frequencies. Faster movements may require higher sampling frequencies. + +2. **Hardware Limitations**: The Arduino Nicla Vision board and any associated sensors may have limitations on how fast they can sample data. + +3. **Computational Resources**: Higher sampling rates will generate more data, which might be computationally intensive, especially critical in a TinyML environment. + +4. **Battery Life**: A higher sampling rate will consume more power. If the system is battery-operated, this is an important consideration. + +5. **Data Storage**: More frequent sampling will require more storage space, another crucial consideration for embedded systems with limited memory. + +In many human activity recognition tasks, **sampling rates of around 50 Hz to 100 Hz** are commonly used. Given that we are simulating transportation scenarios, which are generally not high-frequency events, a sampling rate in that range (50-100 Hz) might be a reasonable starting point. + +Let's define a sketch that will allow us to capture our data with a defined sampling frequency (for example, 50Hz): + +``` cpp +/* + * Based on Edge Impulse Data Forwarder Example (Arduino) + - https://docs.edgeimpulse.com/docs/cli-data-forwarder + * Developed by M.Rovai @11May23 + */ + +/* Include ----------------------------------------------------------------- */ +#include + +/* Constant defines -------------------------------------------------------- */ +#define CONVERT_G_TO_MS2 9.80665f +#define FREQUENCY_HZ 50 +#define INTERVAL_MS (1000 / (FREQUENCY_HZ + 1)) + +static unsigned long last_interval_ms = 0; +float x, y, z; + +void setup() { + Serial.begin(9600); + while (!Serial); + + if (!IMU.begin()) { + Serial.println("Failed to initialize IMU!"); + while (1); + } +} + +void loop() { + if (millis() > last_interval_ms + INTERVAL_MS) { + last_interval_ms = millis(); + + if (IMU.accelerationAvailable()) { + // Read raw acceleration measurements from the device + IMU.readAcceleration(x, y, z); + + // converting to m/s2 + float ax_m_s2 = x * CONVERT_G_TO_MS2; + float ay_m_s2 = y * CONVERT_G_TO_MS2; + float az_m_s2 = z * CONVERT_G_TO_MS2; + + Serial.print(ax_m_s2); + Serial.print("\t"); + Serial.print(ay_m_s2); + Serial.print("\t"); + Serial.println(az_m_s2); + } + } +} +``` + +Uploading the sketch and inspecting the Serial Monitor, we can see that we are capturing 50 samples per second. + +![](images/imgs_motion_classif/sampling.jpg){fig-align="center" width="6.5in"} + +> Note that with the Nicla board resting on a table (with the camera facing down), the z-axis measures around 9.8m/s$^2$, the expected earth acceleration. + +## The Case Study: Simulated Container Transportation + +We will simulate container (or better package) transportation through different scenarios to make this tutorial more relatable and practical. Using the built-in accelerometer of the Arduino Nicla Vision board, we'll capture motion data by manually simulating the conditions of: + +1. **Terrestrial** Transportation (by road or train) +2. **Maritime**-associated Transportation +3. Vertical Movement via Fork-**Lift** +4. Stationary **(Idle**) period in a Warehouse + +![](images/imgs_motion_classif/classes.jpg){fig-align="center" width="6.5in"} + +From the above images, we can define for our simulation that primarily horizontal movements (x or y axis) should be associated with the "Terrestrial class," Vertical movements (z-axis) with the "Lift Class," no activity with the "Idle class," and movement on all three axes to [Maritime class.](https://www.containerhandbuch.de/chb_e/stra/index.html?/chb_e/stra/stra_02_03_03.htm) + +![](images/imgs_motion_classif/classes_mov_def.jpg){fig-align="center" width="6.5in"} + +## Data Collection + +For data collection, we can have several options. In a real case, we can have our device, for example, connected directly to one container, and the data collected on a file (for example .CSV) and stored on an SD card (Via SPI connection) or an offline repo in your computer. Data can also be sent remotely to a nearby repository, such as a mobile phone, using Bluetooth (as done in this project: [Sensor DataLogger](https://www.hackster.io/mjrobot/sensor-datalogger-50e44d)). Once your dataset is collected and stored as a .CSV file, it can be uploaded to the Studio using the [CSV Wizard tool](https://docs.edgeimpulse.com/docs/edge-impulse-studio/data-acquisition/csv-wizard). + +> In this [video](https://youtu.be/2KBPq_826WM), you can learn alternative ways to send data to the Edge Impulse Studio. + +### Connecting the device to Edge Impulse + +We will connect the Nicla directly to the Edge Impulse Studio, which will also be used for data pre-processing, model training, testing, and deployment. For that, you have two options: + +1. Download the latest firmware and connect it directly to the `Data Collection` section. +2. Use the [CLI Data Forwarder](https://docs.edgeimpulse.com/docs/edge-impulse-cli/cli-data-forwarder) tool to capture sensor data from the sensor and send it to the Studio. + +Option 1 is more straightforward, as we saw in the *Setup Nicla Vision* hands-on, but option 2 will give you more flexibility regarding capturing your data, such as sampling frequency definition. Let's do it with the last one. + +Please create a new project on the Edge Impulse Studio (EIS) and connect the Nicla to it, following these steps: + +1. Install the [Edge Impulse CLI](https://docs.edgeimpulse.com/docs/edge-impulse-cli/cli-installation) and the [Node.js](https://nodejs.org/en/) into your computer. +2. Upload a sketch for data capture (the one discussed previously in this tutorial). +3. Use the [CLI Data Forwarder](https://docs.edgeimpulse.com/docs/edge-impulse-cli/cli-data-forwarder) to capture data from the Nicla's accelerometer and send it to the Studio, as shown in this diagram: + +![](images/imgs_motion_classif/data-forw.jpg){fig-align="center" width="5.25in"} + +Start the [CLI Data Forwarder](https://docs.edgeimpulse.com/docs/edge-impulse-cli/cli-data-forwarder) on your terminal, entering (if it is the first time) the following command: + +``` +$ edge-impulse-data-forwarder --clean +``` + +Next, enter your EI credentials and choose your project, variables (for example, *accX,* *accY*, and *accZ*), and device name (for example, *NiclaV*: + +![](images/imgs_motion_classif/term.jpg){fig-align="center" width="6.5in"} + +Go to the `Devices` section on your EI Project and verify if the device is connected (the dot should be green): + +![](images/imgs_motion_classif/device.jpg){fig-align="center" width="6.5in"} + +> You can clone the project developed for this hands-on: [NICLA Vision Movement Classification](https://studio.edgeimpulse.com/public/302078/latest). + +### Data Collection + +On the `Data Acquisition` section, you should see that your board `[NiclaV]` is connected. The sensor is available: `[sensor with 3 axes (accX, accY, accZ)]` with a sampling frequency of `[50Hz]`. The Studio suggests a sample length of `[10000]` ms (10s). The last thing left is defining the sample label. Let's start with`[terrestrial]`: + +![](images/imgs_motion_classif/collect_data.jpg){fig-align="center" width="5.64in"} + +**Terrestrial** (palettes in a Truck or Train), moving horizontally. Press `[Start Sample]`and move your device horizontally, keeping one direction over your table. After 10 s, your data will be uploaded to the studio. Here is how the sample was collected: + +![](images/imgs_motion_classif/terrestrial_result.jpg){fig-align="center" width="6.5in"} + +As expected, the movement was captured mainly in the Y-axis (green). In the blue, we see the Z axis, around -10 m/s$^2$ (the Nicla has the camera facing up). + +As discussed before, we should capture data from all four Transportation Classes. So, imagine that you have a container with a built-in accelerometer facing the following situations: + +**Maritime** (pallets in boats into an angry ocean). The movement is captured on all three axes: + +![](images/imgs_motion_classif/maritime_result.jpg){fig-align="center" width="6.5in"} + +**Lift** (Palettes being handled vertically by a Forklift). Movement captured only in the Z-axis: + +![](images/imgs_motion_classif/lift_result.jpg){fig-align="center" width="6.5in"} + +**Idle** (Paletts in a warehouse). No movement detected by the accelerometer: + +![](images/imgs_motion_classif/idle_result.jpg){fig-align="center" width="6.5in"} + +You can capture, for example, 2 minutes (twelve samples of 10 seconds) for each of the four classes (a total of 8 minutes of data). Using the `three dots` menu after each one of the samples, select 2 of them, reserving them for the Test set. Alternatively, you can use the automatic `Train/Test Split tool` on the `Danger Zone` of `Dashboard` tab. Below, you can see the resulting dataset: + +![](images/imgs_motion_classif/dataset.jpg){fig-align="center" width="6.5in"} + +Once you have captured your dataset, you can explore it in more detail using the [Data Explorer](https://docs.edgeimpulse.com/docs/edge-impulse-studio/data-acquisition/data-explorer), a visual tool to find outliers or mislabeled data (helping to correct them). The data explorer first tries to extract meaningful features from your data (by applying signal processing and neural network embeddings) and then uses a dimensionality reduction algorithm such as [PCA](https://en.wikipedia.org/wiki/Principal_component_analysis) or [t-SNE](https://en.wikipedia.org/wiki/T-distributed_stochastic_neighbor_embedding) to map these features to a 2D space. This gives you a one-look overview of your complete dataset. + +![](images/imgs_motion_classif/data_explorer.jpg){fig-align="center" width="6.5in"} + +In our case, the dataset seems OK (good separation). But the PCA shows we can have issues between maritime (green) and lift (orange). This is expected, once on a boat, sometimes the movement can be only "vertical". + +## Impulse Design + +The next step is the definition of our Impulse, which takes the raw data and uses signal processing to extract features, passing them as the input tensor of a *learning block* to classify new data. Go to `Impulse Design` and `Create Impulse`. The Studio will suggest the basic design. Let's also add a second *Learning Block* for `Anomaly Detection`. + +![](images/imgs_motion_classif/impulse.jpg){fig-align="center" width="6.5in"} + +This second model uses a K-means model. If we imagine that we could have our known classes as clusters, any sample that could not fit on that could be an outlier, an anomaly such as a container rolling out of a ship on the ocean or falling from a Forklift. + +![](images/imgs_motion_classif/anomaly_detect.jpg){fig-align="center" width="6.5in"} + +The sampling frequency should be automatically captured, if not, enter it: `[50]`Hz. The Studio suggests a *Window Size* of 2 seconds (`[2000]` ms) with a *sliding window* of `[20]`ms. What we are defining in this step is that we will pre-process the captured data (Time-Seres data), creating a tabular dataset features) that will be the input for a Neural Networks Classifier (DNN) and an Anomaly Detection model (K-Means), as shown below: + +![](images/imgs_motion_classif/impulse-block.jpg){fig-align="center" width="6.5in"} + +Let's dig into those steps and parameters to understand better what we are doing here. + +### Data Pre-Processing Overview + +Data pre-processing is extracting features from the dataset captured with the accelerometer, which involves processing and analyzing the raw data. Accelerometers measure the acceleration of an object along one or more axes (typically three, denoted as X, Y, and Z). These measurements can be used to understand various aspects of the object's motion, such as movement patterns and vibrations. + +Raw accelerometer data can be noisy and contain errors or irrelevant information. Preprocessing steps, such as filtering and normalization, can clean and standardize the data, making it more suitable for feature extraction. In our case, we should divide the data into smaller segments or **windows**. This can help focus on specific events or activities within the dataset, making feature extraction more manageable and meaningful. The **window size** and overlap (**window increase**) choice depend on the application and the frequency of the events of interest. As a thumb rule, we should try to capture a couple of "cycles of data". + +> With a sampling rate (SR) of 50Hz and a window size of 2 seconds, we will get 100 samples per axis, or 300 in total (3 axis x 2 seconds x 50 samples). We will slide this window every 200ms, creating a larger dataset where each instance has 300 raw features. + +![](images/imgs_motion_classif/pre-process.jpg){fig-align="center" width="6.5in"} + +Once the data is preprocessed and segmented, you can extract features that describe the motion's characteristics. Some typical features extracted from accelerometer data include: + +- **Time-domain** features describe the data's statistical properties within each segment, such as mean, median, standard deviation, skewness, kurtosis, and zero-crossing rate. +- **Frequency-domain** features are obtained by transforming the data into the frequency domain using techniques like the Fast Fourier Transform (FFT). Some typical frequency-domain features include the power spectrum, spectral energy, dominant frequencies (amplitude and frequency), and spectral entropy. +- **Time-frequency** domain features combine the time and frequency domain information, such as the Short-Time Fourier Transform (STFT) or the Discrete Wavelet Transform (DWT). They can provide a more detailed understanding of how the signal's frequency content changes over time. + +In many cases, the number of extracted features can be large, which may lead to overfitting or increased computational complexity. Feature selection techniques, such as mutual information, correlation-based methods, or principal component analysis (PCA), can help identify the most relevant features for a given application and reduce the dimensionality of the dataset. The Studio can help with such feature importance calculations. + +### EI Studio Spectral Features + +Data preprocessing is a challenging area for embedded machine learning, still, Edge Impulse helps overcome this with its digital signal processing (DSP) preprocessing step and, more specifically, the [Spectral Features Block](https://docs.edgeimpulse.com/docs/edge-impulse-studio/processing-blocks/spectral-features). + +On the Studio, the collected raw dataset will be the input of a Spectral Analysis block, which is excellent for analyzing repetitive motion, such as data from accelerometers. This block will perform a DSP (Digital Signal Processing), extracting features such as [FFT](https://en.wikipedia.org/wiki/Fast_Fourier_transform) or [Wavelets](https://en.wikipedia.org/wiki/Digital_signal_processing#Wavelet). + +For our project, once the time signal is continuous, we should use FFT with, for example, a length of `[32]`. + +The per axis/channel **Time Domain Statistical features** are: + +- [RMS](https://en.wikipedia.org/wiki/Root_mean_square): 1 feature +- [Skewness](https://colab.research.google.com/corgiredirector?site=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FSkewness): 1 feature +- [Kurtosis](https://colab.research.google.com/corgiredirector?site=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FKurtosis): 1 feature + +The per axis/channel **Frequency Domain Spectral features** are: + +- [Spectral Power](https://en.wikipedia.org/wiki/Spectral_density): 16 features (FFT Length/2) +- Skewness: 1 feature +- Kurtosis: 1 feature + +So, for an FFT length of 32 points, the resulting output of the Spectral Analysis Block will be 21 features per axis (a total of 63 features). + +> You can learn more about how each feature is calculated by downloading the notebook [Edge Impulse - Spectral Features Block Analysis](https://github.com/Mjrovai/Arduino_Nicla_Vision/blob/main/Motion_Classification/Edge_Impulse_Spectral_Features_Block.ipynb) [TinyML under the hood: Spectral Analysis](https://www.hackster.io/mjrobot/tinyml-under-the-hood-spectral-analysis-94676c) or [opening it directly on Google CoLab](https://colab.research.google.com/github/Mjrovai/Arduino_Nicla_Vision/blob/main/Motion_Classification/Edge_Impulse_Spectral_Features_Block.ipynb). + +### Generating features + +Once we understand what the pre-processing does, it is time to finish the job. So, let's take the raw data (time-series type) and convert it to tabular data. For that, go to the `Spectral Features` section on the `Parameters` tab, define the main parameters as discussed in the previous section (`[FFT]` with `[32]` points), and select`[Save Parameters]`: + +![](images/imgs_motion_classif/Parameters_definition.jpg){fig-align="center" width="6.5in"} + +At the top menu, select the `Generate Features` option and the `Generate Features` button. Each 2-second window data will be converted into one data point of 63 features. + +> The Feature Explorer will show those data in 2D using [UMAP.](https://umap-learn.readthedocs.io/en/latest/) Uniform Manifold Approximation and Projection (UMAP) is a dimension reduction technique that can be used for visualization similarly to t-SNE but is also applicable for general non-linear dimension reduction. + +The visualization makes it possible to verify that after the feature generation, the classes present keep their excellent separation, which indicates that the classifier should work well. Optionally, you can analyze how important each one of the features is for one class compared with others. + +![](images/imgs_motion_classif/feature_generation.jpg){fig-align="center" width="6.5in"} + +## Models Training + +Our classifier will be a Dense Neural Network (DNN) that will have 63 neurons on its input layer, two hidden layers with 20 and 10 neurons, and an output layer with four neurons (one per each class), as shown here: + +![](images/imgs_motion_classif/model.jpg){fig-align="center" width="6.5in"} + +As hyperparameters, we will use a Learning Rate of `[0.005]`, a Batch size of `[32]`, and `[20]`% of data for validation for `[30]` epochs. After training, we can see that the accuracy is 98.5%. The cost of memory and latency is meager. + +![](images/imgs_motion_classif/train.jpg){fig-align="center" width="6.5in"} + +For Anomaly Detection, we will choose the suggested features that are precisely the most important ones in the Feature Extraction, plus the accZ RMS. The number of clusters will be `[32]`, as suggested by the Studio: + +![](images/imgs_motion_classif/anom_det_train.jpg){fig-align="center" width="6.5in"} + +## Testing + +We can verify how our model will behave with unknown data using 20% of the data left behind during the data capture phase. The result was almost 95%, which is good. You can always work to improve the results, for example, to understand what went wrong with one of the wrong results. If it is a unique situation, you can add it to the training dataset and then repeat it. + +The default minimum threshold for a considered uncertain result is `[0.6]` for classification and `[0.3]` for anomaly. Once we have four classes (their output sum should be 1.0), you can also set up a lower threshold for a class to be considered valid (for example, 0.4). You can `Set confidence thresholds` on the `three dots` menu, besides the `Classy all` button. + +![](images/imgs_motion_classif/model_testing.jpg){fig-align="center" width="6.5in"} + +You can also perform Live Classification with your device (which should still be connected to the Studio). + +> Be aware that here, you will capture real data with your device and upload it to the Studio, where an inference will be taken using the trained model (But the **model is NOT in your device**). + +## Deploy + +It is time to deploy the preprocessing block and the trained model to the Nicla. The Studio will package all the needed libraries, preprocessing functions, and trained models, downloading them to your computer. You should select the option `Arduino Library`, and at the bottom, you can choose `Quantized (Int8)` or `Unoptimized (float32)` and `[Build]`. A Zip file will be created and downloaded to your computer. + +![](images/imgs_motion_classif/deploy.jpg){fig-align="center" width="6.5in"} + +On your Arduino IDE, go to the `Sketch` tab, select `Add.ZIP Library`, and Choose the.zip file downloaded by the Studio. A message will appear in the IDE Terminal: `Library installed`. + +### Inference + +Now, it is time for a real test. We will make inferences wholly disconnected from the Studio. Let's change one of the code examples created when you deploy the Arduino Library. + +In your Arduino IDE, go to the `File/Examples` tab and look for your project, and on examples, select `Nicla_vision_fusion`: + +![](images/imgs_motion_classif/inference.jpg){fig-align="center" width="6.5in"} + +Note that the code created by Edge Impulse considers a *sensor fusion* approach where the IMU (Accelerometer and Gyroscope) and the ToF are used. At the beginning of the code, you have the libraries related to our project, IMU and ToF: + +``` cpp +/* Includes ---------------------------------------------------------------- */ +#include +#include //IMU +#include "VL53L1X.h" // ToF +``` + +> You can keep the code this way for testing because the trained model will use only features pre-processed from the accelerometer. But consider that you will write your code only with the needed libraries for a real project. + +And that is it! + +You can now upload the code to your device and proceed with the inferences. Press the Nicla `[RESET]` button twice to put it on boot mode (disconnect from the Studio if it is still connected), and upload the sketch to your board. + +Now you should try different movements with your board (similar to those done during data capture), observing the inference result of each class on the Serial Monitor: + +- **Idle and lift classes:** + +![](images/imgs_motion_classif/inference_1.jpg){fig-align="center" width="6.5in"} + +- **maritime and terrestrial**: + +![](images/imgs_motion_classif/inference_2.jpg){fig-align="center" width="6.5in"} + +Note that in all situations above, the value of the `anomaly score` was smaller than 0.0. Try a new movement that was not part of the original dataset, for example, "rolling" the Nicla, facing the camera upside-down, as a container falling from a boat or even a boat accident: + +- **anomaly detection**: + +![](images/imgs_motion_classif/anomaly-boat.jpg){fig-align="center" width="6.5in"} + +In this case, the anomaly is much bigger, over 1.00 + +### Post-processing + +Now that we know the model is working since it detects the movements, we suggest that you modify the code to see the result with the NiclaV completely offline (disconnected from the PC and powered by a battery, a power bank, or an independent 5V power supply). + +The idea is to do the same as with the KWS project: if one specific movement is detected, a specific LED could be lit. For example, if *terrestrial* is detected, the Green LED will light; if *maritime*, the Red LED will light, if it is a *lift,* the Blue LED will light; and if no movement is detected *(idle*), the LEDs will be OFF. You can also add a condition when an anomaly is detected, in this case, for example, a white color can be used (all e LEDs light simultaneously). + +## Conclusion + +> The notebooks and codes used in this hands-on tutorial will be found on the [GitHub](https://github.com/Mjrovai/Arduino_Nicla_Vision/tree/main/Motion_Classification) repository. + +Before we finish, consider that Movement Classification and Object Detection can be utilized in many applications across various domains. Here are some of the potential applications: + +### Case Applications + +#### Industrial and Manufacturing + +- **Predictive Maintenance**: Detecting anomalies in machinery motion to predict failures before they occur. +- **Quality Control**: Monitoring the motion of assembly lines or robotic arms for precision assessment and deviation detection from the standard motion pattern. +- **Warehouse Logistics**: Managing and tracking the movement of goods with automated systems that classify different types of motion and detect anomalies in handling. + +#### Healthcare + +- **Patient Monitoring**: Detecting falls or abnormal movements in the elderly or those with mobility issues. +- **Rehabilitation**: Monitoring the progress of patients recovering from injuries by classifying motion patterns during physical therapy sessions. +- **Activity Recognition**: Classifying types of physical activity for fitness applications or patient monitoring. + +#### Consumer Electronics + +- **Gesture Control**: Interpreting specific motions to control devices, such as turning on lights with a hand wave. +- **Gaming**: Enhancing gaming experiences with motion-controlled inputs. + +#### Transportation and Logistics + +- **Vehicle Telematics**: Monitoring vehicle motion for unusual behavior such as hard braking, sharp turns, or accidents. +- **Cargo Monitoring**: Ensuring the integrity of goods during transport by detecting unusual movements that could indicate tampering or mishandling. + +#### Smart Cities and Infrastructure + +- **Structural Health Monitoring**: Detecting vibrations or movements within structures that could indicate potential failures or maintenance needs. +- **Traffic Management**: Analyzing the flow of pedestrians or vehicles to improve urban mobility and safety. + +#### Security and Surveillance + +- **Intruder Detection**: Detecting motion patterns typical of unauthorized access or other security breaches. +- **Wildlife Monitoring**: Detecting poachers or abnormal animal movements in protected areas. + +#### Agriculture + +- **Equipment Monitoring**: Tracking the performance and usage of agricultural machinery. +- **Animal Behavior Analysis**: Monitoring livestock movements to detect behaviors indicating health issues or stress. + +#### Environmental Monitoring + +- **Seismic Activity**: Detecting irregular motion patterns that precede earthquakes or other geologically relevant events. +- **Oceanography**: Studying wave patterns or marine movements for research and safety purposes. + +### Nicla 3D case + +For real applications, as some described before, we can add a case to our device, and Eoin Jordan, from Edge Impulse, developed a great wearable and machine health case for the Nicla range of boards. It works with a 10mm magnet, 2M screws, and a 16mm strap for human and machine health use case scenarios. Here is the link: [Arduino Nicla Voice and Vision Wearable Case](https://www.thingiverse.com/thing:5923305). + +![](images/imgs_motion_classif/case.jpg){fig-align="center" width="6.5in"} + +The applications for motion classification and anomaly detection are extensive, and the Arduino Nicla Vision is well-suited for scenarios where low power consumption and edge processing are advantageous. Its small form factor and efficiency in processing make it an ideal choice for deploying portable and remote applications where real-time processing is crucial and connectivity may be limited. diff --git a/_quarto.yml b/_quarto.yml index 42d399fc..cc9504e7 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -81,6 +81,7 @@ book: - object_detection_fomo.qmd - kws_feature_eng.qmd - kws_nicla.qmd + - dsp_spectral_features_block.qmd - motion_classify_ad.qmd references: references.qmd diff --git a/dsp_spectral_features_block.qmd b/dsp_spectral_features_block.qmd new file mode 100644 index 00000000..64126027 --- /dev/null +++ b/dsp_spectral_features_block.qmd @@ -0,0 +1,613 @@ +# DSP - Spectral Features {.unnumbered} + +## Introduction + +TinyML projects related to motion (or vibration) involve data from IMUs (usually **accelerometers** and **gyroscopes**). These time-series type datasets should be preprocessed before inputting them into a Machine Learning model training, which is a challenging area for embedded machine learning. Still, Edge Impulse helps overcome this complexity with its digital signal processing (DSP) preprocessing step and, more specifically, the [Spectral Features Block](https://docs.edgeimpulse.com/docs/edge-impulse-studio/processing-blocks/spectral-features) for Inertial sensors. + +But how does it work under the hood? Let's dig into it. + +## Extracting Features Review + +Extracting features from a dataset captured with inertial sensors, such as accelerometers, involves processing and analyzing the raw data. Accelerometers measure the acceleration of an object along one or more axes (typically three, denoted as X, Y, and Z). These measurements can be used to understand various aspects of the object's motion, such as movement patterns and vibrations. Here's a high-level overview of the process: + +**Data collection**: First, we need to gather data from the accelerometers. Depending on the application, data may be collected at different sampling rates. It's essential to ensure that the sampling rate is high enough to capture the relevant dynamics of the studied motion (the sampling rate should be at least double the maximum relevant frequency present in the signal). + +**Data preprocessing**: Raw accelerometer data can be noisy and contain errors or irrelevant information. Preprocessing steps, such as filtering and normalization, can help clean and standardize the data, making it more suitable for feature extraction. + +> The Studio does not perform normalization or standardization, so sometimes, when working with Sensor Fusion, it could be necessary to perform this step before uploading data to the Studio. This is particularly crucial in sensor fusion projects, as seen in this tutorial, [Sensor Data Fusion with Spresense and CommonSense](https://docs.edgeimpulse.com/experts/air-quality-and-environmental-projects/environmental-sensor-fusion-commonsense). + +**Segmentation**: Depending on the nature of the data and the application, dividing the data into smaller segments or **windows** may be necessary. This can help focus on specific events or activities within the dataset, making feature extraction more manageable and meaningful. The **window size** and overlap (**window span**) choice depend on the application and the frequency of the events of interest. As a rule of thumb, we should try to capture a couple of "data cycles." + +**Feature extraction**: Once the data is preprocessed and segmented, you can extract features that describe the motion's characteristics. Some typical features extracted from accelerometer data include: + +- **Time-domain** features describe the data's [statistical properties](https://www.mdpi.com/1424-8220/22/5/2012) within each segment, such as mean, median, standard deviation, skewness, kurtosis, and zero-crossing rate. +- **Frequency-domain** features are obtained by transforming the data into the frequency domain using techniques like the [Fast Fourier Transform (FFT)](https://en.wikipedia.org/wiki/Fast_Fourier_transform). Some typical frequency-domain features include the power spectrum, spectral energy, dominant frequencies (amplitude and frequency), and spectral entropy. +- **Time-frequency** domain features combine the time and frequency domain information, such as the [Short-Time Fourier Transform (STFT)](https://en.wikipedia.org/wiki/Short-time_Fourier_transform) or the [Discrete Wavelet Transform (DWT)](https://en.wikipedia.org/wiki/Discrete_wavelet_transform). They can provide a more detailed understanding of how the signal's frequency content changes over time. + +In many cases, the number of extracted features can be large, which may lead to overfitting or increased computational complexity. Feature selection techniques, such as mutual information, correlation-based methods, or principal component analysis (PCA), can help identify the most relevant features for a given application and reduce the dimensionality of the dataset. The Studio can help with such feature-relevant calculations. + +Let's explore in more detail a typical TinyML Motion Classification project covered in this series of Hands-Ons. + +## A TinyML Motion Classification project + +![](images/imgs_dsp_spectral_features/spectral_block.jpeg){fig-align="center" width="6.5in"} + +In the hands-on project, *Motion Classification and Anomaly Detection*, we simulated mechanical stresses in transport, where our problem was to classify four classes of movement: + +- **Maritime** (pallets in boats) +- **Terrestrial** (pallets in a Truck or Train) +- **Lift** (pallets being handled by Fork-Lift) +- **Idle** (pallets in Storage houses) + +The accelerometers provided the data on the pallet (or container). + +![](images/imgs_dsp_spectral_features/case_study.png){fig-align="center" width="6.5in"} + +Below is one sample (raw data) of 10 seconds, captured with a sampling frequency of 50Hz: + +![](images/imgs_dsp_spectral_features/data_sample.png){fig-align="center" width="6.5in"} + +> The result is similar when this analysis is done over another dataset with the same principle, using a different sampling frequency, 62.5Hz instead of 50Hz. + +## Data Pre-Processing + +The raw data captured by the accelerometer (a "time series" data) should be converted to "tabular data" using one of the typical Feature Extraction methods described in the last section. + +We should segment the data using a sliding window over the sample data for feature extraction. The project captured accelerometer data every 10 seconds with a sample rate of 62.5 Hz. A 2-second window captures 375 data points (3 axis x 2 seconds x 62.5 samples). The window is slid every 80ms, creating a larger dataset where each instance has 375 "raw features." + +![](images/imgs_dsp_spectral_features/v1.png){fig-align="center" width="6.5in"} + +On the Studio, the previous version (V1) of the **Spectral Analysis Block** extracted as time-domain features only the RMS, and for the frequency-domain, the peaks and frequency (using FFT) and the power characteristics (PSD) of the signal over time resulting in a fixed tabular dataset of 33 features (11 per each axis), + +![](images/imgs_dsp_spectral_features/v1_features.png){fig-align="center" width="6.5in"} + +Those 33 features were the Input tensor of a Neural Network Classifier. + +In 2022, Edge Impulse released version 2 of the Spectral Analysis block, which we will explore here. + +### Edge Impulse - Spectral Analysis Block V.2 under the hood + +In Version 2, Time Domain Statistical features per axis/channel are: + +- RMS +- Skewness +- Kurtosis + +And the Frequency Domain Spectral features per axis/channel are: + +- Spectral Power +- Skewness (in the next version) +- Kurtosis (in the next version) + +In this [link,](https://docs.edgeimpulse.com/docs/edge-impulse-studio/processing-blocks/spectral-features) we can have more details about the feature extraction. + +> Clone the [public project](https://studio.edgeimpulse.com/public/198358/latest). You can also follow the explanation, playing with the code using my Google CoLab Notebook: [Edge Impulse Spectral Analysis Block Notebook](https://colab.research.google.com/github/Mjrovai/TinyML4D/blob/main/SciTinyM-2023/Edge_Impulse-Spectral_Analysis_Block/Edge_Impulse_Spectral_Analysis_Block_V3.ipynb). + +Start importing the libraries: + +``` python +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +import math +from scipy.stats import skew, kurtosis +from scipy import signal +from scipy.signal import welch +from scipy.stats import entropy +from sklearn import preprocessing +import pywt + +plt.rcParams['figure.figsize'] = (12, 6) +plt.rcParams['lines.linewidth'] = 3 +``` + +From the studied project, let's choose a data sample from accelerometers as below: + +- Window size of 2 seconds: `[2,000]` ms +- Sample frequency: `[62.5]` Hz +- We will choose the `[None]` filter (for simplicity) and a +- FFT length: `[16]`. + +``` python +f = 62.5 # Hertz +wind_sec = 2 # seconds +FFT_Lenght = 16 +axis = ['accX', 'accY', 'accZ'] +n_sensors = len(axis) +``` + +![](images/imgs_dsp_spectral_features/impulse.png){fig-align="center" width="5.6in"} + +Selecting the *Raw Features* on the Studio Spectral Analysis tab, we can copy all 375 data points of a particular 2-second window to the clipboard. + +![](images/imgs_dsp_spectral_features/features.png){fig-align="center" width="6.5in"} + +Paste the data points to a new variable *data*: + +``` python +data=[-5.6330, 0.2376, 9.8701, -5.9442, 0.4830, 9.8701, -5.4217, ...] +No_raw_features = len(data) +N = int(No_raw_features/n_sensors) +``` + +The total raw features are 375, but we will work with each axis individually, where N= 125 (number of samples per axis). + +We aim to understand how Edge Impulse gets the processed features. + +![](images/imgs_dsp_spectral_features/process_features.png){fig-align="center" width="4.57in"} + +So, you should also past the processed features on a variable (to compare the calculated features in Python with the ones provided by the Studio) : + +``` python +features = [2.7322, -0.0978, -0.3813, 2.3980, 3.8924, 24.6841, 9.6303, ...] +N_feat = len(features) +N_feat_axis = int(N_feat/n_sensors) +``` + +The total number of processed features is 39, which means 13 features/axis. + +Looking at those 13 features closely, we will find 3 for the time domain (RMS, Skewness, and Kurtosis): + +- `[rms] [skew] [kurtosis]` + +and 10 for the frequency domain (we will return to this later). + +- `[spectral skew][spectral kurtosis][Spectral Power 1] ... [Spectral Power 8]` + +**Splitting raw data per sensor** + +The data has samples from all axes; let's split and plot them separately: + +``` python +def plot_data(sensors, axis, title): + [plt.plot(x, label=y) for x,y in zip(sensors, axis)] + plt.legend(loc='lower right') + plt.title(title) + plt.xlabel('#Sample') + plt.ylabel('Value') + plt.box(False) + plt.grid() + plt.show() + +accX = data[0::3] +accY = data[1::3] +accZ = data[2::3] +sensors = [accX, accY, accZ] +plot_data(sensors, axis, 'Raw Features') +``` + +![](images/imgs_dsp_spectral_features/sample.png){fig-align="center" width="6.5in"} + +**Subtracting the mean** + +Next, we should subtract the mean from the *data*. Subtracting the mean from a data set is a common data pre-processing step in statistics and machine learning. The purpose of subtracting the mean from the data is to center the data around zero. This is important because it can reveal patterns and relationships that might be hidden if the data is not centered. + +Here are some specific reasons why subtracting the mean can be helpful: + +- It simplifies analysis: By centering the data, the mean becomes zero, making some calculations simpler and easier to interpret. +- It removes bias: If the data is biased, subtracting the mean can remove it and allow for a more accurate analysis. +- It can reveal patterns: Centering the data can help uncover patterns that might be hidden if the data is not centered. For example, centering the data can help you identify trends over time if you analyze a time series dataset. +- It can improve performance: In some machine learning algorithms, centering the data can improve performance by reducing the influence of outliers and making the data more easily comparable. Overall, subtracting the mean is a simple but powerful technique that can be used to improve the analysis and interpretation of data. + +``` python +dtmean = [(sum(x)/len(x)) for x in sensors] +[print('mean_'+x+'= ', round(y, 4)) for x,y in zip(axis, dtmean)][0] + +accX = [(x - dtmean[0]) for x in accX] +accY = [(x - dtmean[1]) for x in accY] +accZ = [(x - dtmean[2]) for x in accZ] +sensors = [accX, accY, accZ] + +plot_data(sensors, axis, 'Raw Features - Subctract the Mean') +``` + +![](images/imgs_dsp_spectral_features/sample_no_mean.png){fig-align="center" width="6.5in"} + +## Time Domain Statistical features + +**RMS Calculation** + +The RMS value of a set of values (or a continuous-time waveform) is the square root of the arithmetic mean of the squares of the values or the square of the function that defines the continuous waveform. In physics, the RMS value of an electrical current is defined as the "value of the direct current that dissipates the same power in a resistor." + +In the case of a set of n values {𝑥1, 𝑥2, ..., 𝑥𝑛}, the RMS is: + +![](images/imgs_dsp_spectral_features/rms.png){fig-align="center"} + +> NOTE that the RMS value is different for the original raw data, and after subtracting the mean + +``` py +# Using numpy and standartized data (subtracting mean) +rms = [np.sqrt(np.mean(np.square(x))) for x in sensors] +``` + +We can compare the calculated RMS values here with the ones presented by Edge Impulse: + +``` python +[print('rms_'+x+'= ', round(y, 4)) for x,y in zip(axis, rms)][0] +print("\nCompare with Edge Impulse result features") +print(features[0:N_feat:N_feat_axis]) +``` + +`rms_accX= 2.7322` + +`rms_accY= 0.7833` + +`rms_accZ= 0.1383` + +Compared with Edge Impulse result features: + +`[2.7322, 0.7833, 0.1383]` + +**Skewness and kurtosis calculation** + +In statistics, skewness and kurtosis are two ways to measure the **shape of a distribution**. + +Here, we can see the sensor values distribution: + +``` python +fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(13, 4)) +sns.kdeplot(accX, fill=True, ax=axes[0]) +sns.kdeplot(accY, fill=True, ax=axes[1]) +sns.kdeplot(accZ, fill=True, ax=axes[2]) +axes[0].set_title('accX') +axes[1].set_title('accY') +axes[2].set_title('accZ') +plt.suptitle('IMU Sensors distribution', fontsize=16, y=1.02) +plt.show() +``` + +![](images/imgs_dsp_spectral_features/skew.png){fig-align="center" width="6.5in"} + +[**Skewness**](https://en.wikipedia.org/wiki/Skewness) is a measure of the asymmetry of a distribution. This value can be positive or negative. + +![](images/imgs_dsp_spectral_features/skew_2.png){fig-align="center" width="4.65in"} + +- A negative skew indicates that the tail is on the left side of the distribution, which extends towards more negative values. +- A positive skew indicates that the tail is on the right side of the distribution, which extends towards more positive values. +- A zero value indicates no skewness in the distribution at all, meaning the distribution is perfectly symmetrical. + +``` python +skew = [skew(x, bias=False) for x in sensors] +[print('skew_'+x+'= ', round(y, 4)) for x,y in zip(axis, skew)][0] +print("\nCompare with Edge Impulse result features") +features[1:N_feat:N_feat_axis] +``` + +`skew_accX= -0.099` + +`skew_accY= 0.1756` + +`skew_accZ= 6.9463` + +Compared with Edge Impulse result features: + +`[-0.0978, 0.1735, 6.8629]` + +[**Kurtosis**](https://en.wikipedia.org/wiki/Kurtosis) is a measure of whether or not a distribution is heavy-tailed or light-tailed relative to a normal distribution. + +![](images/imgs_dsp_spectral_features/kurto.png){fig-align="center"} + +- The kurtosis of a normal distribution is zero. +- If a given distribution has a negative kurtosis, it is said to be playkurtic, which means it tends to produce fewer and less extreme outliers than the normal distribution. +- If a given distribution has a positive kurtosis , it is said to be leptokurtic, which means it tends to produce more outliers than the normal distribution. + +``` python +kurt = [kurtosis(x, bias=False) for x in sensors] +[print('kurt_'+x+'= ', round(y, 4)) for x,y in zip(axis, kurt)][0] +print("\nCompare with Edge Impulse result features") +features[2:N_feat:N_feat_axis] +``` + +`kurt_accX= -0.3475` + +`kurt_accY= 1.2673` + +`kurt_accZ= 68.1123` + +Compared with Edge Impulse result features: + +`[-0.3813, 1.1696, 65.3726]` + +## Spectral features + +The filtered signal is passed to the Spectral power section, which computes the **FFT** to generate the spectral features. + +Since the sampled window is usually larger than the FFT size, the window will be broken into frames (or "sub-windows"), and the FFT is calculated over each frame. + +**FFT length** - The FFT size. This determines the number of FFT bins and the resolution of frequency peaks that can be separated. A low number means more signals will average together in the same FFT bin, but it also reduces the number of features and model size. A high number will separate more signals into separate bins, generating a larger model. + +- The total number of Spectral Power features will vary depending on how you set the filter and FFT parameters. With No filtering, the number of features is 1/2 of the FFT Length. + +**Spectral Power - Welch's method** + +We should use [Welch's method](https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.signal.welch.html) to split the signal on the frequency domain in bins and calculate the power spectrum for each bin. This method divides the signal into overlapping segments, applies a window function to each segment, computes the periodogram of each segment using DFT, and averages them to obtain a smoother estimate of the power spectrum. + +``` python +# Function used by Edge Impulse instead of scipy.signal.welch(). +def welch_max_hold(fx, sampling_freq, nfft, n_overlap): + n_overlap = int(n_overlap) + spec_powers = [0 for _ in range(nfft//2+1)] + ix = 0 + while ix <= len(fx): + # Slicing truncates if end_idx > len, and rfft will auto-zero pad + fft_out = np.abs(np.fft.rfft(fx[ix:ix+nfft], nfft)) + spec_powers = np.maximum(spec_powers, fft_out**2/nfft) + ix = ix + (nfft-n_overlap) + return np.fft.rfftfreq(nfft, 1/sampling_freq), spec_powers +``` + +Applying the above function to 3 signals: + +``` python +fax,Pax = welch_max_hold(accX, fs, FFT_Lenght, 0) +fay,Pay = welch_max_hold(accY, fs, FFT_Lenght, 0) +faz,Paz = welch_max_hold(accZ, fs, FFT_Lenght, 0) +specs = [Pax, Pay, Paz ] +``` + +We can plot the Power Spectrum P(f): + +``` python +plt.plot(fax,Pax, label='accX') +plt.plot(fay,Pay, label='accY') +plt.plot(faz,Paz, label='accZ') +plt.legend(loc='upper right') +plt.xlabel('Frequency (Hz)') +#plt.ylabel('PSD [V**2/Hz]') +plt.ylabel('Power') +plt.title('Power spectrum P(f) using Welch\'s method') +plt.grid() +plt.box(False) +plt.show() +``` + +![](images/imgs_dsp_spectral_features/fft.png){fig-align="center" width="6.5in"} + +Besides the Power Spectrum, we can also include the skewness and kurtosis of the features in the frequency domain (should be available on a new version): + +``` python +spec_skew = [skew(x, bias=False) for x in specs] +spec_kurtosis = [kurtosis(x, bias=False) for x in specs] +``` + +Let's now list all Spectral features per axis and compare them with EI: + +``` python +print("EI Processed Spectral features (accX): ") +print(features[3:N_feat_axis][0:]) +print("\nCalculated features:") +print (round(spec_skew[0],4)) +print (round(spec_kurtosis[0],4)) +[print(round(x, 4)) for x in Pax[1:]][0] +``` + +EI Processed Spectral features (accX): + +2.398, 3.8924, 24.6841, 9.6303, 8.4867, 7.7793, 2.9963, 5.6242, 3.4198, 4.2735 + +Calculated features: + +2.9069 8.5569 24.6844 9.6304 8.4865 7.7794 2.9964 5.6242 3.4198 4.2736 + +``` python +print("EI Processed Spectral features (accY): ") +print(features[16:26][0:]) #13: 3+N_feat_axis; 26 = 2x N_feat_axis +print("\nCalculated features:") +print (round(spec_skew[1],4)) +print (round(spec_kurtosis[1],4)) +[print(round(x, 4)) for x in Pay[1:]][0] +``` + +EI Processed Spectral features (accY): + +0.9426, -0.8039, 5.429, 0.999, 1.0315, 0.9459, 1.8117, 0.9088, 1.3302, 3.112 + +Calculated features: + +1.1426 -0.3886 5.4289 0.999 1.0315 0.9458 1.8116 0.9088 1.3301 3.1121 + +``` python +print("EI Processed Spectral features (accZ): ") +print(features[29:][0:]) #29: 3+(2*N_feat_axis); +print("\nCalculated features:") +print (round(spec_skew[2],4)) +print (round(spec_kurtosis[2],4)) +[print(round(x, 4)) for x in Paz[1:]][0] +``` + +EI Processed Spectral features (accZ): + +0.3117, -1.3812, 0.0606, 0.057, 0.0567, 0.0976, 0.194, 0.2574, 0.2083, 0.166 + +Calculated features: + +0.3781 -1.4874 0.0606 0.057 0.0567 0.0976 0.194 0.2574 0.2083 0.166 + +## Time-frequency domain + +### Wavelets + +[Wavelet](https://en.wikipedia.org/wiki/Wavelet) is a powerful technique for analyzing signals with transient features or abrupt changes, such as spikes or edges, which are difficult to interpret with traditional Fourier-based methods. + +Wavelet transforms work by breaking down a signal into different frequency components and analyzing them individually. The transformation is achieved by convolving the signal with a **wavelet function**, a small waveform centered at a specific time and frequency. This process effectively decomposes the signal into different frequency bands, each of which can be analyzed separately. + +One of the critical benefits of wavelet transforms is that they allow for time-frequency analysis, which means that they can reveal the frequency content of a signal as it changes over time. This makes them particularly useful for analyzing non-stationary signals, which vary over time. + +Wavelets have many practical applications, including signal and image compression, denoising, feature extraction, and image processing. + +Let's select Wavelet on the Spectral Features block in the same project: + +- Type: Wavelet +- Wavelet Decomposition Level: 1 +- Wavelet: bior1.3 + +![](images/imgs_dsp_spectral_features/fft_result.png){fig-align="center"} + +**The Wavelet Function** + +``` python +wavelet_name='bior1.3' +num_layer = 1 + +wavelet = pywt.Wavelet(wavelet_name) +[phi_d,psi_d,phi_r,psi_r,x] = wavelet.wavefun(level=5) +plt.plot(x, psi_d, color='red') +plt.title('Wavelet Function') +plt.ylabel('Value') +plt.xlabel('Time') +plt.grid() +plt.box(False) +plt.show() +``` + +![](images/imgs_dsp_spectral_features/wav.png){fig-align="center" width="6.5in"} + +As we did before, let's copy and past the Processed Features: + +![](images/imgs_dsp_spectral_features/wav_processed.png){fig-align="center" width="6.5in"} + +``` python +features = [3.6251, 0.0615, 0.0615, -7.3517, -2.7641, 2.8462, 5.0924, ...] +N_feat = len(features) +N_feat_axis = int(N_feat/n_sensors) +``` + +Edge Impulse computes the [Discrete Wavelet Transform (DWT)](https://pywavelets.readthedocs.io/en/latest/ref/dwt-discrete-wavelet-transform.html) for each one of the Wavelet Decomposition levels selected. After that, the features will be extracted. + +In the case of **Wavelets**, the extracted features are *basic statistical values*, *crossing values*, and *entropy.* There are, in total, 14 features per layer as below: + +- \[11\] Statiscal Features: **n5, n25, n75, n95, mean, median,** standard deviation **(std)**, variance **(var)** root mean square **(rms), kurtosis**, and skewness **(skew)**. +- \[2\] Crossing Features: Zero crossing rate **(zcross)** and mean crossing rate **(mcross)** are the times that the signal passes through the baseline (y = 0) and the average level (y = u) per unit of time, respectively +- \[1\] Complexity Feature: **Entropy** is a characteristic measure of the complexity of the signal + +All the above 14 values are calculated for each Layer (including L0, the original signal) + +- The total number of features varies depending on how you set the filter and the number of layers. For example, with \[None\] filtering and Level\[1\], the number of features per axis will be 14 x 2 (L0 and L1) = 28. For the three axes, we will have a total of 84 features. + +### Wavelet Analysis + +Wavelet analysis decomposes the signal (**accX, accY**, **and accZ**) into different frequency components using a set of filters, which separate these components into low-frequency (slowly varying parts of the signal containing long-term patterns), such as **accX_l1, accY_l1, accZ_l1** and, high-frequency (rapidly varying parts of the signal containing short-term patterns) components, such as **accX_d1, accY_d1, accZ_d1**, permitting the extraction of features for further analysis or classification. + +Only the low-frequency components (approximation coefficients, or cA) will be used. In this example, we assume only one level (Single-level Discrete Wavelet Transform), where the function will return a tuple. With a multilevel decomposition, the "Multilevel 1D Discrete Wavelet Transform", the result will be a list (for detail, please see: [Discrete Wavelet Transform (DWT)](https://pywavelets.readthedocs.io/en/latest/ref/dwt-discrete-wavelet-transform.html) ) + +``` python +(accX_l1, accX_d1) = pywt.dwt(accX, wavelet_name) +(accY_l1, accY_d1) = pywt.dwt(accY, wavelet_name) +(accZ_l1, accZ_d1) = pywt.dwt(accZ, wavelet_name) +sensors_l1 = [accX_l1, accY_l1, accZ_l1] + +# Plot power spectrum versus frequency +plt.plot(accX_l1, label='accX') +plt.plot(accY_l1, label='accY') +plt.plot(accZ_l1, label='accZ') +plt.legend(loc='lower right') +plt.xlabel('Time') +plt.ylabel('Value') +plt.title('Wavelet Approximation') +plt.grid() +plt.box(False) +plt.show() +``` + +![](images/imgs_dsp_spectral_features/wavelet_input.png){fig-align="center" width="6.5in"} + +### Feature Extraction + +Let's start with the basic statistical features. Note that we apply the function for both the original signals and the resultant cAs from the DWT: + +``` python +def calculate_statistics(signal): + n5 = np.percentile(signal, 5) + n25 = np.percentile(signal, 25) + n75 = np.percentile(signal, 75) + n95 = np.percentile(signal, 95) + median = np.percentile(signal, 50) + mean = np.mean(signal) + std = np.std(signal) + var = np.var(signal) + rms = np.sqrt(np.mean(np.square(signal))) + return [n5, n25, n75, n95, median, mean, std, var, rms] + +stat_feat_l0 = [calculate_statistics(x) for x in sensors] +stat_feat_l1 = [calculate_statistics(x) for x in sensors_l1] +``` + +The Skelness and Kurtosis: + +``` python +skew_l0 = [skew(x, bias=False) for x in sensors] +skew_l1 = [skew(x, bias=False) for x in sensors_l1] +kurtosis_l0 = [kurtosis(x, bias=False) for x in sensors] +kurtosis_l1 = [kurtosis(x, bias=False) for x in sensors_l1] +``` + +**Zero crossing (zcross)** is the number of times the wavelet coefficient crosses the zero axis. It can be used to measure the signal's frequency content since high-frequency signals tend to have more zero crossings than low-frequency signals. + +**Mean crossing (mcross)**, on the other hand, is the number of times the wavelet coefficient crosses the mean of the signal. It can be used to measure the amplitude since high-amplitude signals tend to have more mean crossings than low-amplitude signals. + +``` python +def getZeroCrossingRate(arr): + my_array = np.array(arr) + zcross = float("{0:.2f}".format((((my_array[:-1] * my_array[1:]) < 0).su m())/len(arr))) + return zcross + +def getMeanCrossingRate(arr): + mcross = getZeroCrossingRate(np.array(arr) - np.mean(arr)) + return mcross + +def calculate_crossings(list): + zcross=[] + mcross=[] + for i in range(len(list)): + zcross_i = getZeroCrossingRate(list[i]) + zcross.append(zcross_i) + mcross_i = getMeanCrossingRate(list[i]) + mcross.append(mcross_i) + return zcross, mcross + +cross_l0 = calculate_crossings(sensors) +cross_l1 = calculate_crossings(sensors_l1) +``` + +In wavelet analysis, **entropy** refers to the degree of disorder or randomness in the distribution of wavelet coefficients. Here, we used Shannon entropy, which measures a signal's uncertainty or randomness. It is calculated as the negative sum of the probabilities of the different possible outcomes of the signal multiplied by their base 2 logarithm. In the context of wavelet analysis, Shannon entropy can be used to measure the complexity of the signal, with higher values indicating greater complexity. + +``` python +def calculate_entropy(signal, base=None): + value, counts = np.unique(signal, return_counts=True) + return entropy(counts, base=base) + +entropy_l0 = [calculate_entropy(x) for x in sensors] +entropy_l1 = [calculate_entropy(x) for x in sensors_l1] +``` + +Let's now list all the wavelet features and create a list by layers. + +``` python +L1_features_names = ["L1-n5", "L1-n25", "L1-n75", "L1-n95", "L1-median", "L1-mean", "L1-std", "L1-var", "L1-rms", "L1-skew", "L1-Kurtosis", "L1-zcross", "L1-mcross", "L1-entropy"] + +L0_features_names = ["L0-n5", "L0-n25", "L0-n75", "L0-n95", "L0-median", "L0-mean", "L0-std", "L0-var", "L0-rms", "L0-skew", "L0-Kurtosis", "L0-zcross", "L0-mcross", "L0-entropy"] + +all_feat_l0 = [] +for i in range(len(axis)): + feat_l0 = stat_feat_l0[i]+[skew_l0[i]]+[kurtosis_l0[i]]+[cross_l0[0][i]]+[cross_l0[1][i]]+[entropy_l0[i]] + [print(axis[i]+' '+x+'= ', round(y, 4)) for x,y in zip(L0_features_names, feat_l0)][0] + all_feat_l0.append(feat_l0) +all_feat_l0 = [item for sublist in all_feat_l0 for item in sublist] +print(f"\nAll L0 Features = {len(all_feat_l0)}") + +all_feat_l1 = [] +for i in range(len(axis)): +feat_l1 = stat_feat_l1[i]+[skew_l1[i]]+[kurtosis_l1[i]]+[cross_l1[0][i]]+[cross_l1[1][i]]+[entropy_l1[i]] +[print(axis[i]+' '+x+'= ', round(y, 4)) for x,y in zip(L1_features_names, feat_l1)][0] +all_feat_l1.append(feat_l1) +all_feat_l1 = [item for sublist in all_feat_l1 for item in sublist] +print(f"\nAll L1 Features = {len(all_feat_l1)}") +``` + +![](images/imgs_dsp_spectral_features/wav_result.png){fig-align="center" width="3.58in"} + +## Conclusion + +Edge Impulse Studio is a powerful online platform that can handle the pre-processing task for us. Still, given our engineering perspective, we want to understand what is happening under the hood. This knowledge will help us find the best options and hyper-parameters for tuning our projects. + +Daniel Situnayake wrote in his [blog:](https://situnayake.com/) "Raw sensor data is highly dimensional and noisy. Digital signal processing algorithms help us sift the signal from the noise. DSP is an essential part of embedded engineering, and many edge processors have on-board acceleration for DSP. As an ML engineer, learning basic DSP gives you superpowers for handling high-frequency time series data in your models." I recommend you read Dan's excellent post in its totality: [nn to cpp: What you need to know about porting deep learning models to the edge](https://situnayake.com/2023/03/21/nn-to-cpp.html). diff --git a/images/imgs_dsp_spectral_features/case_study.png b/images/imgs_dsp_spectral_features/case_study.png new file mode 100644 index 0000000000000000000000000000000000000000..cd435677cb2b2b0278c03e922fe48f005a8209f0 GIT binary patch literal 24972 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 ePEAuFtG&;6?s@N>pRZaP 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 literal 0 HcmV?d00001 diff --git a/images/imgs_dsp_spectral_features/features.png b/images/imgs_dsp_spectral_features/features.png new file mode 100644 index 0000000000000000000000000000000000000000..6bac98f2fc1bee975cbe055bbbadb70db975ef1a GIT binary patch literal 21923 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 bN%~F{Y&w1(dwk(lg-0dwZ-wXLx6$7KAMj6B literal 0 HcmV?d00001 diff --git a/images/imgs_dsp_spectral_features/fft.png b/images/imgs_dsp_spectral_features/fft.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5cdc6ce5d10b546a9a7573fb4fab2b69ef1f6e GIT binary patch literal 9299 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 XDj$eQasdAf0f8tfs6or*OalHF-wLqq literal 0 HcmV?d00001 diff --git a/images/imgs_dsp_spectral_features/fft_result.png b/images/imgs_dsp_spectral_features/fft_result.png new file mode 100644 index 0000000000000000000000000000000000000000..501782f774642d7da41552122f19236a638a8df9 GIT binary patch literal 35897 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υ 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 literal 0 HcmV?d00001 diff --git a/images/imgs_dsp_spectral_features/kurto.png b/images/imgs_dsp_spectral_features/kurto.png new file mode 100644 index 0000000000000000000000000000000000000000..f9765c641294e28212bef33ff18efcef6b42ccb2 GIT binary patch literal 7070 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 RrN4qXYjb;Ov#D3|e*hAZ`mg{1 literal 0 HcmV?d00001 diff --git a/images/imgs_dsp_spectral_features/sample_no_mean.png b/images/imgs_dsp_spectral_features/sample_no_mean.png new file mode 100644 index 0000000000000000000000000000000000000000..64d6c6e4665e18fffa7b22597633cc3f581366ba GIT binary patch literal 23419 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

    1|#kRdkI`h6*SloC> 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 n7GnMXDzyLS(&jTxJUrzgi1CxRP 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 TzJKF?FJo(|>8X}0TZjK2HeJ1@ literal 0 HcmV?d00001 diff --git a/images/imgs_dsp_spectral_features/skew_2.png b/images/imgs_dsp_spectral_features/skew_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fee54d852b5566925307bc6e183429e060353359 GIT binary patch literal 5601 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 PsVI58_;h{ow(@@fYd$&w literal 0 HcmV?d00001 diff --git a/images/imgs_dsp_spectral_features/v1.png b/images/imgs_dsp_spectral_features/v1.png new file mode 100644 index 0000000000000000000000000000000000000000..23a0c349287c4fbfff448a8eef4902b1418ffe6a GIT binary patch literal 26784 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 literal 0 HcmV?d00001 diff --git a/images/imgs_dsp_spectral_features/v1_features.png b/images/imgs_dsp_spectral_features/v1_features.png new file mode 100644 index 0000000000000000000000000000000000000000..47ab6794b962027b46e8451749abe0bbb7158f62 GIT binary patch literal 33316 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 Pj?|Hm^^}L2KkNS&W>Fq| literal 0 HcmV?d00001 diff --git a/images/imgs_dsp_spectral_features/wav.png b/images/imgs_dsp_spectral_features/wav.png new file mode 100644 index 0000000000000000000000000000000000000000..ea7a86588950f95ce0ab15f552f746be5c791d3a GIT binary patch literal 8547 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 literal 0 HcmV?d00001 diff --git a/images/imgs_dsp_spectral_features/wav_processed.png b/images/imgs_dsp_spectral_features/wav_processed.png new file mode 100644 index 0000000000000000000000000000000000000000..de1ccdb0a9f50efcb19d88abe20c747ffb137b09 GIT binary patch literal 8858 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 I?i8H+7k*Sgi~s-t literal 0 HcmV?d00001 diff --git a/images/imgs_dsp_spectral_features/wav_result.png b/images/imgs_dsp_spectral_features/wav_result.png new file mode 100644 index 0000000000000000000000000000000000000000..8583c324137911ca45e84bba5cd95c1b4cee7229 GIT binary patch literal 49110 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

    JE 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 Z9bD81FM{6%g4pwH!Od( Date: Tue, 7 Nov 2023 09:04:28 -0500 Subject: [PATCH 2/2] Removing duplicate, previously renamed --- Motion_Classif_Anomaly_Detect.qmd | 404 ------------------------------ 1 file changed, 404 deletions(-) delete mode 100644 Motion_Classif_Anomaly_Detect.qmd diff --git a/Motion_Classif_Anomaly_Detect.qmd b/Motion_Classif_Anomaly_Detect.qmd deleted file mode 100644 index bcddb36c..00000000 --- a/Motion_Classif_Anomaly_Detect.qmd +++ /dev/null @@ -1,404 +0,0 @@ -# Motion Classification and Anomaly Detection {.unnumbered} - -## Introduction - -Transportation is the backbone of global commerce. Millions of containers are transported daily via various means, such as ships, trucks, and trains, to destinations worldwide. Ensuring these containers' safe and efficient transit is a monumental task that requires leveraging modern technology, and TinyML is undoubtedly one of them. - -In this hands-on tutorial, we will work to solve real-world problems related to transportation. We will develop a Motion Classification and Anomaly Detection system using the Arduino Nicla Vision board, the Arduino IDE, and the Edge Impulse Studio. This project will help us understand how containers experience different forces and motions during various phases of transportation, such as terrestrial and maritime transit, vertical movement via forklifts, and stationary periods in warehouses. - -### Learning Objectives - -1. Setting up the Arduino Nicla Vision Board -2. Data Collection and Preprocessing -3. Building the Motion Classification Model -4. Implementing Anomaly Detection -5. Real-world Testing and Analysis -6. Conclusion and Next Steps - -By the end of this tutorial, you'll have a working prototype that can classify different types of motion and detect anomalies during the transportation of containers. This knowledge can be a stepping stone to more advanced projects in the burgeoning field of TinyML involving vibration. - -## IMU Installation and testing - -For this project, we will use an accelerometer. As discussed in the Hands-On Tutorial, *Setup Nicla Vision*, the Nicla Vision Board has an onboard **6-axis IMU**: 3D gyroscope and 3D accelerometer, the [LSM6DSOX](https://www.st.com/resource/en/datasheet/lsm6dsox.pdf). Let's verify if the [LSM6DSOX IMU library](https://github.com/arduino-libraries/Arduino_LSM6DSOX) is installed. If not, install it. - -![](images/imgs_motion_classif/imu_ide.jpg){fig-align="center" width="6.5in"} - -Next, go to `Examples > Arduino_LSM6DSOX > SimpleAccelerometer` and run the accelerometer test. You can check if it works by opening the IDE Serial Monitor or Plotter. The values are in g (earth gravity), with a default range of +/- 4g: - -![](images/imgs_motion_classif/imu_test.jpg){fig-align="center" width="6.5in"} - -### Defining the Sampling frequency: - -Choosing an appropriate sampling frequency is crucial for capturing the motion characteristics you're interested in studying. The Nyquist-Shannon sampling theorem states that the sampling rate should be at least twice the highest frequency component in the signal to reconstruct it properly. In the context of motion classification and anomaly detection for transportation, the choice of sampling frequency would depend on several factors: - -1. **Nature of the Motion**: Different types of transportation (terrestrial, maritime, etc.) may involve different ranges of motion frequencies. Faster movements may require higher sampling frequencies. - -2. **Hardware Limitations**: The Arduino Nicla Vision board and any associated sensors may have limitations on how fast they can sample data. - -3. **Computational Resources**: Higher sampling rates will generate more data, which might be computationally intensive, especially critical in a TinyML environment. - -4. **Battery Life**: A higher sampling rate will consume more power. If the system is battery-operated, this is an important consideration. - -5. **Data Storage**: More frequent sampling will require more storage space, another crucial consideration for embedded systems with limited memory. - -In many human activity recognition tasks, **sampling rates of around 50 Hz to 100 Hz** are commonly used. Given that we are simulating transportation scenarios, which are generally not high-frequency events, a sampling rate in that range (50-100 Hz) might be a reasonable starting point. - -Let's define a sketch that will allow us to capture our data with a defined sampling frequency (for example, 50Hz): - -``` cpp -/* - * Based on Edge Impulse Data Forwarder Example (Arduino) - - https://docs.edgeimpulse.com/docs/cli-data-forwarder - * Developed by M.Rovai @11May23 - */ - -/* Include ----------------------------------------------------------------- */ -#include - -/* Constant defines -------------------------------------------------------- */ -#define CONVERT_G_TO_MS2 9.80665f -#define FREQUENCY_HZ 50 -#define INTERVAL_MS (1000 / (FREQUENCY_HZ + 1)) - -static unsigned long last_interval_ms = 0; -float x, y, z; - -void setup() { - Serial.begin(9600); - while (!Serial); - - if (!IMU.begin()) { - Serial.println("Failed to initialize IMU!"); - while (1); - } -} - -void loop() { - if (millis() > last_interval_ms + INTERVAL_MS) { - last_interval_ms = millis(); - - if (IMU.accelerationAvailable()) { - // Read raw acceleration measurements from the device - IMU.readAcceleration(x, y, z); - - // converting to m/s2 - float ax_m_s2 = x * CONVERT_G_TO_MS2; - float ay_m_s2 = y * CONVERT_G_TO_MS2; - float az_m_s2 = z * CONVERT_G_TO_MS2; - - Serial.print(ax_m_s2); - Serial.print("\t"); - Serial.print(ay_m_s2); - Serial.print("\t"); - Serial.println(az_m_s2); - } - } -} -``` - -Uploading the sketch and inspecting the Serial Monitor, we can see that we are capturing 50 samples per second. - -![](images/imgs_motion_classif/sampling.jpg){fig-align="center" width="6.5in"} - -> Note that with the Nicla board resting on a table (with the camera facing down), the z-axis measures around 9.8m/s$^2$, the expected earth acceleration. - -## The Case Study: Simulated Container Transportation - -We will simulate container (or better package) transportation through different scenarios to make this tutorial more relatable and practical. Using the built-in accelerometer of the Arduino Nicla Vision board, we'll capture motion data by manually simulating the conditions of: - -1. **Terrestrial** Transportation (by road or train) -2. **Maritime**-associated Transportation -3. Vertical Movement via Fork-**Lift** -4. Stationary **(Idle**) period in a Warehouse - -![](images/imgs_motion_classif/classes.jpg){fig-align="center" width="6.5in"} - -From the above images, we can define for our simulation that primarily horizontal movements (x or y axis) should be associated with the "Terrestrial class," Vertical movements (z-axis) with the "Lift Class," no activity with the "Idle class," and movement on all three axes to [Maritime class.](https://www.containerhandbuch.de/chb_e/stra/index.html?/chb_e/stra/stra_02_03_03.htm) - -![](images/imgs_motion_classif/classes_mov_def.jpg){fig-align="center" width="6.5in"} - -## Data Collection - -For data collection, we can have several options. In a real case, we can have our device, for example, connected directly to one container, and the data collected on a file (for example .CSV) and stored on an SD card (Via SPI connection) or an offline repo in your computer. Data can also be sent remotely to a nearby repository, such as a mobile phone, using Bluetooth (as done in this project: [Sensor DataLogger](https://www.hackster.io/mjrobot/sensor-datalogger-50e44d)). Once your dataset is collected and stored as a .CSV file, it can be uploaded to the Studio using the [CSV Wizard tool](https://docs.edgeimpulse.com/docs/edge-impulse-studio/data-acquisition/csv-wizard). - -> In this [video](https://youtu.be/2KBPq_826WM), you can learn alternative ways to send data to the Edge Impulse Studio. - -### Connecting the device to Edge Impulse - -We will connect the Nicla directly to the Edge Impulse Studio, which will also be used for data pre-processing, model training, testing, and deployment. For that, you have two options: - -1. Download the latest firmware and connect it directly to the `Data Collection` section. -2. Use the [CLI Data Forwarder](https://docs.edgeimpulse.com/docs/edge-impulse-cli/cli-data-forwarder) tool to capture sensor data from the sensor and send it to the Studio. - -Option 1 is more straightforward, as we saw in the *Setup Nicla Vision* hands-on, but option 2 will give you more flexibility regarding capturing your data, such as sampling frequency definition. Let's do it with the last one. - -Please create a new project on the Edge Impulse Studio (EIS) and connect the Nicla to it, following these steps: - -1. Install the [Edge Impulse CLI](https://docs.edgeimpulse.com/docs/edge-impulse-cli/cli-installation) and the [Node.js](https://nodejs.org/en/) into your computer. -2. Upload a sketch for data capture (the one discussed previously in this tutorial). -3. Use the [CLI Data Forwarder](https://docs.edgeimpulse.com/docs/edge-impulse-cli/cli-data-forwarder) to capture data from the Nicla's accelerometer and send it to the Studio, as shown in this diagram: - -![](images/imgs_motion_classif/data-forw.jpg){fig-align="center" width="5.25in"} - -Start the [CLI Data Forwarder](https://docs.edgeimpulse.com/docs/edge-impulse-cli/cli-data-forwarder) on your terminal, entering (if it is the first time) the following command: - -``` -$ edge-impulse-data-forwarder --clean -``` - -Next, enter your EI credentials and choose your project, variables (for example, *accX,* *accY*, and *accZ*), and device name (for example, *NiclaV*: - -![](images/imgs_motion_classif/term.jpg){fig-align="center" width="6.5in"} - -Go to the `Devices` section on your EI Project and verify if the device is connected (the dot should be green): - -![](images/imgs_motion_classif/device.jpg){fig-align="center" width="6.5in"} - -> You can clone the project developed for this hands-on: [NICLA Vision Movement Classification](https://studio.edgeimpulse.com/public/302078/latest). - -### Data Collection - -On the `Data Acquisition` section, you should see that your board `[NiclaV]` is connected. The sensor is available: `[sensor with 3 axes (accX, accY, accZ)]` with a sampling frequency of `[50Hz]`. The Studio suggests a sample length of `[10000]` ms (10s). The last thing left is defining the sample label. Let's start with`[terrestrial]`: - -![](images/imgs_motion_classif/collect_data.jpg){fig-align="center" width="5.64in"} - -**Terrestrial** (palettes in a Truck or Train), moving horizontally. Press `[Start Sample]`and move your device horizontally, keeping one direction over your table. After 10 s, your data will be uploaded to the studio. Here is how the sample was collected: - -![](images/imgs_motion_classif/terrestrial_result.jpg){fig-align="center" width="6.5in"} - -As expected, the movement was captured mainly in the Y-axis (green). In the blue, we see the Z axis, around -10 m/s$^2$ (the Nicla has the camera facing up). - -As discussed before, we should capture data from all four Transportation Classes. So, imagine that you have a container with a built-in accelerometer facing the following situations: - -**Maritime** (pallets in boats into an angry ocean). The movement is captured on all three axes: - -![](images/imgs_motion_classif/maritime_result.jpg){fig-align="center" width="6.5in"} - -**Lift** (Palettes being handled vertically by a Forklift). Movement captured only in the Z-axis: - -![](images/imgs_motion_classif/lift_result.jpg){fig-align="center" width="6.5in"} - -**Idle** (Paletts in a warehouse). No movement detected by the accelerometer: - -![](images/imgs_motion_classif/idle_result.jpg){fig-align="center" width="6.5in"} - -You can capture, for example, 2 minutes (twelve samples of 10 seconds) for each of the four classes (a total of 8 minutes of data). Using the `three dots` menu after each one of the samples, select 2 of them, reserving them for the Test set. Alternatively, you can use the automatic `Train/Test Split tool` on the `Danger Zone` of `Dashboard` tab. Below, you can see the resulting dataset: - -![](images/imgs_motion_classif/dataset.jpg){fig-align="center" width="6.5in"} - -Once you have captured your dataset, you can explore it in more detail using the [Data Explorer](https://docs.edgeimpulse.com/docs/edge-impulse-studio/data-acquisition/data-explorer), a visual tool to find outliers or mislabeled data (helping to correct them). The data explorer first tries to extract meaningful features from your data (by applying signal processing and neural network embeddings) and then uses a dimensionality reduction algorithm such as [PCA](https://en.wikipedia.org/wiki/Principal_component_analysis) or [t-SNE](https://en.wikipedia.org/wiki/T-distributed_stochastic_neighbor_embedding) to map these features to a 2D space. This gives you a one-look overview of your complete dataset. - -![](images/imgs_motion_classif/data_explorer.jpg){fig-align="center" width="6.5in"} - -In our case, the dataset seems OK (good separation). But the PCA shows we can have issues between maritime (green) and lift (orange). This is expected, once on a boat, sometimes the movement can be only "vertical". - -## Impulse Design - -The next step is the definition of our Impulse, which takes the raw data and uses signal processing to extract features, passing them as the input tensor of a *learning block* to classify new data. Go to `Impulse Design` and `Create Impulse`. The Studio will suggest the basic design. Let's also add a second *Learning Block* for `Anomaly Detection`. - -![](images/imgs_motion_classif/impulse.jpg){fig-align="center" width="6.5in"} - -This second model uses a K-means model. If we imagine that we could have our known classes as clusters, any sample that could not fit on that could be an outlier, an anomaly such as a container rolling out of a ship on the ocean or falling from a Forklift. - -![](images/imgs_motion_classif/anomaly_detect.jpg){fig-align="center" width="6.5in"} - -The sampling frequency should be automatically captured, if not, enter it: `[50]`Hz. The Studio suggests a *Window Size* of 2 seconds (`[2000]` ms) with a *sliding window* of `[20]`ms. What we are defining in this step is that we will pre-process the captured data (Time-Seres data), creating a tabular dataset features) that will be the input for a Neural Networks Classifier (DNN) and an Anomaly Detection model (K-Means), as shown below: - -![](images/imgs_motion_classif/impulse-block.jpg){fig-align="center" width="6.5in"} - -Let's dig into those steps and parameters to understand better what we are doing here. - -### Data Pre-Processing Overview - -Data pre-processing is extracting features from the dataset captured with the accelerometer, which involves processing and analyzing the raw data. Accelerometers measure the acceleration of an object along one or more axes (typically three, denoted as X, Y, and Z). These measurements can be used to understand various aspects of the object's motion, such as movement patterns and vibrations. - -Raw accelerometer data can be noisy and contain errors or irrelevant information. Preprocessing steps, such as filtering and normalization, can clean and standardize the data, making it more suitable for feature extraction. In our case, we should divide the data into smaller segments or **windows**. This can help focus on specific events or activities within the dataset, making feature extraction more manageable and meaningful. The **window size** and overlap (**window increase**) choice depend on the application and the frequency of the events of interest. As a thumb rule, we should try to capture a couple of "cycles of data". - -> With a sampling rate (SR) of 50Hz and a window size of 2 seconds, we will get 100 samples per axis, or 300 in total (3 axis x 2 seconds x 50 samples). We will slide this window every 200ms, creating a larger dataset where each instance has 300 raw features. - -![](images/imgs_motion_classif/pre-process.jpg){fig-align="center" width="6.5in"} - -Once the data is preprocessed and segmented, you can extract features that describe the motion's characteristics. Some typical features extracted from accelerometer data include: - -- **Time-domain** features describe the data's statistical properties within each segment, such as mean, median, standard deviation, skewness, kurtosis, and zero-crossing rate. -- **Frequency-domain** features are obtained by transforming the data into the frequency domain using techniques like the Fast Fourier Transform (FFT). Some typical frequency-domain features include the power spectrum, spectral energy, dominant frequencies (amplitude and frequency), and spectral entropy. -- **Time-frequency** domain features combine the time and frequency domain information, such as the Short-Time Fourier Transform (STFT) or the Discrete Wavelet Transform (DWT). They can provide a more detailed understanding of how the signal's frequency content changes over time. - -In many cases, the number of extracted features can be large, which may lead to overfitting or increased computational complexity. Feature selection techniques, such as mutual information, correlation-based methods, or principal component analysis (PCA), can help identify the most relevant features for a given application and reduce the dimensionality of the dataset. The Studio can help with such feature importance calculations. - -### EI Studio Spectral Features - -Data preprocessing is a challenging area for embedded machine learning, still, Edge Impulse helps overcome this with its digital signal processing (DSP) preprocessing step and, more specifically, the [Spectral Features Block](https://docs.edgeimpulse.com/docs/edge-impulse-studio/processing-blocks/spectral-features). - -On the Studio, the collected raw dataset will be the input of a Spectral Analysis block, which is excellent for analyzing repetitive motion, such as data from accelerometers. This block will perform a DSP (Digital Signal Processing), extracting features such as [FFT](https://en.wikipedia.org/wiki/Fast_Fourier_transform) or [Wavelets](https://en.wikipedia.org/wiki/Digital_signal_processing#Wavelet). - -For our project, once the time signal is continuous, we should use FFT with, for example, a length of `[32]`. - -The per axis/channel **Time Domain Statistical features** are: - -- [RMS](https://en.wikipedia.org/wiki/Root_mean_square): 1 feature -- [Skewness](https://colab.research.google.com/corgiredirector?site=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FSkewness): 1 feature -- [Kurtosis](https://colab.research.google.com/corgiredirector?site=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FKurtosis): 1 feature - -The per axis/channel **Frequency Domain Spectral features** are: - -- [Spectral Power](https://en.wikipedia.org/wiki/Spectral_density): 16 features (FFT Length/2) -- Skewness: 1 feature -- Kurtosis: 1 feature - -So, for an FFT length of 32 points, the resulting output of the Spectral Analysis Block will be 21 features per axis (a total of 63 features). - -> You can learn more about how each feature is calculated by downloading the notebook [Edge Impulse - Spectral Features Block Analysis](https://github.com/Mjrovai/Arduino_Nicla_Vision/blob/main/Motion_Classification/Edge_Impulse_Spectral_Features_Block.ipynb) [TinyML under the hood: Spectral Analysis](https://www.hackster.io/mjrobot/tinyml-under-the-hood-spectral-analysis-94676c) or [opening it directly on Google CoLab](https://colab.research.google.com/github/Mjrovai/Arduino_Nicla_Vision/blob/main/Motion_Classification/Edge_Impulse_Spectral_Features_Block.ipynb). - -### Generating features - -Once we understand what the pre-processing does, it is time to finish the job. So, let's take the raw data (time-series type) and convert it to tabular data. For that, go to the `Spectral Features` section on the `Parameters` tab, define the main parameters as discussed in the previous section (`[FFT]` with `[32]` points), and select`[Save Parameters]`: - -![](images/imgs_motion_classif/Parameters_definition.jpg){fig-align="center" width="6.5in"} - -At the top menu, select the `Generate Features` option and the `Generate Features` button. Each 2-second window data will be converted into one data point of 63 features. - -> The Feature Explorer will show those data in 2D using [UMAP.](https://umap-learn.readthedocs.io/en/latest/) Uniform Manifold Approximation and Projection (UMAP) is a dimension reduction technique that can be used for visualization similarly to t-SNE but is also applicable for general non-linear dimension reduction. - -The visualization makes it possible to verify that after the feature generation, the classes present keep their excellent separation, which indicates that the classifier should work well. Optionally, you can analyze how important each one of the features is for one class compared with others. - -![](images/imgs_motion_classif/feature_generation.jpg){fig-align="center" width="6.5in"} - -## Models Training - -Our classifier will be a Dense Neural Network (DNN) that will have 63 neurons on its input layer, two hidden layers with 20 and 10 neurons, and an output layer with four neurons (one per each class), as shown here: - -![](images/imgs_motion_classif/model.jpg){fig-align="center" width="6.5in"} - -As hyperparameters, we will use a Learning Rate of `[0.005]`, a Batch size of `[32]`, and `[20]`% of data for validation for `[30]` epochs. After training, we can see that the accuracy is 98.5%. The cost of memory and latency is meager. - -![](images/imgs_motion_classif/train.jpg){fig-align="center" width="6.5in"} - -For Anomaly Detection, we will choose the suggested features that are precisely the most important ones in the Feature Extraction, plus the accZ RMS. The number of clusters will be `[32]`, as suggested by the Studio: - -![](images/imgs_motion_classif/anom_det_train.jpg){fig-align="center" width="6.5in"} - -## Testing - -We can verify how our model will behave with unknown data using 20% of the data left behind during the data capture phase. The result was almost 95%, which is good. You can always work to improve the results, for example, to understand what went wrong with one of the wrong results. If it is a unique situation, you can add it to the training dataset and then repeat it. - -The default minimum threshold for a considered uncertain result is `[0.6]` for classification and `[0.3]` for anomaly. Once we have four classes (their output sum should be 1.0), you can also set up a lower threshold for a class to be considered valid (for example, 0.4). You can `Set confidence thresholds` on the `three dots` menu, besides the `Classy all` button. - -![](images/imgs_motion_classif/model_testing.jpg){fig-align="center" width="6.5in"} - -You can also perform Live Classification with your device (which should still be connected to the Studio). - -> Be aware that here, you will capture real data with your device and upload it to the Studio, where an inference will be taken using the trained model (But the **model is NOT in your device**). - -## Deploy - -It is time to deploy the preprocessing block and the trained model to the Nicla. The Studio will package all the needed libraries, preprocessing functions, and trained models, downloading them to your computer. You should select the option `Arduino Library`, and at the bottom, you can choose `Quantized (Int8)` or `Unoptimized (float32)` and `[Build]`. A Zip file will be created and downloaded to your computer. - -![](images/imgs_motion_classif/deploy.jpg){fig-align="center" width="6.5in"} - -On your Arduino IDE, go to the `Sketch` tab, select `Add.ZIP Library`, and Choose the.zip file downloaded by the Studio. A message will appear in the IDE Terminal: `Library installed`. - -### Inference - -Now, it is time for a real test. We will make inferences wholly disconnected from the Studio. Let's change one of the code examples created when you deploy the Arduino Library. - -In your Arduino IDE, go to the `File/Examples` tab and look for your project, and on examples, select `Nicla_vision_fusion`: - -![](images/imgs_motion_classif/inference.jpg){fig-align="center" width="6.5in"} - -Note that the code created by Edge Impulse considers a *sensor fusion* approach where the IMU (Accelerometer and Gyroscope) and the ToF are used. At the beginning of the code, you have the libraries related to our project, IMU and ToF: - -``` cpp -/* Includes ---------------------------------------------------------------- */ -#include -#include //IMU -#include "VL53L1X.h" // ToF -``` - -> You can keep the code this way for testing because the trained model will use only features pre-processed from the accelerometer. But consider that you will write your code only with the needed libraries for a real project. - -And that is it! - -You can now upload the code to your device and proceed with the inferences. Press the Nicla `[RESET]` button twice to put it on boot mode (disconnect from the Studio if it is still connected), and upload the sketch to your board. - -Now you should try different movements with your board (similar to those done during data capture), observing the inference result of each class on the Serial Monitor: - -- **Idle and lift classes:** - -![](images/imgs_motion_classif/inference_1.jpg){fig-align="center" width="6.5in"} - -- **maritime and terrestrial**: - -![](images/imgs_motion_classif/inference_2.jpg){fig-align="center" width="6.5in"} - -Note that in all situations above, the value of the `anomaly score` was smaller than 0.0. Try a new movement that was not part of the original dataset, for example, "rolling" the Nicla, facing the camera upside-down, as a container falling from a boat or even a boat accident: - -- **anomaly detection**: - -![](images/imgs_motion_classif/anomaly-boat.jpg){fig-align="center" width="6.5in"} - -In this case, the anomaly is much bigger, over 1.00 - -### Post-processing - -Now that we know the model is working since it detects the movements, we suggest that you modify the code to see the result with the NiclaV completely offline (disconnected from the PC and powered by a battery, a power bank, or an independent 5V power supply). - -The idea is to do the same as with the KWS project: if one specific movement is detected, a specific LED could be lit. For example, if *terrestrial* is detected, the Green LED will light; if *maritime*, the Red LED will light, if it is a *lift,* the Blue LED will light; and if no movement is detected *(idle*), the LEDs will be OFF. You can also add a condition when an anomaly is detected, in this case, for example, a white color can be used (all e LEDs light simultaneously). - -## Conclusion - -> The notebooks and codes used in this hands-on tutorial will be found on the [GitHub](https://github.com/Mjrovai/Arduino_Nicla_Vision/tree/main/Motion_Classification) repository. - -Before we finish, consider that Movement Classification and Object Detection can be utilized in many applications across various domains. Here are some of the potential applications: - -### Case Applications - -#### Industrial and Manufacturing - -- **Predictive Maintenance**: Detecting anomalies in machinery motion to predict failures before they occur. -- **Quality Control**: Monitoring the motion of assembly lines or robotic arms for precision assessment and deviation detection from the standard motion pattern. -- **Warehouse Logistics**: Managing and tracking the movement of goods with automated systems that classify different types of motion and detect anomalies in handling. - -#### Healthcare - -- **Patient Monitoring**: Detecting falls or abnormal movements in the elderly or those with mobility issues. -- **Rehabilitation**: Monitoring the progress of patients recovering from injuries by classifying motion patterns during physical therapy sessions. -- **Activity Recognition**: Classifying types of physical activity for fitness applications or patient monitoring. - -#### Consumer Electronics - -- **Gesture Control**: Interpreting specific motions to control devices, such as turning on lights with a hand wave. -- **Gaming**: Enhancing gaming experiences with motion-controlled inputs. - -#### Transportation and Logistics - -- **Vehicle Telematics**: Monitoring vehicle motion for unusual behavior such as hard braking, sharp turns, or accidents. -- **Cargo Monitoring**: Ensuring the integrity of goods during transport by detecting unusual movements that could indicate tampering or mishandling. - -#### Smart Cities and Infrastructure - -- **Structural Health Monitoring**: Detecting vibrations or movements within structures that could indicate potential failures or maintenance needs. -- **Traffic Management**: Analyzing the flow of pedestrians or vehicles to improve urban mobility and safety. - -#### Security and Surveillance - -- **Intruder Detection**: Detecting motion patterns typical of unauthorized access or other security breaches. -- **Wildlife Monitoring**: Detecting poachers or abnormal animal movements in protected areas. - -#### Agriculture - -- **Equipment Monitoring**: Tracking the performance and usage of agricultural machinery. -- **Animal Behavior Analysis**: Monitoring livestock movements to detect behaviors indicating health issues or stress. - -#### Environmental Monitoring - -- **Seismic Activity**: Detecting irregular motion patterns that precede earthquakes or other geologically relevant events. -- **Oceanography**: Studying wave patterns or marine movements for research and safety purposes. - -### Nicla 3D case - -For real applications, as some described before, we can add a case to our device, and Eoin Jordan, from Edge Impulse, developed a great wearable and machine health case for the Nicla range of boards. It works with a 10mm magnet, 2M screws, and a 16mm strap for human and machine health use case scenarios. Here is the link: [Arduino Nicla Voice and Vision Wearable Case](https://www.thingiverse.com/thing:5923305). - -![](images/imgs_motion_classif/case.jpg){fig-align="center" width="6.5in"} - -The applications for motion classification and anomaly detection are extensive, and the Arduino Nicla Vision is well-suited for scenarios where low power consumption and edge processing are advantageous. Its small form factor and efficiency in processing make it an ideal choice for deploying portable and remote applications where real-time processing is crucial and connectivity may be limited.