民主化 AI 開發(fā) Edge Impulse:Edge Impulse 101
加拿大哲學(xué)家馬歇爾·麥克盧漢 (Marshall McLuhan) 曾說過:“我們成為我們所看到的。我們塑造我們的工具,然后我們的工具塑造我們。” 如果是這樣,那么人工智能 (AI) 的最獨(dú)特之處在于我們看到的對(duì)象是我們自己,特別是我們的大腦。如果這是真的,那么看看人工智能這個(gè)工具將如何遞歸地塑造我們自己和我們的未來將會(huì)很有趣。開發(fā)工具的民主化使我們能夠創(chuàng)建具有基于 AI 功能的對(duì)象,這對(duì)于為人類建設(shè)光明、積極的未來至關(guān)重要。一家名為 Edge Impulse 的公司正在盡自己的一份力量來確保這一點(diǎn)。
對(duì)于我們這些嵌入式系統(tǒng)開發(fā)人員來說,向神經(jīng)網(wǎng)絡(luò)的范式轉(zhuǎn)變可能令人望而生畏,他們是在過程甚至面向?qū)ο?a target="_blank">編程的全盛時(shí)期開始學(xué)習(xí)的。對(duì)于一些人來說,這感覺就像是放棄了對(duì)設(shè)計(jì)的一點(diǎn)絕對(duì)控制,而放棄了表面上似乎未經(jīng)證實(shí)的東西,即使不是徹頭徹尾的魔法。盡管如此,邊緣機(jī)器學(xué)習(xí)的前景(意味著將 AI 算法從云端轉(zhuǎn)移到數(shù)十億物聯(lián)網(wǎng)設(shè)備中的微控制器上)仍然很有吸引力,不容忽視。幸運(yùn)的是,Edge Impulse 為嵌入式系統(tǒng)工程師提供了一條非常簡單且有據(jù)可查的前進(jìn)道路,以幫助他們成功駕馭 AI、機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò) (NN) 等相對(duì)較新的領(lǐng)域。
有可能在嵌入式設(shè)計(jì)的某個(gè)時(shí)刻,工程師會(huì)繪制流程圖以了解機(jī)器在其運(yùn)行生命周期中所處的各種狀態(tài)。為此,了解使用 Edge Impulse 為獨(dú)特的嵌入式應(yīng)用程序開發(fā)定制神經(jīng)網(wǎng)絡(luò)時(shí)將遇到的步驟是有益的。下面從嵌入式電子工程師和人工智能專業(yè)的計(jì)算機(jī)科學(xué)家的角度總結(jié)了這些步驟。
第一步:獲取訓(xùn)練數(shù)據(jù)
神經(jīng)網(wǎng)絡(luò)的開發(fā)需要訪問數(shù)據(jù)。很多很多的數(shù)據(jù)。簡而言之,數(shù)據(jù)越多,未來的 NN 模型在根據(jù)實(shí)際操作預(yù)測(cè)輸出時(shí)就會(huì)越準(zhǔn)確。Edge Impulse 提供了多種易于使用的工具來將數(shù)據(jù)從現(xiàn)實(shí)世界獲取到他們的服務(wù)器以開發(fā)自定義神經(jīng)網(wǎng)絡(luò)。首先,它們?yōu)樵S多流行的開發(fā)板(例如TI CC1352P Launchpad、SiLabs Thunderboard Sense 2和Arduino Portenta )提供預(yù)構(gòu)建固件) 可以訪問各種板載傳感器并將數(shù)據(jù)流發(fā)送回 Edge Impulse。對(duì)于其他主板,Edge Impulse 在其命令行界面 (CLI) 工具集的保護(hù)下提供了一套工具,可用于 Mac OS、Windows 和 Linux 發(fā)行版 Ubuntu 和 Raspbian。CLI 需要在您的桌面上安裝 Python3 和 Node.js。CLI 的三個(gè)關(guān)鍵工具是:
艾達(dá)蒙
沖動(dòng)上傳者
數(shù)據(jù)轉(zhuǎn)發(fā)器
這些工具對(duì)于從缺乏直接互聯(lián)網(wǎng)連接的開發(fā)板獲取傳感器數(shù)據(jù)特別有用。它們充當(dāng)代理,通過串行端口接收數(shù)據(jù),并通過主機(jī)互聯(lián)網(wǎng)連接將其轉(zhuǎn)發(fā)到 Edge Impulse 服務(wù)器。Edge Impulse 還提供了一種基于瀏覽器的機(jī)制來從智能手機(jī)收集數(shù)據(jù)(例如語音樣本或加速度計(jì)數(shù)據(jù))。
從實(shí)際角度出發(fā),仔細(xì)考慮您的嵌入式設(shè)備在運(yùn)行過程中可能遇到的所有狀態(tài)。例如,在最近的一個(gè)涉及工業(yè)機(jī)械和根據(jù)加速度計(jì)數(shù)據(jù)識(shí)別機(jī)器故障的項(xiàng)目中,開發(fā)團(tuán)隊(duì)在數(shù)據(jù)按預(yù)期負(fù)載運(yùn)行時(shí)以及處于故障模式時(shí)收集了大量數(shù)據(jù)。但最初,它在機(jī)器空閑時(shí)無法收集數(shù)據(jù)。結(jié)果,第一個(gè) NN 模型難以區(qū)分故障和空轉(zhuǎn)。最后,使用機(jī)器空閑時(shí)收集的數(shù)據(jù)對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行再訓(xùn)練,模型的預(yù)測(cè)準(zhǔn)確性(例如,神經(jīng)網(wǎng)絡(luò)性能)顯著提高。底線是,如果房地產(chǎn)是關(guān)于位置、位置、還是位置的話。那么機(jī)器學(xué)習(xí)就是數(shù)據(jù)、數(shù)據(jù)、數(shù)據(jù)。
第 2 步:標(biāo)記和分塊原始數(shù)據(jù)
一旦訓(xùn)練數(shù)據(jù)位于 Edge Impulse 服務(wù)器上,訓(xùn)練 NN 模型(也稱為“Impulse”)的其余工作將通過 Web 瀏覽器在 Edge Impulse 網(wǎng)站上進(jìn)行。首先,我們收集的數(shù)據(jù)集必須標(biāo)有每個(gè)特定數(shù)據(jù)集代表的輸出狀態(tài)。這是通過簡單地編輯收集的每個(gè)單獨(dú)數(shù)據(jù)集的“標(biāo)簽”標(biāo)簽來實(shí)現(xiàn)的。使用上述工業(yè)機(jī)械示例,三分之一的數(shù)據(jù)被標(biāo)記為“故障”,另外三分之一被標(biāo)記為“正常”,最后三分之一被標(biāo)記為“空閑”。回想一下神經(jīng)網(wǎng)絡(luò)的輸出不是絕對(duì)的;相反,它是每個(gè)可能結(jié)果的確定性百分比。
對(duì)于時(shí)間序列數(shù)據(jù)(例如隨時(shí)間收集的加速度計(jì)讀數(shù)),有必要將每個(gè)數(shù)據(jù)集中的數(shù)據(jù)“分塊”。像所有好的解決問題的技巧一樣,將問題分解成更小、更易于管理的塊可以讓人們解決看似無法克服的問題。在 NN 訓(xùn)練的這個(gè)初始階段,您可以調(diào)整數(shù)據(jù)分析方式的一些屬性,包括窗口大小、窗口增加、采樣頻率以及數(shù)據(jù)是否應(yīng)該被零填充。此外,可以調(diào)整這些不同的屬性以平衡分析的分辨率與完成分析的時(shí)間之間的權(quán)衡。
第 3 步:分析和轉(zhuǎn)換原始數(shù)據(jù)塊
在數(shù)據(jù)被適當(dāng)?shù)胤謮K后,是時(shí)候通過應(yīng)用適當(dāng)?shù)姆治黾夹g(shù)(例如“處理塊”)來分析它了。這會(huì)獲取原始數(shù)據(jù)并將其轉(zhuǎn)換為訓(xùn)練過程中下游 NN 分類器可以使用的格式。Edge Impulse 根據(jù)要分析的數(shù)據(jù)類型提供多種不同的分析技術(shù)。
頻譜分析:非常適合分析重復(fù)運(yùn)動(dòng),例如來自加速度計(jì)的數(shù)據(jù)。提取信號(hào)隨時(shí)間變化的頻率和功率特性。
Flatten:將軸展平為單個(gè)值,與其他塊結(jié)合使用可用于溫度數(shù)據(jù)等緩慢移動(dòng)的平均值。
Mel-Filterbank Energy (MFE):從非語音音頻信號(hào)中提取頻譜圖。
Mel 頻率倒譜系數(shù) (MFCC):從人聲音頻文件中提取頻譜圖。
圖像:用于識(shí)別靜態(tài)圖像中的對(duì)象。
自定義處理塊:對(duì)于那些具有基于人工智能的計(jì)算機(jī)科學(xué)背景的人,還可以上傳為您的特定應(yīng)用量身定制的自定義處理塊
第 4 步:對(duì)數(shù)據(jù)塊進(jìn)行分類,運(yùn)行 NN 分類器
一旦我們將原始數(shù)據(jù)轉(zhuǎn)換為可用格式并了解如何從我們的數(shù)據(jù)集中提取特征,就有必要訓(xùn)練神經(jīng)網(wǎng)絡(luò)從這些特征中學(xué)習(xí),以便它可以適當(dāng)?shù)貙?duì)測(cè)試和操作數(shù)據(jù)集進(jìn)行分類。換句話說,所有表示系統(tǒng)故障的數(shù)據(jù)集都應(yīng)歸類為此類。同樣,所有代表正常操作的數(shù)據(jù)集都應(yīng)該進(jìn)行類似的分類。這是通過應(yīng)用所謂的學(xué)習(xí)塊來實(shí)現(xiàn)的。與處理塊一樣,可以根據(jù)數(shù)據(jù)類型應(yīng)用各種學(xué)習(xí)塊。例如,對(duì)于快速波動(dòng)的時(shí)變數(shù)據(jù),例如我們示例中的數(shù)據(jù)集,可以使用以下學(xué)習(xí)模塊:
分類 (Keras):從數(shù)據(jù)中學(xué)習(xí)模式并將其應(yīng)用于新數(shù)據(jù)。非常適合對(duì)運(yùn)動(dòng)進(jìn)行分類或識(shí)別音頻。
異常檢測(cè)(K 均值):在新數(shù)據(jù)中查找異常值。有利于識(shí)別未知狀態(tài)和補(bǔ)充分類器。
回歸 (Keras):從數(shù)據(jù)中學(xué)習(xí)模式并將其應(yīng)用于新數(shù)據(jù)。非常適合預(yù)測(cè)連續(xù)數(shù)值。
可以調(diào)整信號(hào)處理算法的各種參數(shù)以微調(diào)學(xué)習(xí)塊的性能。通過調(diào)整截止頻率和快速傅里葉變換 (FFT) 長度等參數(shù),可以在處理時(shí)間和隨機(jī)存取存儲(chǔ)器 (RAM) 使用峰值之間取得平衡。Edge Impulse 甚至提供在目標(biāo)嵌入式平臺(tái)上運(yùn)行時(shí)處理時(shí)間和 RAM 使用情況的性能估計(jì)。
最后,在最終生成神經(jīng)網(wǎng)絡(luò)模型(又名脈沖)本身之前,可以更改用于控制 NN 分類器輸出的設(shè)置。可以調(diào)整的參數(shù)包括訓(xùn)練周期數(shù)、學(xué)習(xí)率、驗(yàn)證集大小以及輸入層和輸出層之間網(wǎng)絡(luò)中間層的神經(jīng)元數(shù)。改變這些參數(shù)的能力對(duì)于防止稱為過度擬合的常見數(shù)據(jù)科學(xué)問題至關(guān)重要,這種問題發(fā)生在模型與訓(xùn)練數(shù)據(jù)完美配合但在暴露于新數(shù)據(jù)時(shí)卻慘敗。
第 5 步:測(cè)試神經(jīng)網(wǎng)絡(luò)模型
對(duì)于機(jī)器學(xué)習(xí)算法的開發(fā)人員來說,過度擬合并不是一個(gè)不常見的問題。為確保模型足夠通用,有必要根據(jù)獨(dú)立測(cè)試數(shù)據(jù)測(cè)試 Edge Impulse 生成的神經(jīng)網(wǎng)絡(luò)。Edge Impulse 提供的用于收集訓(xùn)練數(shù)據(jù)的相同技術(shù)可用于收集測(cè)試數(shù)據(jù)。除了對(duì)先前記錄的測(cè)試數(shù)據(jù)進(jìn)行分類外,還可以從測(cè)試設(shè)備流式傳輸數(shù)據(jù)并在 Edge Impulse 服務(wù)器上進(jìn)行實(shí)時(shí)分類。設(shè)計(jì)人員可以使用由 Edge Impulse 應(yīng)用程序編程接口 (API) 提供支持的固件中的直接連接或數(shù)據(jù)轉(zhuǎn)發(fā)器代理將數(shù)據(jù)從傳感器獲取到云端。
第 6 步:部署神經(jīng)網(wǎng)絡(luò)模型
在神經(jīng)網(wǎng)絡(luò)針對(duì)訓(xùn)練數(shù)據(jù)取得令人滿意的結(jié)果后,是時(shí)候?qū)?NN 模型打包到一個(gè)軟件庫中,該軟件庫可以部署在基于微控制器的系統(tǒng)上。Edge Impulse 使這個(gè)過程變得非常簡單。首先,模型可以置于版本控制之下,以便在需要時(shí)可以將未來的改進(jìn)與過去的模型進(jìn)行比較。接下來,該模型可以變成各種嵌入式系統(tǒng)開發(fā)板的“交鑰匙”固件。
對(duì)于Edge Impulse不直接支持的開發(fā)板,仍然可以生成通用庫,包括基于C++、Arduino、WebAssembly、TensorRT、STM32Cube.MX CMSIS-PACK等系統(tǒng)架構(gòu)的模型文件。在生成庫或固件之前,還可以運(yùn)行優(yōu)化器以實(shí)現(xiàn)速度或內(nèi)存使用優(yōu)化,具體取決于運(yùn)行 NN 模型(又名脈沖)的硬件規(guī)格。此外,基于作為 8 位整數(shù)或 32 位浮點(diǎn)數(shù)發(fā)送的傳感器數(shù)據(jù)的脈沖也是可能的。
由于 Edge Impulse 還提供基于 C++、GoLang、Node.js 和 Python 的軟件開發(fā)工具包 (SDK),Impulses 也可以在運(yùn)行 Linux 操作系統(tǒng)的嵌入式系統(tǒng)上運(yùn)行。也可以使用 C++ 庫在 Windows 和 macOS 上運(yùn)行脈沖。
最后,impulse 可以直接部署到智能手機(jī)上,無需在目標(biāo)設(shè)備上安裝任何額外的應(yīng)用程序。
概括
對(duì)于那些希望將 AI 技術(shù)集成到他們的下一個(gè)嵌入式系統(tǒng)項(xiàng)目中的人來說,瀏覽 Edge Impulse 的文檔和論壇是開始了解邊緣 ML 的一種免費(fèi)且簡單的方法。一個(gè)有限的免費(fèi)版本可用于測(cè)試 Edge Impulse 生態(tài)系統(tǒng)。免費(fèi)層的主要限制是單個(gè)開發(fā)人員的汗水訪問、最長 20 分鐘的處理時(shí)間以及 4GB 或 4 小時(shí)數(shù)據(jù)的云存儲(chǔ)限制。此外,還提供企業(yè)版,按項(xiàng)目付費(fèi),這消除了免費(fèi)層的限制,并提供對(duì)私有云和每個(gè)項(xiàng)目五個(gè)席位的訪問。
Michael Parks, PE 是 Green Shoe Garage 的聯(lián)合創(chuàng)始人,Green Shoe Garage 是一家位于馬里蘭州西部的定制電子設(shè)計(jì)工作室和嵌入式安全研究公司。他制作了 Gears of Resistance 播客,以幫助提高公眾對(duì)技術(shù)和科學(xué)問題的認(rèn)識(shí)。Michael 還是馬里蘭州的持證專業(yè)工程師,并擁有約翰霍普金斯大學(xué)的系統(tǒng)工程碩士學(xué)位。
審核編輯黃宇
-
傳感器
+關(guān)注
關(guān)注
2548文章
50707瀏覽量
752088 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4765瀏覽量
100550 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
6899瀏覽量
88842 -
AI
+關(guān)注
關(guān)注
87文章
30207瀏覽量
268448
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論