教程:VENTUNO Q/Edge Impulse
概述
Edge Impulse® 是为 Qualcomm® Dragonwing™ 设备(如 Arduino® VENTUNO™ Q)构建新边缘 AI 模型的最简便方式。它是一个端到端平台,帮助你构建数据集、训练模型,并以完整硬件加速运行模型。它支持使用音频、图像和其他传感器数据构建 AI 模型,或以多种格式导入你自己的模型。
Edge Impulse 已深度集成到 Arduino App Lab 的 Bricks 底层(目标检测、图像分类、关键词识别、异常检测等)。此外,你也可以不通过 Bricks,直接使用 Python® 或 C++ SDK 在 Linux® 侧独立运行 Edge Impulse 模型。
完成本教程后,你将了解如何:
- 在 Edge Impulse Studio 中为物体检测训练自定义机器学习模型。
- 通过 Arduino App Lab 中的 Bricks 部署它。
- 不通过 Bricks,将独立的
.eim通过 Edge Impulse Python 和 C++ SDK 部署到 Linux。 - 理解这个小模型如何成为模型级联中低成本、始终开启的第一级,再升级到 VLM/LLM。
我应该使用哪种 AI 工具?
要在本地运行预训练的 LLM 或 VLM,可以使用文档中的其他技术。如果你需要基于自己的数据,为视觉、音频或传感器训练基于神经网络的自定义机器学习模型,请使用 Edge Impulse。
LLM、VLM 和 Edge Impulse 模型并非互斥。最有趣的 VENTUNO Q 应用会将用 Edge Impulse 训练的小模型作为前置的快速门控,再级联到更重的 AI 模型。参见「进阶:模型级联」。
硬件与软件要求
硬件
- Arduino® VENTUNO™ Q
- USB 摄像头
- Arduino® USB-C Power Supply (65W)
- 几个橡皮鸭(或你想检测的任何物体)
软件
- 免费的 Edge Impulse Studio 账户
- Arduino App Lab
- Arduino 账户(重要:使用与 Edge Impulse Studio 账户相同的电子邮件地址)
Edge Impulse 如何在 VENTUNO Q 上运行
Edge Impulse 将你训练好的 impulse(信号处理 + 学习 + 可选异常模块)打包为名为 .eim(「Edge Impulse Model」)的单个原生二进制。该 .eim 针对开发板的 aarch64 架构编译,并可面向 Qualcomm Hexagon™ NPU 进行加速。它以原生方式运行推理,并暴露任何应用都可调用的简单接口。
在 VENTUNO Q 上有两种使用该模型的方式:
- 通过 Bricks(Arduino App Lab):例如
video_object_detection这样的 Arduino App Lab Brick 会加载 .eim,处理摄像头流水线,并通过回调将结果传递给你的 Python 代码。这是获得可用、由 GUI 管理的应用的最快方式。 - 不通过 Bricks(独立):你使用 Edge Impulse Python 或 C++ SDK 直接在 Linux 侧运行 .eim AI 模型,从而完全控制流水线,并将推理嵌入任何 Linux 程序。
训练自定义 AI 模型
开始使用 Edge Impulse 构建:
步骤 1:获取数据集
最快的开始方式是克隆一个公开的 Edge Impulse 项目。我们可以使用 Object Detection Rubber Ducks 项目,这是一个小型物体检测数据集(使用 FOMO),非常适合首次端到端运行。
- 登录 Edge Impulse Studio。
- 打开公开项目:Object Detection Rubber Duckies。
- 点击 Clone this project(右上角),然后在对话框中点击 Clone project。数据集和可用的 impulse 会被复制到你的账户中。
更想构建自己的数据集?
你可以直接从移动设备、电脑或 VENTUNO Q 的摄像头,通过 Edge Impulse CLI(edge-impulse-linux)采集图像,并在 Edge Impulse Studio 中标注。在此阅读更多 以连接设备并采集自己的数据集。
步骤 2:设置目标并训练
- 打开
Create impulse:处理模块为 Image,学习模块为使用 FOMO(Faster Objects, More Objects)与 MobileNetV2 0.35 的Object Detection (Images)。点击Save impulse。
- 打开 Image 模块。保存参数,然后 Generate features。
- 打开 Object Detection 模块,点击 Train。
训练完成后,你会看到混淆矩阵和设备端性能估算。在右上角将目标硬件选择为 VENTUNO Q。FOMO 将检测报告为质心(每个物体一个点和标签),而不是完整边界框。这使其保持极快且极小,非常适合作为始终开启的门控。FOMO 刻意做得很小;预期推理时间为个位数毫秒,内存占用也很小,从而几乎把开发板上的全部资源留给更重的第二阶段。
使用 Arduino App Lab(Bricks)部署
在本节中,Edge Impulse 模型将由 Arduino App Lab Brick 加载。我们从内置的 Detect Objects on Camera 示例开始,该示例已使用 video_object_detection 和 web_ui Bricks,并创建副本以换入我们的自定义模型。
App Lab 部署
- 在 Edge Impulse Studio 的 Deployment 部分,选择
Arduino VENTUNO Q作为部署目标,点击Build。构建完成后,点击Go to Arduino。
- 在 Arduino App Lab 中,打开
Detect Objects on Camera示例,点击Copy and edit app以创建可编辑的副本。
- 选择
Video Object Detection Brick,打开 AI models 选项卡。你的模型会出现在列表中;点击Download。
如果模型尚未列出,可从此选项卡点击 Train New AI model,直接跳转到该 Brick 的 Edge Impulse Studio。请记住,Arduino 和 Edge Impulse 账户需要使用相同的电子邮件。
- 打开 Brick Configuration,选择你的自定义模型,点击 Save。App Lab 会将模型写入应用的 app.yaml。
- 点击 Run。在浏览器中打开
http://<your-board-ip-address>:7000查看实时检测,并在 Python 控制台中查看标签和置信度分数。
可用的 Bricks 与模型
每个 Arduino App Lab Brick 都有自己的模型变量,因此同样的方法也适用于其他模态:
| Brick | 模型变量 |
|---|---|
| video_object_detection | EI_V_OBJ_DETECTION_MODEL |
| object_detection | EI_OBJ_DETECTION_MODEL |
| image_classification | EI_CLASSIFICATION_MODEL |
| audio_classification | EI_AUDIO_CLASSIFICATION_MODEL |
| keyword_spotting | EI_KEYWORD_SPOTTING_MODEL |
| motion_detection | EI_MOTION_DETECTION_MODEL |
| visual_anomaly_detection | EI_V_ANOMALY_DETECTION_MODEL |
你可以在 Arduino Bricks 文档 中阅读更多内容。
不通过 Bricks 部署(独立 Linux)
有时你完全不想使用 Arduino App Lab 运行时。你只想将 Edge Impulse 推理嵌入自己的 Linux 程序。Edge Impulse 为此提供了开源 SDK。此时模型是你自己运行的普通 .eim。
为正确目标构建 .EIM
在 Edge Impulse Studio Deployment 中,选择与运行方式匹配的部署目标,然后 Build:
Linux (AARCH64)在 VENTUNO Q 的 MPU 上运行推理。Linux (AARCH64 with Qualcomm QNN)将推理运行到 Qualcomm Hexagon NPU 以获得最大性能。选择此项以在 VENTUNO Q 上加速。
Edge Impulse Linux CLI
最快的健全性检查无需编写代码。安装 Edge Impulse for Linux CLI,然后让 runner 下载模型并对摄像头执行推理。
要使用 Edge Impulse Linux CLI 运行模型,请在 VENTUNO Q 开发板上的终端或 SSH 会话中运行:
edge-impulse-linux-runner
这将自动构建并下载你的模型,并在 NPU 上运行(仅限量化模型)。或者,要手动下载 EIM 文件,请在 Edge Impulse 项目的 Deployment 页面中搜索 “Linux (AARCH64 with Qualcomm QNN)”。
从 Python 或 C++ SDK 运行自定义 AI 模型
Edge Impulse Linux Python SDK 允许你从自己的脚本调用 .eim,非常适合在更大的 Linux 应用中运行推理。
另一方面,为了获得最低延迟和完全自包含的二进制,可将推理编译进你自己的 C++ 应用。
更多信息请参见 Edge Impulse Linux Python SDK 和 Edge Impulse Linux C++ SDK。
进阶
导入你自己的模型
Edge Impulse 还允许你以 SavedModel、ONNX、TFLite、LiteRT 或 scikit-learn 格式导入自己的模型(BYOM)。通过 BYOM 部署的模型在 Dragonwing 平台上得到完整支持,量化模型可获得 NPU 加速。参见 Edge Impulse Bring Your Own Model 文档。
模型级联
一个极小的 Edge Impulse AI 模型是级联的理想第一级。它以毫秒级成本持续运行,仅将有趣的帧升级到昂贵模型。在 VENTUNO Q 上,第二阶段可以是本节其他地方介绍的本地 VLM 或 LLM:
- 将你的 FOMO 检测器作为始终开启的门控。当它标记某个物体时,裁剪图像并交给 VLM 验证和描述,同时过滤小模型的误报。
- 使用关键词识别模型,仅在听到某个短语时唤醒 LLM,而不是持续转写。
这种模式将“廉价”的 Edge Impulse 模型与“昂贵”的 VLM/LLM 结合,使 VENTUNO Q 的 NPU 能够提供丰富、有上下文的 AI,而无需在每一帧上都消耗电力。
在此可找到 从物体跟踪到 LLM 的模型级联示例。
结论
在本 AI 工作流教程中,你在 Edge Impulse Studio 中训练了自定义 AI 模型,并以两种方式在 VENTUNO Q 上运行:作为 App Lab Brick,以及通过 Python 和 C++ SDK 独立在 Linux 上运行。从这里开始,你可以采集自己的数据集、面向其他模态(音频、运动、异常),或将模型接入升级到 VLM 或 LLM 的级联中。
故障排除
无论你如何部署,都请确认模型的行为与性能符合预期:
- 确认标签。首次运行时,打印一条检测载荷,并将应用逻辑与模型发出的精确标签字符串匹配(大小写很重要)。
- 观察置信度。将摄像头对准你的鸭子,检查真实物体上的置信度是否较高,其他地方是否较低。
- 迭代改进。在 Studio 中添加更多样化的图像(角度、光照、背景),重新训练并重新部署。由于级联的第二阶段可以验证第一阶段,你可以发布比“此模型必须独自正确”时更轻的门控。
原文:https://docs.arduino.cc/tutorials/ventuno-q/edge-impulse/ 本页为 Arduino 官方教程的中文翻译,供内部查阅。命令与代码保持原文。