Assistance Needed with Edge Impulse Inference on STMicroelectronics B-L475E-IOT01A Board

Hi, I am reaching out for assistance with a project I am working on, specifically related to implementing Edge Impulse voice control on the STMicroelectronics B-L475E-IOT01A board.

Following the Cube.MX CMSIS-PACK tutorial (Cube.MX CMSIS-PACK | Edge Impulse Documentation), I have successfully compiled the code, and everything appears to be functioning correctly. However, I am encountering discrepancies in the inference results. Despite utilizing raw data that was correctly classified within Edge Impulse, the inference results on the board differ significantly.



I am perplexed by this inconsistency and am seeking guidance to identify the root cause of this error. Could you please provide assistance in troubleshooting this issue?

Here is the link to my Edge Impulse project: Voice_control - Dashboard - Edge Impulse
Here is the link to my STM32 project: GitHub - Brighttttttttt/Voice_control

Your expertise and guidance in resolving this matter would be greatly appreciated.

Thank you for your attention to this matter.

Warm regards,

Hugo

1 Like

Hi @Hcelle,

Did you deploy as a float or int8 quantized model? That can make a difference. The “Model testing” section in Studio will display results using the floating point version of the model.

Hi @shawn_edgeimpulse,

Thank you for your response.

I have tried both options, but unfortunately, neither of them seems to be working for me. I have conducted more tests on my end:

  1. I successfully deployed the Tutorial: continuous motion recognition using Cube.MX CMSIS-PACK on my STMicroelectronics B-L475E-IOT02A board. The model works well when quantized as either float or int8.

  2. I also deployed the Tutorial: responding to your voice using Cube.MX CMSIS-PACK on the same STMicroelectronics B-L475E-IOT02A board. However, I encountered the same issue that I described in my initial post.

Following these attempts, I have a hunch that there might be an issue with the MFCC block. Upon examining the output of the MFCC block, I noticed that the Processed features do not seem to align with what we would expect from the set of Raw features provided as input. This inconsistency is leading me to suspect that there might be an underlying problem with the MFCC block’s functionality in my project or before this bloc.

Input Raw features in my B-L475E-IOT02A board :

Raw features and Processed features in Edge Impulse :

Processed features in my B-L475E-IOT02A board :

Thank you for your assistance.

Hi @Hcelle,

I chatted with our engineering team. It seems that the CubeMX deployment option may be deprecated soon, and we recommend using the Open CMSIS pack as the preferred deployment option. Could you try that?

Hi @shawn_edgeimpulse,

Thanks for your answer.
I will try this, have you tutorial or documentation to implement the Open CMSIS pack in stm32cube ide ?

Hi @Hcelle,

Here is the documentation on using Open CMSIS: Embedded IDEs - Open-CMSIS | Edge Impulse Documentation

Hello @shawn_edgeimpulse,

I’ve conducted additional tests on my end, and here are the results:

Project\Deployment Cube.MX CMSIS-PACK Open CMSIS pack ST IoT Discovery Kit (.bin)
Motion recognition Works Works Works
Responding to your voice Doesn’t Work Doesn’t Work Works

Both deployments labeled as “not working” were attempted using Cube.MX CMSIS-PACK or Open CMSIS pack for the voice recognition project. I encountered the same problem as with the Cube.MX CMSIS-PACK deployment, as described in my second post.

For the Open CMSIS pack, I used CMSIS v5.9.0, CMSIS-DSP v1.15.0, CMSIS-NN v4.0.0, and EI-SDK v1.49.4. Can you confirm if these are the correct versions?

image

Additionally, I noticed 10 warnings each time during the deployment of all projects in the EI-SDK. I will further investigate these 10 warnings. It’s possible that the Motion recognition project doesn’t utilize the functions associated with these warnings, which might explain why it works while the Voice recognition project doesn’t.

Thank you for your attention to this matter.

I confirm the problem, I’ve been suffering for a week now. CUBE.MX CMSIS-PACK not working on NUCLEO STM32F767ZI, i can compile it but features wrong after dsp. and when i use float instead Q8 NN time on 200Mhz CortexM7 is 485ms!!! BUT the same project compiled for arduino XIAO NRF52 NN around 50 ms (Cortex M4 - 64Mhz). I haven’t tried it yet OPEN CMSIS on STM32F767.