Can anyone explain why the spectral analysis takes these features:
The root mean square of the filter output (1 scalar value)
The frequency and height of spectral power peaks
The average power spectral density for each bucket
I saw there is a Github repo for processing blocks but I couldn’t understand how to use it. I would really appreciate if someone help or point me to a specific reference, so that I can run a processing block spectral analysis on google colab.
RMS is a good feature to train on b/c it represents the total strength of any periodic signal of any frequency. Think of an accelerometer suddenly vibrating a lot more b/c of bearing that is wearing out on a motor. Good way to classify a possible fault.
Spectral information separates lots of classes in nature. Think of the sounds a car makes. There are normal sounds, like the engine running, but if you suddenly hear a high pitched whining, etc, now you know something has changed and is possibly wrong. This is b/c these signals (sound in this case) are at different frequencies and intensities.
This step provides some dimensionality reduction, so that you’ll be feeding less features to your model. Which makes the model smaller, which makes it easier to train, take less RAM, less latency, etc. However, if you don’t have enough buckets, or they have the wrong cut off points, you may starve your model for information it needs to classify.
Note, in an upcoming upgrade to spectral analysis, we’ll be removing the “power edges.” (the buckets you speak of) We’ll be feeding the PSD directly into the model, and if you need dimensionality reduction, we recommend doing a smaller FFT size, so that your overall impulse will be smaller and faster (whereas now, the power edges setting only provide a benefit to model size)
We’re trying to offer the best experience possible on Edge Impulse so you can focus on building embedded machine learning models efficiently. Although most of our DSP and Learning blocks are open source, it is hard work to build a complete machine learning pipeline locally.
If anyone from the community can help you, I would be very happy to see these helping interactions.
Is it possible to use the spectral analysis processing without calling to the entire classification? If it is, which is the best approach?
It would be useful for me if I could do de processing before sending the data to the PC instead of doing it after that.