教程:VENTUNO Q/Edge Impulse:修订间差异

来自WindwizPi wiki
此页面具有访问限制。如果您看见此消息,则说明您没有权限访问此页面。
Windwiz​(留言 | 贡献)
导入 VENTUNO Q 中文教程
 
Windwiz​(留言 | 贡献)
导入 VENTUNO Q 中文教程
 
第13行: 第13行:
* 理解这个小模型如何成为模型级联中低成本、始终开启的第一级,再升级到 VLM/LLM。
* 理解这个小模型如何成为模型级联中低成本、始终开启的第一级,再升级到 VLM/LLM。


<img src="https://cdn.jsdelivr.net/gh/arduino/docs-content@main/content/hardware/ventuno/boards/ventuno-q/tutorials/ai-workflows/edge-impulse/assets/edgeimpulse0.webp" alt="Edge Impulse" />
 
https://cdn.jsdelivr.net/gh/arduino/docs-content@main/content/hardware/ventuno/boards/ventuno-q/tutorials/ai-workflows/edge-impulse/assets/edgeimpulse0.webp
 


<span id="which-ai-tool-should-i-use"></span>
<span id="which-ai-tool-should-i-use"></span>
第64行: 第66行:
* 点击 Clone this project(右上角),然后在对话框中点击 Clone project。数据集和可用的 impulse 会被复制到你的账户中。
* 点击 Clone this project(右上角),然后在对话框中点击 Clone project。数据集和可用的 impulse 会被复制到你的账户中。


<img src="https://cdn.jsdelivr.net/gh/arduino/docs-content@main/content/hardware/ventuno/boards/ventuno-q/tutorials/ai-workflows/edge-impulse/assets/edgeimpulse1.png" alt="克隆 Object Detection Rubber Duckies 公开项目" />
 
https://cdn.jsdelivr.net/gh/arduino/docs-content@main/content/hardware/ventuno/boards/ventuno-q/tutorials/ai-workflows/edge-impulse/assets/edgeimpulse1.png
 


<span id="prefer-to-build-your-own-dataset"></span>
<span id="prefer-to-build-your-own-dataset"></span>
第76行: 第80行:
* 打开 <code>Create impulse</code>:处理模块为 Image,学习模块为使用 FOMO(Faster Objects, More Objects)与 MobileNetV2 0.35 的 <code>Object Detection (Images)</code>。点击 <code>Save impulse</code>。
* 打开 <code>Create impulse</code>:处理模块为 Image,学习模块为使用 FOMO(Faster Objects, More Objects)与 MobileNetV2 0.35 的 <code>Object Detection (Images)</code>。点击 <code>Save impulse</code>。


<img src="https://cdn.jsdelivr.net/gh/arduino/docs-content@main/content/hardware/ventuno/boards/ventuno-q/tutorials/ai-workflows/edge-impulse/assets/edgeimpulse3.png" alt="创建 impulse" />
 
https://cdn.jsdelivr.net/gh/arduino/docs-content@main/content/hardware/ventuno/boards/ventuno-q/tutorials/ai-workflows/edge-impulse/assets/edgeimpulse3.png
 


* 打开 Image 模块。保存参数,然后 Generate features。
* 打开 Image 模块。保存参数,然后 Generate features。
第82行: 第88行:
* 打开 Object Detection 模块,点击 Train。
* 打开 Object Detection 模块,点击 Train。


<img src="https://cdn.jsdelivr.net/gh/arduino/docs-content@main/content/hardware/ventuno/boards/ventuno-q/tutorials/ai-workflows/edge-impulse/assets/edgeimpulse4.png" alt="训练你的 AI 模型" />
 
https://cdn.jsdelivr.net/gh/arduino/docs-content@main/content/hardware/ventuno/boards/ventuno-q/tutorials/ai-workflows/edge-impulse/assets/edgeimpulse4.png
 


训练完成后,你会看到混淆矩阵和设备端性能估算。在右上角将目标硬件选择为 VENTUNO Q。FOMO 将检测报告为质心(每个物体一个点和标签),而不是完整边界框。这使其保持极快且极小,非常适合作为始终开启的门控。FOMO 刻意做得很小;预期推理时间为个位数毫秒,内存占用也很小,从而几乎把开发板上的全部资源留给更重的第二阶段。
训练完成后,你会看到混淆矩阵和设备端性能估算。在右上角将目标硬件选择为 VENTUNO Q。FOMO 将检测报告为质心(每个物体一个点和标签),而不是完整边界框。这使其保持极快且极小,非常适合作为始终开启的门控。FOMO 刻意做得很小;预期推理时间为个位数毫秒,内存占用也很小,从而几乎把开发板上的全部资源留给更重的第二阶段。
第96行: 第104行:
* 在 Edge Impulse Studio 的 Deployment 部分,选择 <code>Arduino VENTUNO Q</code> 作为部署目标,点击 <code>Build</code>。构建完成后,点击 <code>Go to Arduino</code>。
* 在 Edge Impulse Studio 的 Deployment 部分,选择 <code>Arduino VENTUNO Q</code> 作为部署目标,点击 <code>Build</code>。构建完成后,点击 <code>Go to Arduino</code>。


<img src="https://cdn.jsdelivr.net/gh/arduino/docs-content@main/content/hardware/ventuno/boards/ventuno-q/tutorials/ai-workflows/edge-impulse/assets/edgeimpulse5.png" alt="将 AI 模型部署到 Arduino VENTUNO Q" />
 
https://cdn.jsdelivr.net/gh/arduino/docs-content@main/content/hardware/ventuno/boards/ventuno-q/tutorials/ai-workflows/edge-impulse/assets/edgeimpulse5.png
 


* 在 Arduino App Lab 中,打开 <code>Detect Objects on Camera</code> 示例,点击 <code>Copy and edit app</code> 以创建可编辑的副本。
* 在 Arduino App Lab 中,打开 <code>Detect Objects on Camera</code> 示例,点击 <code>Copy and edit app</code> 以创建可编辑的副本。

2026年9月28日 (一) 06:01的最新版本

概述

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。


edgeimpulse0.webp


我应该使用哪种 AI 工具?

要在本地运行预训练的 LLM 或 VLM,可以使用文档中的其他技术。如果你需要基于自己的数据,为视觉、音频或传感器训练基于神经网络的自定义机器学习模型,请使用 Edge Impulse。

LLM、VLM 和 Edge Impulse 模型并非互斥。最有趣的 VENTUNO Q 应用会将用 Edge Impulse 训练的小模型作为前置的快速门控,再级联到更重的 AI 模型。参见「进阶:模型级联」。

硬件与软件要求

硬件

软件

  • 免费的 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 会被复制到你的账户中。


edgeimpulse1.png


更想构建自己的数据集?

你可以直接从移动设备、电脑或 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。


edgeimpulse3.png


  • 打开 Image 模块。保存参数,然后 Generate features。
  • 打开 Object Detection 模块,点击 Train。


edgeimpulse4.png


训练完成后,你会看到混淆矩阵和设备端性能估算。在右上角将目标硬件选择为 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。


edgeimpulse5.png


  • 在 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 官方教程的中文翻译,供内部查阅。命令与代码保持原文。