在高通Dragonwing SoC上使用12 TOPS AI加速器的Edge Impulse YOLO-Pro模型的推理过程
扫描二维码
随时随地手机看文章
粒子速子默认运行Ubuntu 20.04,它与所有硬件和附加组件一起完全工作。Particle已经为Ubuntu 24.04添加了实验性支持,但这个版本还不支持5G蜂窝调制解调器和GPS等重要部分,所以它们现在还不能工作。通过Docker容器对高通AI Hub模型提供了一些支持,但我们的目标是部署一个自定义模型,在我们自己的数据集上进行训练,并为高通芯片本地编译。为了在设备上使用强大的高通AI加速器和快速5G连接来快速完成AI任务,您需要高通AI引擎直接SDK (QNN SDK)。遗憾的是,Ubuntu 20.04没有简单的官方软件包来获得这个SDK,这阻碍了在主操作系统上访问这些功能。也就是说,你可以通过一些手动的、间接的步骤来安装SDK和Runtime,跳过缺少的官方支持,让开发人员通过额外的工作来使用它。在这个项目中,我们将安装快速加载和运行在Edge Impulse中训练的QNN支持的ML模型所需的基本包。
硬件
我们正在使用高通Dragonwing QCM6490 SoC的粒子速子。Dragonwing QCM6490采用八核高通Kryo CPU,高通Adreno 643 GPU和高通Hexagon 770 DSP,其中包含能够提供12 TOPS的AI加速器。
我们将使用Elecom 500万像素的网络摄像头。
设置粒子速子
完成后,通过WiFi对设备的SSH访问应该完全启用并可操作。
Qualcomm AI Engine直接SDK安装
要下载和安装所需的软件包,首先在主机Linux计算机上设置它们。我在这个过程中使用了一台运行Ubuntu 22.04的Linux机器,不过如果您无法直接访问物理Linux硬件,虚拟机也可以作为一个可行的替代方案(我没有测试)。
安装在主机Linux机器上
你需要登录才能访问它。如果你还没有账户,点击登录页面上的“在这里注册”链接创建一个账户。
登录后,单击Tools,如下图所示。
选择“System OS”为“Linux”,在搜索框中输入“Package Manager 3”。单击右侧面板中的Qualcomm Package Manager 3。
选择如下所示的操作系统类型和版本,然后单击下载按钮。
下载完Debian包后,运行以下命令安装包管理器。
返回到Tools页面,然后在搜索栏中输入“AI Stack”,同时确保选择Linux作为系统操作系统。在右侧面板中,展开Qualcomm AI Stack部分并选择Qualcomm AI Engine Direct SDK。
选择如下所示的操作系统类型和版本,然后单击下载按钮。
下载完成后,运行以下命令登录包管理器命令行。
如果遇到登录失败(就像我在尝试中遇到的那样),请查看日志以了解故障排除的详细信息。
通过访问接受必要的协议,然后重新执行上述命令,我解决了这个问题。
执行以下命令激活并安装Qualcomm AI Engine Direct SDK。
SDK将安装在主机的“/opt/qcom/aistack/qairt/”目录下。接下来,我们将为目标架构(在本例中为Qualcomm SoC)选择预交叉编译的共享库。使用SCP将以下文件从主机上的/opt/qcom/aistack/qairt/2.31.0.250130/lib/目录传输到Particle Tachyon。
安装在粒子速子上
使用超级用户权限将文件从先前传输的位置复制到/usr/lib/目录。
同时,将以下文件复制到/usr/lib/rfsa/adsp/目录。
验证所有必需的文件都包含在内,以确保AI加速器上的模型推理功能正确。
数据采集
我们需要在Edge Impulse Studio注册一个帐户,并为数据处理,模型训练和部署创建一个新项目。为了演示,我们选择了彩色泡沫块进行对象检测。
我们把一个USB摄像头通过USB- c转USB- a适配器连接到粒子速子上。要验证是否检测到网络摄像头,请使用以下命令。
我们必须执行以下命令安装Edge Impulse CLI工具。
运行以下命令并按照屏幕上的说明将设备连接到Edge Impulse Studio进行数据收集。
在捕获102个具有不同方向和不同颜色泡沫块混合的图像后,我们在边缘脉冲工作室的数据采集页面上使用标签队列选项卡标记它们。这些积木根据颜色分为红、绿、蓝、黄四种标签。
我们可以如下所示查看数据集清单。
脉冲设计
对于模型开发,我们需要设计一个脉冲,这是一个结合了信号处理和机器学习模型的定制处理管道。进入Impulse Design > Create Impulse页面,单击Add a processing block,然后选择Image,这将对图像数据进行预处理和归一化。在同一页面,单击“添加学习块”,选择“对象检测(图像)”。我们使用320x320的图像大小。现在,点击Save Impulse按钮。
特征提取
接下来,进入脉冲设计>图像页面,将颜色深度参数设置为RGB,然后点击保存参数按钮,这将重定向到另一个页面,我们应该点击生成功能按钮。通常需要几分钟来完成特征生成。
我们可以在Feature Explorer中看到生成特征的2D可视化。
模型训练
要训练模型,请导航到Impulse Design > ObjectDetection页面。我们选择的训练设置如下所示。
我们在高级训练设置中选择了无色彩空间增强,因为我们的用例涉及检测彩色块,我们希望避免任何色彩空间转换。
我们选择了最新的YOLO-Pro型号。点击Save & train按钮开始训练。
培训完成后,培训效果显示如下图所示。该模型在训练数据上获得了97%的精度分数。
模型部署
由于该模型将在高通AI加速器上对粒子速子执行推理,因此我们在部署页面上选择了Linux (AARCH64 with Qualcomm QNN)选项。
对于模型优化,选择Quantized (int8)选项,因为高通AI加速器不支持float32模型。
点击Build按钮编译并下载EIM(边缘脉冲模型)二进制文件。
应用程序
我们将利用Edge Impulse Linux SDK for Python对从网络摄像头捕获的图像执行模型推理,并通过HTTP将结果流式传输到web浏览器。我们本可以使用Edge Impulse CLI通过提供模型路径来运行推理,并在web浏览器上检查结果,但是,我们决定展示如何将其集成到我们的应用程序中,以便根据需要利用结果进行进一步的操作。按照下面链接提供的说明安装Python的Linux SDK。
下面提供了完整的Python脚本。
inference.py
这是前面脚本中导入的Stream模块。
Stream.py
推论
运行下面的命令在粒子速子上启动应用程序。
输出的日志显示在终端上,可以通过web浏览器访问输出的图像流:8888。推理速度非常快,每帧2毫秒。
结论
该项目使用高通人工智能加速器和在边缘脉冲中训练的qnn支持模型,成功地实现了对粒子速子的人工智能推理。尽管Ubuntu 20.04缺乏官方SDK支持,手动安装必要的软件包可以实现高效的模型部署。该项目可以通过利用粒子速子的5G能力来开发AIoT应用来改进。
本文编译自hackster.io





