Get ready for the STM32 Summit 2026 | Online, November 3
Ask questions and find answers on how to deploy, debug, and optimize AI models on ST microcontrollers, microprocessors, and smart sensors.
Most recent activity
Hello ST team, I have logged raw data by using hsdatalog_GUI.py in STM32CubeFunctionPack_DATALOG2_V2.1.1 from STEVAL-STWINKT1b board to PC and seen the FFT diagram in GUI. The acquired raw data was saved locally in an automatically generated folder. After that I tried to plot FFT figure by activing the command hsdatalog_plot.py -ft. However, figures it plot are all in time domain. Figures are attached below. What I expected is the power density spectrum over a frequency band.
Error output when trying to quantize CNN2d_ST_HandPosture_8classes_hand_posture_ST_VL53L8CX_handposture_dataset.h5 in STM Edge AI Developer Cloud. For example, the error "Could not find cuda drivers on your machine, GPU will not be used." Why do I need cuda drivers on my machine when I am running in the cloud? If anyone knows the cause of this error, please let us know.
Hi, I am implementing the new STM32 project in that I am initialized Display and camera interfaceLTDC interface enabled turning on the backlight by making PQ6 pin high and in TouchGFX created a project selected STM32N6570-DK board while run the target it is showing "cannot run the target".Display is not getting ON.I am unable to enable CSI configuration its showing "This peripheral has no parameters to be configured" when customized model also deployed in object detection demo code its not working.
Hello, I'm trying to generate C code for my Onnx model using ST Edge AI Core.I've tried both X-CUBE-AI and ST Edge AI Developer Cloud, and they gave me the same error:It's strange that Netron could still draw the correct graph containing the dimensions of input .Does this indicate that the input dimension has been successfully parsed?I tried simplifying the model input, but it still reported an error. Can anyone give me some advice? Thank you.
Hi, With the new 2.2 STEdgeAI update I have done some neural network model validations on the CM55 of the nucleo-n657x0-q board. I have also used the STLink-v3pwr to measure the power consumption while validating. What I wonder is if there is some detailed explanation on what the validation command does during its runtime, more specifically what happens on the target board. Attached is a .stpm of a example validation using my custom model with 10 data samples, as can be seen 10 spikes are recorded with some activity between them. How can this activity be classified? Is a inference the time from the start of a spike until the next spike, or is a inference only the spike and the time between them is some other activity? Thanks in advance, Brian.
Hello Everyone I am trying to evaluate and demonstrate the ISM330IS ISPU with STM32F40RE Using nano edge AI. I am following this tutorial to move step by step https://github.com/STMicroelectronics/st-mems-ispu/tree/master/tutorials/nanoedge_ai . In Nano Edge AI after deployment and compilation of library when i import the Nano edge ai library into stm32cube IDE every things is ok . Unfortuntaely when i try to use Putty i am getting this message ISPU NEAI Anomaly Detection Demo Initialization Not an N version. Can anyone please suggest how i can resolve this issue.
Hello,I am trying to transform the object detection project that can be found in ST model zoo services from bare-metal to FreeRTOS using STM32N6570-DK board.Following https://community.st.com/t5/stm32-mcus/how-to-use-freertos-with-stm32n6/ta-p/805334I was able to create a running project with some threads that blink the LEDs and display the camera input to the LCD.However when I try to add a model that performs inference in one thread, the program breaks in LL_ATON_OSAL_WFE(). I followed the directions in https://stedgeai-dc.st.com/assets/embedded-docs/stneuralart_api_and_stack.html#freertos but they are not very detailed in the context of the whole project.Is there any running example that performs inference in the NPU inside a FreeRTOS thread?There is a object detection project in https://github.com/STMicroelectronics/x-cube-n6-ai-people-detection-trackingthat I was able to run but it does not use the CMSIS RTOS2 and the FreeRTOS is configured to su
Hi,I've been using ST Edge AI Dev Cloud to benchmark my human activity recognition models on some ST platforms and I would like to do the same for the STM32N6570-DK but it only accepts quantized models and the quantization option throws and error:Executing with: {'model': '/tmp/quantization-service/0f29903b-6961-4c97-bde9-83219e06f56f/gmp_wl_24_human_activity_recognition_WISDM.h5', 'data': None, 'input_type': tf.float32, 'output_type': tf.int8, 'optimization': <Optimize.DEFAULT: 'DEFAULT'>, 'output': '/tmp/quantization-service/0f29903b-6961-4c97-bde9-83219e06f56f', 'disable_per_channel': False}Invalid value for argument `reduction`. Expected one of {'mean', None, 'sum', 'none', 'sum_over_batch_size', 'mean_with_sample_weight'}. Received: reduction=auto2025-07-31 09:19:58.238638: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them
Hello, im trying to convert a .tflite model (encoder-decoder model, with only supported layers by stedgeai) to C-code to use it in my STM32CubeIde project.When using the command:/opt/ST/STEdgeAI/2.1/Utilities/linux/stedgeai generate --model model.tflite --target stm32n6 --st-neural-art I'm getting the following error output, im not really getting my head around:ST Edge AI Core v2.1.0-20194 329b0e98d WARNING: gemm_0 is not quantized WARNING: nl_0_nl is not quantized WARNING: gemm_1 is not quantized WARNING: nl_1_nl is not quantized WARNING: gemm_2 is not quantized WARNING: nl_2_nl is not quantized WARNING: reshape_3 is not quantized WARNING: gemm_4 is not quantized WARNING: nl_5 is not quantized WARNING: reshape_6 is not quantized >>>> EXECUTING NEURAL ART COMPILER /opt/ST/STEdgeAI/2.1/Utilities/linux/atonn -i "/local/projekte/Uni/Masterarbeit/EmbeddedModelsSt/gcode_prediction_dataset/gcode_prediction_model/STM_friendly_LSTM_model/st_ai_output/gcode_mo
@Julian E.I’m porting the X‑CUBE‑AI v10.0.0 “hello_world” application, originally for the STM32N6570‑DK (path: X‑CUBE‑AI\10.0.0\Projects\STM32N6570‑DK\Applications\hello_world), to the NUCLEO-N657X0-Q board with the use of lwIP to receive the images and send the results to my computer.When I download and run the firmware from CubeIDE, everything works: the link comes up, and the neural‑network inference runs. When I boot from Flash, the code begins, prints the initial clock values and then halts. The same problem occurs without the use of lwIP, just by running the neural network.For reference, the image below shows a complete successful log under CubeIDE: While this image shows the output stopping before the new clock configuration values appear under flash boot: I have also attached main.c, misc_toolbox.c, system_clock_config.c and provided the linker script.Any guidance or suggestions would be greatly appreciated. Thank you for your time.The linker script could not be attac
Dear ST,i convert my tflite of yolov8n without nms to neural-art related files in STM32N6 using stedgeai cli command as belowafter that, i have to apply it to cubeISE which import NUCLEO-N657X0-Q object detection example.i have a below question to be answered from you.1. what is ll_aton? which looks like a runtime such as cuda runtime for nvidia gpu. any link for detailed?2. please describe the overall on how to apply my weight with fine tunning from yolov8n to STM32N6 neural-art. thanks
I validated the AI network using the‘Validate on desktop‘ tool,and the accuracy was high.But when I debugged the AI C-program(generated by CUBE AI) with the same input data, the result have large difference with correct output values.Could you help me understand the reason for this discrepancy.The MCU is STM32G4 Series the network is run in this function:batch = ai_network_run(network, ai_input, ai_output);I only changed this two function in app_x-cube-ai.c:acquire_and_process_data() { float test_data[4] = {1.094757,20,1,0}; ai_input->data = test_data; float inputread[4]; for(int idx=0;idx<4;idx++) { inputread[idx] = *((float*)(ai_input->data)+idx); } } post_process() { float outputread[2] = {0}; for(int idx=0;idx<2;idx++) { outputread[idx] = *((float*)(ai_output->data)+idx); } }Edited to apply source code formatting - please see How to insert source code for future reference.
Hi, I'm newbee of AI.I started simple appl for linear regression. I start with stm32cube_ide, not MX I do enable X-CUBE-AI core.But, I cannot find app_x-cube-ai.c which is exprected to be generated.BRPaul
Hello,im currently working on utilizing a Keras RNN (seq2seq model) on the STM32N6570-DK to generate text from a certain input.The inference of the .h5 model on my laptop works with a .pkl file that has mapping of the input to the output. When converting the model to tflite the .pkl isnt included.So my question ist, what do i need to do, to convert the .pkl mappings to make use of it when im doing the inference of the model with the generated C-Code from stedgeai?I wasnt able to find a lot of information on this topic so far, so im thankful, if anyone would be able to help me in this case!Kind regards!
I am using the object detection code from ST model zoo. I have a small image of 4X4 example: const uint8_t myImage[NN_HEIGHT] [ NN_WIDTH]= {// Row 0 (all black){ 255, 0, 0, 0},// Row 1 (black, then white dot, then black){ 0, 255, 255, 0}, // Pixels 1 and 2 are white (center of a 2x2 dot)// Row 2 (black, then white dot, then black){0, 255, 255, 0},// Pixels 1 and 2 are white// Row 3 (all black){0, 0, 0, 0}};I want to see the output as number of dots.I dont use the camera or display unit of the N6-DK board and I am using memcpy to load the image to the input buffer(nn_in)The image is also loading into the input buffer as when I put a bp at the memcpy line and see nn_in its first value is shown as 255 'y'but when I see the output which is stored in pp_output the number of objects detected are 0.Why do i see that value??Is using memcpy to load images to input buffer correct?If not, why and how can I adopt another workflow?Is there an issue with my image input??Thanks in advance!
[INFO] : Quantization complete.[INFO] : Evaluating the quantized model using validation_set...INFO: Created TensorFlow Lite XNNPACK delegate for CPU.100%|██████████| 36/36 [05:01<00:00, 8.37s/it][INFO] : Accuracy of quantized model on validation_set = 98.17%[INFO] : Evaluation complete.[INFO] : Using the local download of STM32Cube.AI. Link to download https://www.st.com/en/embedded-software/x-cube-ai.html[INFO] : Starting the model memory footprints estimation...[WARN] : STM32Cube.AI installed version 2.1.0 does not match the version specified in user_config.yaml file 10.1.0 ![INFO] : STM32Cube.AI version 2.1.0 used.Error executing job with overrides: []Traceback (most recent call last):File "C:\st\stm32ai-modelzoo-services-main\.venv\lib\site-packages\clearml\binding\hydra_bind.py", line 230, in _patched_task_functionreturn task_function(a_config, *a_args, **a_kwargs)File "C:\st\stm32ai-modelzoo-services-main\image_classification\stm32ai_main.py", line 399, in mainprocess_mode(mod
I'm trying to deploy my own simple AI model (Handwritten digit recognition) on my STM32N6570-DK board. I have already finished this project on STMF407 discovery board using Keil MDK. However, linker garbage problem popped up and I don't know how to solve it.First I created the project following the example below using STM32CubeIDE:https://community.st.com/t5/stm32-mcus/how-to-create-an-stm32n6-fsbl-load-and-run/ta-p/768206 and the led worked properly. Then I imported the pre-trained onnx model to X-CUEB-AI and generated the code. Here two problem occurred:1. The folder X-CUBE-AI appeared under the FSBL project, which doesn't have enough flash and RAM to support the model. I think it should belong to the Application project.2. When I tried to build the project (and I didn't change any of the generated code), linker garbage problem occurred as shown below. For project of STM32F407 in Keil MDK, I solved the problem by changing the C language compilation mode. Also, the
I used stm32-h747 to train image classification, I used the image classification routine, but the actual effect is very biased, my quantized_model_confusion_matrix_validation_set is as shown below, is there something wrong with my configuration?
I am using the STM32N6-DK board.I am trying to execute an AI model on the STM32N6-DK board, following the instructions on the website below.How to run AI models from model zoo on STM32N6 - STMicroelectronics Community However, the software crashes when I try to execute it. After examining the process, it seems to fail at the following sequence of function calls: c LL_ATON_RT_Main(&NN_Instance_Default); LL_ATON_RT_RunEpochBlock(network_instance); __LL_ATON_RT_ExecStartEpochBlock(nn_instance->exec_state.current_epoch_block, nn_instance); ATON_ENABLE(EPOCHCTRL, ecId); The crash occurs after calling ATON_ENABLE(EPOCHCTRL, ecId) What could be the potential causes for this problem?
HiI want to use the VL53L5CX on STSW-IMG035, but I found that the sensor initialization in the source code only supports VL53L7CX and VL53L8CX.I checked the source code of STSW-IMG023 and found some differences in the sensor initialization process, so I can't directly use the code of STSW-IMG035 for VL53L5CX, is that right?But according to the document "GestureEVK_UG.pdf" in STSW-IMG035, it is mentioned that VL53L5CX can be used, and there are many comments in STSW-IMG035 about VL53L5CX(although they may be wrong), so I think that for some reason, the support for VL53L5CX was removed in the B case?How should I use VL53L5CX to develop my gesture recognition cases with STSW-IMG035? Sincerely,Phil
Hi everyone,I'm working on deploying an MLP model on STM32F746 using X-CUBE-AI. The model was converted from ONNX format, and I’m running into trouble feeding the input features and retrieving the prediction result I want to run inference with the following flow: float input_data[60] = { /* preprocessed features */ };float output_data[1]; // expecting softmax probabilitiesint output_label; // expecting predicted class label My main confusion: I'm unclear on how to actually use the interface generated by Cube.AI: What are the correct steps to initialize and fill the ai_buffer structs? Do I need to manually align my input/output arrays, or use the data_ins[] / data_outs[] generated by default? What is the purpose of macros like AI_HANDLE_PTR(...) and AI_MNETWORK_IN? I tried calling ai_mlp_run(...) like this: ai_mlp_run(network, ai_input, ai_output); but I get build errors or invalid pointer types model information : app_X-cube-ai.h:
I want to use my custom dataset that is not supported by any of the .yaml files. Each yaml file example seems to only work with a dataset that is compliant to their specific use case. For example audio event detection supports ESC format and requires preprocessing configurations -or any other type of metadata- that seems to be meaningful only for .wav files; or the image classification training yaml file requires preprocessing configurations which only make sense for image data.Can I use a custom dataset (maybe .txt or sth) to train my custom model with model zoo like in https://github.com/STMicroelectronics/stm32ai-modelzoo-services/blob/main/audio_event_detection/deployment/doc/tuto/how_to_define_and_train_my_own_model.md ? How do I tweak the user_config.yaml file in order to do so?
Original title (over long): "using stedgeai, i can generate network.c/ network_data.c/ network_data_params.c, however, how can i generate the ll-aton runtime related files?"Dear ST. How can I generate the ll-aton runtime related file with my weight such as network.c, network_data.c, network_params.c? i already generate the above c files using stedgeai cli command.I fine-tune the weight of yolov8n.pt with my dataset to best.pt and best.onnx. i can convert best.onnx to saved_models or h5, eventually tflite which includes quantization int8.after that, using stedgeai cli, it is easy to me for generating the above c files. however i can't generated aton related files. how can i generate the aton related files?for the information, i use the stm32n657 nucleo board.
hi , i want to use STM32Mx to validate my model(.onnx) on target STM32N6570-DK board ,now STM32MX is 6.15.0 and Toolchain/IDE select STM32CUBEIDE,when i connect board to PC,and click the validate on target,it show me error like this: File "C:\Users\lenovo\STM32Cube\Repository\Packs\STMicroelectronics\X-CUBE-AI\10.1.0\scripts\N6_scripts\n6_utils_pkg\config_reader.py", line 100, in sanitize_config check_path_entry_ok(self.data, k) File "C:\Users\lenovo\STM32Cube\Repository\Packs\STMicroelectronics\X-CUBE-AI\10.1.0\scripts\N6_scripts\n6_utils_pkg\config_reader.py", line 74, in check_path_entry_ok raise ValueError(f"Path for entry {key} does not exist: {rv}") ValueError: Path for entry objcopy_binary_path does not exist: C:/Users/foobar/TOOLS/gcc-arm-none-
Hi everyone,I have created a NN with tensorflow:# ----- Model Definition ----- def build_model(input_dim): model = Sequential([ InputLayer(shape=(input_dim,)), Dropout(0.2), Dense(128, activation='relu'), # increased layer size Dense(64, activation='relu'), Dense(32, activation='relu'), Dense(1, activation='linear') ]) model.compile(optimizer='adam', loss='mse', metrics=['mae']) return model model = build_model(X_train.shape[1])When I import this into X-CUBE-AI in STMCubeMX and analyze it, there are no Errors. However when I press show Graph, you can see that it imported just a single layer, even though there should be 4.When i upload the same model in ST Edge AI Developer Cloud, it does the layers correct:I can even run the benchmark in the cloud on the same STM32H7 which I have physically on my desk and it works.Because the layers are not detected correctly in my local STM32CubeMX, i get really bad performance when I validate the model. I also tried importing .h5 file
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.