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
I used "generate-n6-model.sh" script to generate "network_data.hex" file as in the repo. However, it didn't match the original file. As a result, when I programed it to dev board "STM32N6570-DK", the app only shows images, and didn't detect persons. On the other hand, if I programed the original "network_data.hex" to the board, the app did detect persons. It seemed the "st_yolo_x_nano_480_1.0_0.25_3_st_int8.tflite" file didn't match the generated hex file.
Hi Everyone,I am currently trying to run a QAT-based INT8 model for my AI application to be integrated on the STM32N6DK570 board. During the STEdgeAI (version 2.1.0) model compilation, the process freezes around 80–90% and does not proceed to completion.I’ve also observed similar behavior with other QAT models. Could you please confirm if this is a known limitation, or if there are any recommended steps or workarounds to successfully compile and run these models on the board?Please find the attached logs for your reference. Thanks,Bala
Hello ST Community!In my use of the STM32N6570-DK I have run several experiments with the kit's tools, and have arrived into some doubts regarding the overall use of the API and the models in the Model Zoo. I have the following questions:Question 1.The Input/Output of my YOLO model is Uint8_t/Float, confirmed by checking the value of the Buffer_DataType_TypeDef element in the network instance, which are both supposed to be stored in a single dimension array as suggested by the API.The output of the model as per the model zoo is (1,4+K,F), with F being proportional to the input image size, in the case of a 256x256x3 image, it's value is 1344.The value of K can be calculated by the maximum size in bytes of the output located in network.h, making the output (1,5,1344), which in a single array would mean, considering output[] as a float array buffer of the output pointer, with values normalized between [0,1]:output[0] = Center Xoutput[1] = Center Youtput[2] = Widthoutput[3] = Heightoutput[
Hello,I’m encountering an issue when trying to validate an ONNX model using CubeMX with ST Edge AI for the NUCLEO-N657X0-Q board.Here are the steps I followed:I started the project in STM32CubeMX using the Board Selector.I chose to create the project with Secure and Non-Secure domains.I kept the default board configuration for NUCLEO_N657X0-Q.Under Middlewares and Software Packs → X-CUBE-AI, I selected version 10.1.0 (STMicroelectronics.X-CUBE-AI) and enabled it. In the Artificial Intelligence section I enabled the Core, while in the Device Application I selected Validation Whether I enable or disable the “Optimal Clock Configuration” option, the result is the same.The problem:CubeMX gets stuck and does not continue to complete the process. There’s no specific error message — it just hangs indefinitely.Any advice or workaround would be appreciated.Thank you
Hi all — I’ve successfully trained → quantized → deployed one of the audio models from the STM32 AI Model Zoo to an STM32N6570-DK (N6) and can see correct output over the serial port. Now I want to deploy my own model. The model was trained on custom features. I can export to ONNX with fixed input size and compatible ops and I know how to run the quantization + deployment flows from the Model Zoo service. My questions:Preprocessing locationThe N6 audio example seems to compute only log-mel on-device. Can the Model Zoo service itself be configured to produce my custom features on the target, or is the intended approach to modify the STM32 application C code to implement my feature pipeline before inference?Using ONNX with custom featuresAnything specific I should set in the user config for ONNX quantization with a non-mel feature front-end (e.g., any flags to disable built-in mel generation assumptions)?
HiI am using STM32MPU25 to evaluate object detection, when i use stai_mpu_object_detection binary to run default ssd_mobilenet_v2 models , i can see object detection works.when i run python scripts to launch application( example : launch_bin_object_detection_testdata.sh) i see below error.root@stm32mp25-discounknownunknown:/usr/local/x-linux-ai/object-detection# sh launch_python_object_detection.shstai_mpu wrapper used :machine used = stm32mp2x with GPU/NPUuser : weston-sh: /usr/local/x-linux-ai/object-detection/stai_mpu_object_detection.py: Permission denied i assume it may be due to weston user and root user.so i copied all objection detection samples to /home/weston and gave appropriate permissions and change user to weston and launch application, i see below errors.^^^^^^^^^^^^^^^^^^^^^File "/home/weston/test/Application/ssd_mobilenet_pp.py", line 129, in get_resultsreturn locations, classes, scores^^^^^^^^^UnboundLocalError: cannot access local variable 'locations'
MERHABA, Arduino IDE'sini kullanarak bir ESP32 kartıyla NanoEdge AI Studio'yu kullanmıyorsunuz. C kütüphanesini NanoEdge AI Studio'dan aktardım, ancak bir STM32'nin bozulmasının önlenmesi için, NanoEdge AI'nın ESP32 (Xtensa mimarisi) ile uyumlu olup olmadığını merak ediyorum. Bunu Arduino IDE'de ESP32 için manuel olarak derlemenin veya uyarlamanın bir yolu var mı?
The YOLOV8 model I used, when converted to the TFlite format; The X-CUBE-AI has been deployed on STM32N6;The code was generated by CubeMX. Data has been input into the input buffer. My question is how to parse the data in the output buffer.
Hello,ST Team and Community! Recently, I've been working on implementing an AI model based on YoloV11n, built to run on an N6570. I'm trying to transform the raw memory that the model returns to me into a standard YoloV11n output, so I can have the data I need for my application. Analyzing a little deeper and doing the reverse path to link two functions documented in the LL_ATON lib: We have that, inside the network.c, generated by CubeAI, the final symbol that should have the implementation of the function simply just returns WORNG_INDEX for both LL_ATON_Set_User_Input_Buffer and LL_ATON_Set_User_Output_Buffer. Was it supposed to happen this way? Here, in the official documentation for the LL_ATON lib, it says something about a compilation flag that is required for the user to allocate buffers this way. Could this be the reason for the generation error, or is the function actually not implemented? My current settings for the cubeAI p
Im getting this error and dont understand the problem. I tried adding the suggested "--use-onnx-simplifier" from another post in the Web Command line but it didnt look like it took, here is the output: >>> stedgeai analyze --model version-RFB-320.onnx --st-neural-art custom@/tmp/stm32ai_service/7f0992f6-31d1-46c4-892e-ecc0375878b5/profile-4de288e7-27c5-4d83-814b-a8f7038dc635.json --target stm32n6 --optimize.export_hybrid True --name network --workspace workspace --output output ST Edge AI Core v2.2.0-20266 2adc00962 WARNING: Unsupported keys in the current profile custom are ignored: memory_desc > memory_desc is not a valid key anymore, use machine_desc instead INTERNAL ERROR: Order of dimensions of input cannot be interpreted I have also tried to use a transpose layer to order the inputs like [1,H, W, C] and that still caused this problem. Is there a way to have more verbose output then what i have, its not super helpful as to what to fix. I tried the transpose a
Hello, everyone, I have encountered some problems. When I use ART runtime to analyze the uint8 model, I will report an error that the format does not match, and I can pass the analysis by using MCU runtime. Is this normal? In addition, When I run the model through NPU, the output is always NAN. I don't know what caused it and how to solve it. I have configured wake-up SRAM and NPU in RIF, and here is my code and model.调试输出结果:Input buffer content check:Input[0]: -0.121942Input[1]: 0.582246Input[2]: -0.000011Input[3]: -0.000012Input[4]: -0.000015Input[5]: -0.000007Input[6]: 0.005214Input[7]: -0.008049Input[8]: -0.001116Input[9]: 0.007997Input[10]: 0.251979Input[11]: -0.014175Input[12]: 0.232821Input[13]: 0.217874Input[14]: 0.043446Input[15]: 0.241517Performing inference...Inference finished. Printing output results:Output[0]: nanOutput[1]: nanOutput[2]: nanOutput[3]: nanOutput[4]: nanOutput[5]: nanOutput[6]: nanOutput[7]: nanOutput[8]: nanOutput[9]: nanOutput[10]: nanOutput[11]: nanOutpu
Hello,I am working on deploying a custom PyTorch YOLOv11 model to the STM32N6570-DK board using the STM32 AI Developer Cloud / STM32 AI Model Zoo workflow.Currently, I have my model trained in PyTorch (.pt format), and I can also export it to ONNX. My goal is to run inference on the STM32N6570-DK with int8 quantization (TFLite or ONNX → STM32 supported format).Could you please guide me on the following:What is the recommended workflow to convert a custom YOLOv11 PyTorch model into a format compatible with STM32 AI tools?Should I first export to ONNX, then quantize to TFLite, and finally use STM32Cube.AI / STEdgeAI tools?Are there any specific constraints or optimizations needed for YOLOv11 models to run efficiently on STM32N6570-DK?Any detailed steps, documentation links, or examples would be very helpful.Thank you in advance!
안녕하세요,현재 STM32N657-DK 와 X-CUBE-AI(ST Edge AI Core v2.2.0)를 사용하고 있습니다 . TensorFlow Lite 모델을 NPU에서 실행되도록 변환했으며, 펌웨어를 성공적으로 빌드하고 플래싱할 수 있습니다.하지만 내가 전화하면: ret = LL_ATON_RT_RunEpochBlock(&NN_Instance_Default);함수가 결코 반환되지 않습니다.내가 이미 구성한 것시계 및 재설정NPU 클럭을 활성화하고 재설정을 해제했습니다. __HAL_RCC_NPU_CLK_ENABLE(); __HAL_RCC_NPU_FORCE_RESET(); __HAL_RCC_NPU_RELEASE_RESET();set_clk_sleep_mode()에서도 슬립 모드 클록이 활성화됩니다.인터럽트 라우팅보안 프로젝트에서: NVIC_DisableIRQ(NPU3_IRQn); NVIC_ClearPendingIRQ(NPU3_IRQn); NVIC_SetTargetState(NPU3_IRQn); // 비보안으로 경로 지정 NonSecure 프로젝트에서: HAL_NVIC_SetPriority(NPU3_IRQn, 0 , 0 ); HAL_NVIC_EnableIRQ(NPU3_IRQn); void NPU3_IRQHandler ( void ) { printf ( ">> NPU IRQ가 실행됨\r\n" ); ATON_STD_IRQHandler(); }RIF / RISAF 구성NPU 마스터/슬레이브 속성을 비보안 + 특권으로 구성했습니다.NonSecure에서 NPU RAM3~RAM6(0x3420_0000~0x343C_0000)에 액세스할 수 있도록 RISAF 구성을 추가했습니다. RISAF_ConfigRegion( 3 , 0x34200000 , 0x70000 , RISAF_ATTR_비보안 | RISAF_ATTR_PRIV); RISAF_ConfigRegion( 4 , 0x34270000 , 0x70000 , RISA
Hello,I want to run my own neural network on a NUCLEO-F722ZE board for classifying audio samples. Since there is an older existing example project by STM (Acoustic Scene Classification) so I kept the whole data structure quite similar to this project, using the same network topology and same input vector size.I loaded my keras .h5 file into X-CUBE-AI and was able to successfully analyze the model and generate code. After this I followed the instructions in the arcticle "How to perform motion sensing on STM32L4 IoTnode" and implemented two functions identical to the AI_Init() and AI_Run() and the respective variables. I am able to successfully initialize and create the AI model, with the ai_network_1_create_and_init() function returning 0 and the network handle being not null (my given network name is "network_1") . After this I fill the input array with data and call the AI_Run() function, which then again calls my ai_network_1_run() function, which again calls the ai_pl
Hi,I would like to check if there is any one who could guide me through the jungle of using TFLM in my software. It seems that it don't matter what I do when building a TFLM as a static library and link it to my simple test program. I have tried a lot of configurations and a lot of tries to 16 byte align the model and arena for this, but I am still getting a hard fault because of unaligned access in the AllocateTensors call.My align of the model looks like this:alignas(16) const unsigned char g_model_data[] = ...and my code using TFLM looks as follows:#include <cstring> //#include "tensorflow/lite/micro/micro_op_resolver.h" #include "tensorflow/lite/micro/micro_mutable_op_resolver.h" //#include "tensorflow/lite/micro/kernels/micro_ops.h" //#include "tensorflow/lite/micro/micro_log.h" //#include "tensorflow/lite/micro/micro_error_reporter.h" #include "tensorflow/lite/micro/micro_interpreter.h" #include "tensorflow/lite/schema/schema_generated.h" #include "tensorflow/lite/micro/sy
Now, i used yolo11 module ,cd /opt/ST/STEdgeAI/2.2/Utilities/linux/./stedgeai generate -m /home/alientek/STM32MPU_workspace/yolo11.onnx --target stm32mp25and get yolo11.nb file in the my stm32mp2 broad.x-linux-ai-benchmark -m ./yolo11n.nb╔════════════════════════════════════════════════╗║ X-LINUX-AI unified NN model benchmark ║╠════════════════════════════════╦═══════════════╣║ Machine ║ STM32MP257 ║║ CPU cores ║ 2 ║║ CPU Clock frequency ║ 1.5GHz ║║ GPU/NPU Driver Version ║ 6.4.19 ║║ GPU/NPU Clock frequency ║ 800 MHZ ║║ X-LINUX-AI Version ║ v6.0.0 ║║ ║ ║║ ║ ║╚════════════════════════════════╩═══════════════╝For hardware accelerated models, computation engine used for benchmark is NPU running at 800 MHZFor other models, computation engine uses for benchmark is CPU with 2 cores at : 1.5GHz╔══════════════════════════════════════════════════════════════════════════╗║ NBG models benchmark ║╠════════════╦═════════════════════╦═══════╦═══════╦═══════╦═══════════════╣║ Model Name ║
Hello everyone,I'm working on a project in STM32CubeIDE and I'm trying to include the CMSIS-DSP math library. During the build process, I'm running into a linker error and can't figure out what's wrong with my settings.The error message is ld.exe: cannot find -llibarm_cortexM4l_math.a: No such file or directory.I have added the path to the library in MCU GCC Linker > Libraries > Library search path (-L). I've also double-checked that the library file libarm_cortexM4l_math.a does exist in that path. I suspect the issue is how I'm specifying the library itself.Here is the full command and error from the build console:arm-none-eabi-gcc -o "stm_niso_watch_fw2_TEST.elf" @"objects.list" -llibarm_cortexM4l_math.a -mcpu=cortex-m4 -T"C:\Users\vishv\Downloads\STM32_AI\stm_niso_watch_fw2_TEST\STM32WB5MMGHX_FLASH.ld" --specs=nosys.specs -Wl,-Map="stm_niso_watch_fw2_TEST.map" -Wl,--gc-sections -static -L"C:\Users\vishv\Downloads\CMSIS_4-master\CMSIS_4-master\CMSIS\Lib\GCC" -L"C:\Users\vishv\D
Hello,I am following this tutorial:https://community.st.com/t5/stm32-mcus/how-to-build-an-ai-application-from-scratch-on-the-nucleo-n657x0/ta-p/828502After completing step 4.3 Build, I encountered linker errors when compiling the TUTO_N6_MINIMAL_AI_Appli project.Here is part of the build log:./Middlewares/ST/AI/Npu/ll_aton/ll_sw_integer.o: in function `ll_sw_forward_dequantizelinear':... undefined reference to `node_convert'./Middlewares/ST/AI/Npu/ll_aton/ll_sw_integer.o: in function `ll_sw_forward_softmax_integer':... undefined reference to `forward_sm_integer'./Middlewares/ST/AI/Npu/ll_aton/ll_sw_integer.o: in function `ll_sw_forward_resize_integer':... undefined reference to `forward_resize_nearest_is8os8'... undefined reference to `forward_resize_bilinear_is8os8'... undefined reference to `forward_upsample_zeros'My environment:STM32CubeIDE 1.19.0CubeMX 6.15.0X-CUBE-AI package (latest, bundled with CubeMX)Board: NUCLEO-N657X0Example: TUTO_N6_MINIMAL_AI (as in tutorial)Question:Is th
Hi Chris @Chris_Young_ST, Giuseppe @gpagano, Emmanuel @Emmanuel_C and Kunliang @Kunliang_YAOAre there plans to offer ST image sensors together with the STM32MP257F-DK and STM32N6570-D development boards as an alternative to the Sony image sensor in the B-CAMS-IMX board?ST has an enormously strong strategic position through its global leadership in producing both image sensors and processors. This will allow ST customers to achieve unparalleled speed, efficiency and sustainability together with rapid route to market in demanding power-sensitive and low-latency machine vision and EdgeAi applications.Our focus is on developing technologies for conservation of Europe's most beautiful and endangered dormouse, squirrel and bat species. The combination of ultra-low-power Edge AI capabilities in the STM32N657 μC and the advanced RGB-IR capabilities in ST image sensors is as exciting here as it is in the most demanding commercial machine vision applications:ht
Hello,I am trying to use miniresnet provided at [miniresnet] on B-U585I-IOT02A board.I am using STM32CubeIDE locally, following the instruction from [wiki] for setting up software environment, and from [configuration] and [deployment] documentation for configuration and deployment. I generated the C code using the CLI and am viewing inference results via the Serial Monitor.However, when I run inference, I encounter an error with code -4.It appears to come from the following condition "NbrOfBytes > 65535U" in "./STM32Cube/Projects/stm32ai-modelzoo-services/application_code/sensing_free_rtos/STM32U5/Drivers/BSP/B-U585I-IOT02A/b_u585i_iot02a_audio.c".int32_t BSP_AUDIO_IN_Record(uint32_t Instance, uint8_t *pData, uint32_t NbrOfBytes) { int32_t status = BSP_ERROR_NONE; if ((Instance >= AUDIO_IN_INSTANCES_NBR) || (pData == NULL) || (NbrOfBytes > 65535U)) { status = BSP_ERROR_WRONG_PARAM; } ...In my case, NbrOfBytes is calculated to be 66816, which
https://community.st.com/t5/stm32-mcus/how-to-build-an-ai-application-from-scratch-on-the-nucleo-n657x0/ta-p/828502There was a problem while following this guide.In dev mode, the signed binary files are programmed in cubeprogrammer and re-run in flash mode, and the blue light remains on. (The FSBL main() runs normally)I set BOOT_Application() to breakpoint through CUBEIDE and debugged line by line.An error occurred in img_size = BOOT_GetApplicationSize(uint32_t) source for CopyApplicationsource:<error: Cannot access memory at address 0x70100000>destination:<error: Cannot access memory at address 0x24050000>I have confirmed that there is an error.0x70100000 I programmed the signed application file in that areaWhat is the reason for this problem?
Hi,In STM32N6570-DK_GettingStarted_ObjectDetection project when I add another uint8 model it is stopping at app_postprocess_od_st_yolox_ui.c and it is moving to hard fault 1. I am unable to start with camera in my new project. So I am using STM32N6570-DK_GettingStarted_ObjectDetection project to deploy customising model. but when I quantise the model using CLI, I am unable to run the code it is going to hard fault.
Can I use MMAction2 with TSN or SlowFast behavior recognition models and deploy them to the STM32MP257? Does the STM32MP257 support 3D CONV operators?
The examples/code snippets found in the ST Edge AI Core Technology Documentation (ST Edge AI Core Technology 2.2.0) show a variety of functions/macros used that don't seem to get generated via STM32CubeMX on my end.For reference, I generated the code for CMake, with version 10.2.0 of X-Cube-AI and 6.13.0 of STM32CubeMX.A couple examples from the legacy client -> new edge ai embedded client migration guide:#include "network_inputs.h" - No such file <model_name>_inputs.h seems to get generated via CubeMX.STAI_NETWORK_CONTEXT_DECLARE - this macro is undeclared in the generated code.stai_network_init() - I get an implicit declaration of function warning for this one (cannot find this declared/defined anywhere in the generated code).STAI_NETWORK_ACTIVATIONS_NUM - also undeclared in generated code. Is this specific to the code generated for CMake? Are there perhaps other header files I should be looking to include aside form the ones noted in the examples? EDIT: Confirmed
Hey,Looking at the image classification application example, I couldn't find any part of the code that handles the normalization of pixel value from [0,255] to [-1,1] or [0,1] that I would expect from a CV model of that kind. Do you mind explaining how this implementation that is based on the mobilenet_v2_0 skips the need for normalization?Thanks.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.