在高通Dragonwing SoC上使用12 TOPS AI加速器的Edge Impulse YOLO-Pro模型的推理過(guò)程
粒子速子默認(rèn)運(yùn)行Ubuntu 20.04,它與所有硬件和附加組件一起完全工作。Particle已經(jīng)為Ubuntu 24.04添加了實(shí)驗(yàn)性支持,但這個(gè)版本還不支持5G蜂窩調(diào)制解調(diào)器和GPS等重要部分,所以它們現(xiàn)在還不能工作。通過(guò)Docker容器對(duì)高通AI Hub模型提供了一些支持,但我們的目標(biāo)是部署一個(gè)自定義模型,在我們自己的數(shù)據(jù)集上進(jìn)行訓(xùn)練,并為高通芯片本地編譯。為了在設(shè)備上使用強(qiáng)大的高通AI加速器和快速5G連接來(lái)快速完成AI任務(wù),您需要高通AI引擎直接SDK (QNN SDK)。遺憾的是,Ubuntu 20.04沒(méi)有簡(jiǎn)單的官方軟件包來(lái)獲得這個(gè)SDK,這阻礙了在主操作系統(tǒng)上訪問(wèn)這些功能。也就是說(shuō),你可以通過(guò)一些手動(dòng)的、間接的步驟來(lái)安裝SDK和Runtime,跳過(guò)缺少的官方支持,讓開(kāi)發(fā)人員通過(guò)額外的工作來(lái)使用它。在這個(gè)項(xiàng)目中,我們將安裝快速加載和運(yùn)行在Edge Impulse中訓(xùn)練的QNN支持的ML模型所需的基本包。
硬件
我們正在使用高通Dragonwing QCM6490 SoC的粒子速子。Dragonwing QCM6490采用八核高通Kryo CPU,高通Adreno 643 GPU和高通Hexagon 770 DSP,其中包含能夠提供12 TOPS的AI加速器。
我們將使用Elecom 500萬(wàn)像素的網(wǎng)絡(luò)攝像頭。
設(shè)置粒子速子
完成后,通過(guò)WiFi對(duì)設(shè)備的SSH訪問(wèn)應(yīng)該完全啟用并可操作。
Qualcomm AI Engine直接SDK安裝
要下載和安裝所需的軟件包,首先在主機(jī)Linux計(jì)算機(jī)上設(shè)置它們。我在這個(gè)過(guò)程中使用了一臺(tái)運(yùn)行Ubuntu 22.04的Linux機(jī)器,不過(guò)如果您無(wú)法直接訪問(wèn)物理Linux硬件,虛擬機(jī)也可以作為一個(gè)可行的替代方案(我沒(méi)有測(cè)試)。
安裝在主機(jī)Linux機(jī)器上
你需要登錄才能訪問(wèn)它。如果你還沒(méi)有賬戶(hù),點(diǎn)擊登錄頁(yè)面上的“在這里注冊(cè)”鏈接創(chuàng)建一個(gè)賬戶(hù)。
登錄后,單擊Tools,如下圖所示。
選擇“System OS”為“Linux”,在搜索框中輸入“Package Manager 3”。單擊右側(cè)面板中的Qualcomm Package Manager 3。
選擇如下所示的操作系統(tǒng)類(lèi)型和版本,然后單擊下載按鈕。
下載完Debian包后,運(yùn)行以下命令安裝包管理器。
返回到Tools頁(yè)面,然后在搜索欄中輸入“AI Stack”,同時(shí)確保選擇Linux作為系統(tǒng)操作系統(tǒng)。在右側(cè)面板中,展開(kāi)Qualcomm AI Stack部分并選擇Qualcomm AI Engine Direct SDK。
選擇如下所示的操作系統(tǒng)類(lèi)型和版本,然后單擊下載按鈕。
下載完成后,運(yùn)行以下命令登錄包管理器命令行。
如果遇到登錄失敗(就像我在嘗試中遇到的那樣),請(qǐng)查看日志以了解故障排除的詳細(xì)信息。
通過(guò)訪問(wèn)接受必要的協(xié)議,然后重新執(zhí)行上述命令,我解決了這個(gè)問(wèn)題。
執(zhí)行以下命令激活并安裝Qualcomm AI Engine Direct SDK。
SDK將安裝在主機(jī)的“/opt/qcom/aistack/qairt/”目錄下。接下來(lái),我們將為目標(biāo)架構(gòu)(在本例中為Qualcomm SoC)選擇預(yù)交叉編譯的共享庫(kù)。使用SCP將以下文件從主機(jī)上的/opt/qcom/aistack/qairt/2.31.0.250130/lib/目錄傳輸?shù)絇article Tachyon。
安裝在粒子速子上
使用超級(jí)用戶(hù)權(quán)限將文件從先前傳輸?shù)奈恢脧?fù)制到/usr/lib/目錄。
同時(shí),將以下文件復(fù)制到/usr/lib/rfsa/adsp/目錄。
驗(yàn)證所有必需的文件都包含在內(nèi),以確保AI加速器上的模型推理功能正確。
數(shù)據(jù)采集
我們需要在Edge Impulse Studio注冊(cè)一個(gè)帳戶(hù),并為數(shù)據(jù)處理,模型訓(xùn)練和部署創(chuàng)建一個(gè)新項(xiàng)目。為了演示,我們選擇了彩色泡沫塊進(jìn)行對(duì)象檢測(cè)。
我們把一個(gè)USB攝像頭通過(guò)USB- c轉(zhuǎn)USB- a適配器連接到粒子速子上。要驗(yàn)證是否檢測(cè)到網(wǎng)絡(luò)攝像頭,請(qǐng)使用以下命令。
我們必須執(zhí)行以下命令安裝Edge Impulse CLI工具。
運(yùn)行以下命令并按照屏幕上的說(shuō)明將設(shè)備連接到Edge Impulse Studio進(jìn)行數(shù)據(jù)收集。
在捕獲102個(gè)具有不同方向和不同顏色泡沫塊混合的圖像后,我們?cè)谶吘壝}沖工作室的數(shù)據(jù)采集頁(yè)面上使用標(biāo)簽隊(duì)列選項(xiàng)卡標(biāo)記它們。這些積木根據(jù)顏色分為紅、綠、藍(lán)、黃四種標(biāo)簽。
我們可以如下所示查看數(shù)據(jù)集清單。
脈沖設(shè)計(jì)
對(duì)于模型開(kāi)發(fā),我們需要設(shè)計(jì)一個(gè)脈沖,這是一個(gè)結(jié)合了信號(hào)處理和機(jī)器學(xué)習(xí)模型的定制處理管道。進(jìn)入Impulse Design > Create Impulse頁(yè)面,單擊Add a processing block,然后選擇Image,這將對(duì)圖像數(shù)據(jù)進(jìn)行預(yù)處理和歸一化。在同一頁(yè)面,單擊“添加學(xué)習(xí)塊”,選擇“對(duì)象檢測(cè)(圖像)”。我們使用320x320的圖像大小?,F(xiàn)在,點(diǎn)擊Save Impulse按鈕。
特征提取
接下來(lái),進(jìn)入脈沖設(shè)計(jì)>圖像頁(yè)面,將顏色深度參數(shù)設(shè)置為RGB,然后點(diǎn)擊保存參數(shù)按鈕,這將重定向到另一個(gè)頁(yè)面,我們應(yīng)該點(diǎn)擊生成功能按鈕。通常需要幾分鐘來(lái)完成特征生成。
我們可以在Feature Explorer中看到生成特征的2D可視化。
模型訓(xùn)練
要訓(xùn)練模型,請(qǐng)導(dǎo)航到Impulse Design > ObjectDetection頁(yè)面。我們選擇的訓(xùn)練設(shè)置如下所示。
我們?cè)诟呒?jí)訓(xùn)練設(shè)置中選擇了無(wú)色彩空間增強(qiáng),因?yàn)槲覀兊挠美婕皺z測(cè)彩色塊,我們希望避免任何色彩空間轉(zhuǎn)換。
我們選擇了最新的YOLO-Pro型號(hào)。點(diǎn)擊Save & train按鈕開(kāi)始訓(xùn)練。
培訓(xùn)完成后,培訓(xùn)效果顯示如下圖所示。該模型在訓(xùn)練數(shù)據(jù)上獲得了97%的精度分?jǐn)?shù)。
模型部署
由于該模型將在高通AI加速器上對(duì)粒子速子執(zhí)行推理,因此我們?cè)诓渴痦?yè)面上選擇了Linux (AARCH64 with Qualcomm QNN)選項(xiàng)。
對(duì)于模型優(yōu)化,選擇Quantized (int8)選項(xiàng),因?yàn)楦咄ˋI加速器不支持float32模型。
點(diǎn)擊Build按鈕編譯并下載EIM(邊緣脈沖模型)二進(jìn)制文件。
應(yīng)用程序
我們將利用Edge Impulse Linux SDK for Python對(duì)從網(wǎng)絡(luò)攝像頭捕獲的圖像執(zhí)行模型推理,并通過(guò)HTTP將結(jié)果流式傳輸?shù)絯eb瀏覽器。我們本可以使用Edge Impulse CLI通過(guò)提供模型路徑來(lái)運(yùn)行推理,并在web瀏覽器上檢查結(jié)果,但是,我們決定展示如何將其集成到我們的應(yīng)用程序中,以便根據(jù)需要利用結(jié)果進(jìn)行進(jìn)一步的操作。按照下面鏈接提供的說(shuō)明安裝Python的Linux SDK。
下面提供了完整的Python腳本。
inference.py
這是前面腳本中導(dǎo)入的Stream模塊。
Stream.py
推論
運(yùn)行下面的命令在粒子速子上啟動(dòng)應(yīng)用程序。
輸出的日志顯示在終端上,可以通過(guò)web瀏覽器訪問(wèn)輸出的圖像流:8888。推理速度非常快,每幀2毫秒。
結(jié)論
該項(xiàng)目使用高通人工智能加速器和在邊緣脈沖中訓(xùn)練的qnn支持模型,成功地實(shí)現(xiàn)了對(duì)粒子速子的人工智能推理。盡管Ubuntu 20.04缺乏官方SDK支持,手動(dòng)安裝必要的軟件包可以實(shí)現(xiàn)高效的模型部署。該項(xiàng)目可以通過(guò)利用粒子速子的5G能力來(lái)開(kāi)發(fā)AIoT應(yīng)用來(lái)改進(jìn)。
本文編譯自hackster.io





