STM32N6是意法半导体推出的一款性能强劲且主打边缘AI应用的微控制器,你可以把它理解为给智能设备打造的“超级大脑”。它不像传统MCU只靠一个核心干活,而是玩起了“组合拳”,特别适合那些需要实时进行图像识别、语音处理等AI任务的场景。
博主也是有幸可以使用STM32N6570-DK开发板进行开发测试。
N6的开发难度很高,这一年的时间抽空之余在摸索N6的使用。
本期我们详细一下STM32N6570-DK如何对一个已知模型进行验证。
1、准备工具
我们需要准备一块STM32N6-DK(Nucleo也行,但是我这边是按照DK来的)。
安装STM32CubeProgram
安装STM32CubeIDE(IAR环境也可以)
安装STEdgeAI Core
因为要使用到Python环境,这里我安装了PyCharm
这里我选用STM32 AI模型库里面的模型进行测试。
2、环境配置
环境配置这一步及其的麻烦,会遇到很多很多的问题。
首先在STEdgeAI中我们可以找到stedgeai.exe,这个程序可以在命令行中帮助我们将模型转化成.c文件。
在PowerShell中进入stedgeai.exe的目录中,运行手册中提供的命令:
stedgeai generate -m mobilenet_v2_0.35_224_fft_int8.tflite?--target?stm32n6?--st-neural-art
由于环境变量中没有设置模型的目录,因此是无法直接找到目录的,这里我们就直接使用直接寻址的方式:
stedgeai?generate -m F:CodeSTAIAIProjectmobilenet_v2_0.35_224_fft_int8.tflite --target stm32n6 --st-neural-art
直接用绝对地址来添加模型位置。
可以看到对应的文件生成成功。
接着配置N6上运行的相关配置:
在PyCharm中打开N6_scripts的工程目录,这个目录可以在安装STEdgeCore的地方找到。
配置Python基础解释器,这里不要使用我们自带的基础解释器,要用STEdgeCore的基础解释器。
修改工程所对应的配置文件:
修改编译器类型和工具路径,这里错误一点点就会导致脚本运行失败。
修改完配置后,在终端中应用配置。
python n6_loader.py --n6-loader-config ./config.json
显示Successfully即配置完成。
同样的,我们需要修改config_n6l.json的配置,主要是修改一下刚才生成的模型文件(.c)的位置:
同样要应用一下配置文件:
3、速度测试
做完了上述的环境配置后,我们就可以烧录测试程序了,将开发板的BooT1拉高进入Bootloader。
python?n6_loader.py
运行n6_loader.py代码
$env:PYTHONPATH =?"D:STSTEdgeAI2.2scriptsai_runner"
要把这个目录加到环境变量里面!!!!
python?D:STSTEdgeAI2.2scripts/ai_runner/examples/checker.py -d serial:921600?--perf-only -b?10
接着运行Cheak.py,对随机十个样本进行模型推理(环境变量没加就会报错)
得到模型运行速度的评估数据。
stedgeai?validate -m F:CodeSTAIAIProjectmobilenet_v2_0.35_224_fft_int8.tflite --target stm32n6 --mode target -d serial:921600
同样的,我们还可以直接快速评估模型的准确性:
得到模型的评估报告(不过我看不懂罢了),后面还有个例程可以输入样本进行真实的准确度分析。
AI总结如下:
4、后续的功能让我琢磨琢磨
后面主要再去看看如何实机部署模型。