13.6. Edge Impulse

Edge Impulse 是一个用于构建运行在微控制器上的机器学习模型的端到端平台:采集并标注数据、在浏览器中设计和训练模型,并将其优化到以千字节计的设备大小。它可直接部署到 OpenMV——只需点击几下,即可将训练好的模型变成可在摄像头上运行的文件。Edge Impulse 自己的 文档 对每个步骤都有更深入的介绍。

13.6.1. 获取数据

模型在它所训练的那类图像上表现最佳,因此请用将要运行它的摄像头来采集数据集。IDE 的 数据集编辑器 正是为此而设计的——创建类别文件夹、从实时帧缓冲区中采集已标注的图像,然后从 Export 子菜单将数据集直接上传到 Edge Impulse 项目中(请先登录你在那里的账户)。从这一刻起你将在 Edge Impulse Studio 中工作。

参见

Edge Impulse 自己的 OpenMV Cam 设置指南,介绍如何安装工具并连接摄像头。

13.6.2. 训练

训练完全在浏览器中进行:设计一个 impulse(输入、处理和学习模块),训练它,并在保留的测试数据上检查准确率。

有两种模型类型适合摄像头。图像分类器输出一组类别得分,你可以直接从模型的输出中读取——无需后处理器。FOMO 是一种专为微控制器设计的快速目标检测器,它需要一个解码步骤,而摄像头自带了相应的后处理器(ml.postprocessing.edgeimpulse),因此这些模型同样无需额外代码即可运行。

13.6.3. 部署到摄像头

训练完成后,打开项目的 Deployment 页面,选择 OpenMV Library 目标,然后点击 Build。下载的是一个 zip 文件,其中包含训练好的模型(trained.tflite)、它的标签(labels.txt)以及一个示例脚本。该模型经过整数量化。Edge Impulse 在其 在 OpenMV 上运行指南 中介绍了这一点以及自定义固件的替代方案。

用 IDE 的 ROMFS 编辑器.tflite 文件添加到摄像头,它会在开发板带有 NPU 时为其进行转换,然后在脚本中用 ml.Model 加载它。模型也可以从摄像头的闪存盘运行——将文件复制过去并让 ml.Model 指向该路径即可——但 ROMFS 是更好的归宿:放在那里的模型可直接从闪存执行,无需复制到 RAM。

参见

机器学习章节 介绍了如何用 ml 模块运行模型——加载、推理流水线以及输出解码。