一、 前言随着边缘计算与微型机器学习的快速发展,在微控制器(MCU)上部署人工智能算法已经成为嵌入式领域的研究热点。本次测评以意法半导体的高性能开发板 NUCLEO-U3C5ZI 为硬件核心,搭建了一套端到端的手写数字识别系统。 传统的人工智能开发往往局限于PC端或云端服务器,而本方案旨在打通从“算法算法设计、模型转换、硬件移植”到“实时通信联调”的全链路闭环。通过将深度学习模型部署在资源受限的微控制器上,不仅能够显著降低系统的功耗与通信带宽需求,还能极大地提升实时响应速度,这对于工业控制、智能穿戴等需要边缘侧智能的场景具有重要意义。 二、 算法研发与模型导出项目的起点是算法的构建与训练。本方案没有采用常见的 Python 框架,而是选择了工程界同样广泛使用的 MATLAB 及其深度学习工具箱。首先在 MATLAB 环境下导入标准的 MNIST 手写数字数据集,该数据集包含数万张 28*28像素的灰度手写数字图像。 在网络架构上,设计了一个轻量级的卷积神经网络(CNN),包含卷积层、激活层、池化层以及全连接层,在保证识别准确率的同时严格控制参数量。经过数个周期的训练,模型在验证集上达到了理想的准确率。为了将这个在 PC 上运行的模型迁移到嵌入式端,利用 MATLAB 的exportONNXNetwork 函数将训练好的网络导出为通用的 ONNX 格式文件。这一步是跨平台部署的关键,ONNX 格式作为一种开放的模型交换标准,能够被后续的嵌入式优化工具完美解析和重构。
三、 嵌入式端部署与基准测试3.1 STedgeAi模型转换在获取到 ONNX 模型后,核心任务是将其“瘦身”并移植到 NUCLEO-U3C5ZI 开发板上。这里借助了意法半导体官方的神经网络优化工具 STedgeAi。通过这个工具能够读取 ONNX 文件的网络拓扑结构和权重参数,并将其转化为高度优化、完全由 C 语言编写的专用推理代码,同时可以无缝调用 ARM 的 CMSIS-NN 库进行底层硬件级加速。 将导出的模型文件上传,选择对应的开发板测试,最后导出c代码即可;
由于 NUCLEO-U3C5ZI 拥有强大的算力和可观的存储资源,在配置过程中,暂时保留了原始的浮点数模型进行推理。在代码生成并导入到集成开发环境(IDE)后,首先进行了“静态固化测试”。即在单片机的 Flash 中预先硬编码存储了几组固定的标准手写数字图像数据,在不依赖任何外部通信的前提下直接调用推理函数。基准测试结果表明,开发板不仅能够百分之百正确识别预设的数字,而且每次推理的实际耗时极短,内存与内核资源的占用也处于非常安全的范围内,这为后续的实时动态联调奠定了扎实的硬件信心。 3.2 STM32CubeMX配置这部分仅需配置USART1,板载LED即可,最后导出cmake工程。
3.3 测试代码编写将生成的c代码导入到配置的工程中后,仅需要调用相关的API接口即可。
四、 Python 上位机联调与通信协议设计为了让测试更加方便,随后开发了一款基于 Python 的 GUI 上位机软件。上位机与MCU通过串口通讯。当在上位机按下“发送”按钮时,程序会将画布数据展开为 784 字节的单维数组并在数据包的头部加入了两个固定字节作为帧头,分别为 0xAA 和 0x55。因此,上位机每次向 NUCLEO-U3C5ZI 发送的数据帧总长度固定为 786 字节。
五、效果展示写数字7,点击发送,MCU接收到数据包后LED点亮,开始进行模型推理,推理结束将结果返回至上位机。可以看到接收到MCU返回数据为7,置信度62.34%。
|
【STM32U3评测】低功耗模式功耗测量
新品发布:STM32U3B5/C5,配备2 MB Flash存储器和HS,首款无需电池即可运行AI的超低功耗STM32微控制器
【STM32U3评测】不太一样的点灯及编程测试
【STM32U3开发板测评】低功耗模式功耗实测
【NUCLEO-U3C5ZI 测评】+ 手写数字识别
【STM32U3 评测】3.开启HSP计算FFT时间
【STM32U3 评测】2.U3C5开启FPU测试FFT
【STM32U3 评测】CAN报文接收及过滤
【STM32U3 评测】CAN基本通讯测试
【STM32U3 评测】1. FDCAN高速通讯验证
微信公众号
手机版