機(jī)器學(xué)習(xí)正在從云端轉(zhuǎn)移到網(wǎng)絡(luò)邊緣,目的是進(jìn)行實(shí)時(shí)處理、降低延遲、提高安全性、更高效地使用可用帶寬以及降低整體功耗。而處于這些邊緣節(jié)點(diǎn)上的物聯(lián)網(wǎng) (IoT) 設(shè)備只有有限的資源,因此開(kāi)發(fā)人員需要弄清如何有效地添加這一全新的智能水平。
在邊緣位置基于微控制器系統(tǒng)使用機(jī)器學(xué)習(xí),為開(kāi)發(fā)人員提供了幾項(xiàng)新機(jī)會(huì),可以徹底改變他們?cè)O(shè)計(jì)系統(tǒng)的方式。開(kāi)發(fā)人員可以使用幾種不同的架構(gòu)和技術(shù)將智能添加到邊緣節(jié)點(diǎn)。學(xué)習(xí)完本文后,我們將更加熟悉這些架構(gòu)以及一些可用于加快該過(guò)程的技術(shù)。
邊緣機(jī)器學(xué)習(xí)的作用
邊緣機(jī)器學(xué)習(xí)對(duì)嵌入式系統(tǒng)工程師非常有用,原因有很多。首先,智能系統(tǒng)可以解決開(kāi)發(fā)人員通常難以通過(guò)編碼解決的問(wèn)題。以簡(jiǎn)單的文本識(shí)別為例。識(shí)別文本是編程的噩夢(mèng),但如果使用機(jī)器學(xué)習(xí),那么幾乎就像用 C 語(yǔ)言編寫(xiě)“Hello World”應(yīng)用程序一樣簡(jiǎn)單。
其次,智能系統(tǒng)可以很輕松地針對(duì)新數(shù)據(jù)和情況進(jìn)行擴(kuò)展。例如,如果某個(gè)系統(tǒng)接受了識(shí)別基本文本的訓(xùn)練,然后突然采用新字體提供文本,這時(shí)并不需要推倒重來(lái)。相反,只需提供額外的訓(xùn)練圖像,使該網(wǎng)絡(luò)也能學(xué)習(xí)識(shí)別新字體便可。
最后,我們還可以了解到,邊緣機(jī)器學(xué)習(xí)可以幫助開(kāi)發(fā)人員降低某些應(yīng)用類型的成本,例如:
圖像識(shí)別
語(yǔ)音和音頻處理
語(yǔ)言處理
第一次檢查邊緣機(jī)器學(xué)習(xí)時(shí),使用應(yīng)用處理器似乎是個(gè)不錯(cuò)的選擇。包括 OpenCV 在內(nèi)的幾種開(kāi)源工具專為計(jì)算機(jī)視覺(jué)而設(shè)計(jì),我們可以從使用這些工具開(kāi)始。不過(guò),許多應(yīng)用中僅使用應(yīng)用處理器可能還不夠,因?yàn)檫@些處理器不具備確定性的實(shí)時(shí)行為。
邊緣機(jī)器學(xué)習(xí)架構(gòu)
使用邊緣機(jī)器學(xué)習(xí)時(shí),有三種典型方法:
邊緣節(jié)點(diǎn)獲取數(shù)據(jù),然后在云端完成機(jī)器學(xué)習(xí)
邊緣節(jié)點(diǎn)獲取數(shù)據(jù),然后在芯片上完成機(jī)器學(xué)習(xí)
邊緣節(jié)點(diǎn)獲取數(shù)據(jù),然后在邊緣進(jìn)行第一遍機(jī)器學(xué)習(xí),最后在云端進(jìn)行更深入的分析
前兩個(gè)解決方案是目前業(yè)界探索最多的解決方案,在本文中,我們將會(huì)重點(diǎn)關(guān)注這兩個(gè)解決方案。
使用邊緣設(shè)備獲取數(shù)據(jù)并使用基于云的機(jī)器學(xué)習(xí)系統(tǒng)來(lái)處理數(shù)據(jù),這樣的架構(gòu)有幾個(gè)優(yōu)點(diǎn)。首先,邊緣設(shè)備不需要運(yùn)行機(jī)器學(xué)習(xí)算法所需的強(qiáng)大處理能力和資源。其次,邊緣設(shè)備可以繼續(xù)使用資源受限的低成本設(shè)備,就像許多嵌入式系統(tǒng)開(kāi)發(fā)人員習(xí)慣創(chuàng)建的系統(tǒng)一樣。唯一的區(qū)別是,邊緣設(shè)備需要能夠通過(guò) HTTPS 連接到基于云的服務(wù)提供商,以便分析它們的數(shù)據(jù)。第三,基于云的機(jī)器學(xué)習(xí)正在以驚人的速度發(fā)展,將這些功能轉(zhuǎn)移到片載解決方案將非常困難、耗時(shí)且成本高昂。
對(duì)于希望從基于云的機(jī)器學(xué)習(xí)開(kāi)始的開(kāi)發(fā)人員來(lái)說(shuō),他們可以使用 STMicroelectronics公司的STM32F779I-EVAL 板(圖 1)這類開(kāi)發(fā)板。該開(kāi)發(fā)板基于 STMicroelectronics 公司的STM32F769NIH6微控制器,配備了 Arm?Cortex?-M7 內(nèi)核、板載攝像頭、用于與云進(jìn)行高速通信的以太網(wǎng)端口,以及板載顯示器。該開(kāi)發(fā)板可與諸如 Express Logic 公司的 X-Ware IoT 平臺(tái)等軟件配合使用,輕松連接到任何機(jī)器學(xué)習(xí)云提供商,如 Amazon Web Services (AWS)、Microsoft Azure 和 Google Cloud。
圖 1:STM32F779I-EVAL 板基于 Arm Cortex-M7 處理器,包含了進(jìn)行片載或云端深度學(xué)習(xí)所需的一切資源。(圖片來(lái)源:STMicroelectronics)
在云端進(jìn)行機(jī)器學(xué)習(xí)對(duì)于開(kāi)發(fā)團(tuán)隊(duì)來(lái)說(shuō)可能意義非常重大,但有幾個(gè)原因可以解釋為什么機(jī)器學(xué)習(xí)開(kāi)始從云端轉(zhuǎn)向邊緣。雖然這些原因具有很強(qiáng)的應(yīng)用針對(duì)性,但確實(shí)也包括了一些重要因素,例如:
實(shí)時(shí)處理需求
帶寬限制
延遲
安全要求
如果某個(gè)應(yīng)用存在這方面的問(wèn)題,那么將神經(jīng)網(wǎng)絡(luò)從云端轉(zhuǎn)移到邊緣是可以行得通的。這種情況下,開(kāi)發(fā)人員必須對(duì)他們希望嵌入式處理器負(fù)責(zé)處理的內(nèi)容做到心里有數(shù),以便應(yīng)用能夠盡可能高效地執(zhí)行。
選擇用于機(jī)器學(xué)習(xí)的處理器
在嵌入式處理器上運(yùn)行機(jī)器學(xué)習(xí)需要考慮幾個(gè)重要因素。首先,處理器必須能夠高效地執(zhí)行 DSP 指令,因此浮點(diǎn)運(yùn)算單元 (FPU) 非常有用。其次,需要具備可以在處理器上運(yùn)行的機(jī)器學(xué)習(xí)庫(kù)。學(xué)習(xí)庫(kù)需要包括卷積、池化和激活。如果沒(méi)有這些學(xué)習(xí)庫(kù),開(kāi)發(fā)人員基本上需要從頭開(kāi)始編寫(xiě)深度學(xué)習(xí)算法,不但費(fèi)時(shí),而且成本高昂。
最后,開(kāi)發(fā)人員需要確保微控制器上具有足夠的 CPU 周期,以便可以完成神經(jīng)網(wǎng)絡(luò)執(zhí)行以及分配給處理器的任何其他任務(wù)。
Arm Cortex-M 處理器現(xiàn)在配有 CMSIS-NN 擴(kuò)展,這是一個(gè)神經(jīng)網(wǎng)絡(luò)庫(kù),其設(shè)計(jì)目的是在資源受限的環(huán)境中可以在微控制器上高效地運(yùn)行機(jī)器學(xué)習(xí),這一特性使其成為基于邊緣的智能系統(tǒng)的絕佳選擇。確切的處理器選擇將取決于手頭的應(yīng)用,因此詳細(xì)了解幾款不同的開(kāi)發(fā)板及其最適合的應(yīng)用非常重要。
首先介紹SparkFun Electronics公司的OpenMV機(jī)器視覺(jué)開(kāi)發(fā)板(圖 2)。該模塊采用基于 Cortex-M7 的STM32F765VI處理器,運(yùn)行頻率 216 MHz,支持 512 KB RAM 和 2 MB 閃存。
圖 2:SparkFun 的 OpenMV 開(kāi)發(fā)板是一個(gè)機(jī)器視覺(jué)平臺(tái),該平臺(tái)使用 Arm CMSIS-NN 框架在 Cortex-M 上高效運(yùn)行機(jī)器學(xué)習(xí)算法。(圖片來(lái)源:SparkFun Electronics)
OpenMV 模塊可用于:
通過(guò)幀差分檢測(cè)運(yùn)動(dòng)
顏色跟蹤
市場(chǎng)跟蹤
人臉檢測(cè)
眼動(dòng)跟蹤
線條和形狀檢測(cè)
模板匹配
由于該模塊的軟件基于 Arm CMSIS-NN 庫(kù),因此可以在處理器上盡可能高效地運(yùn)行機(jī)器學(xué)習(xí)網(wǎng)絡(luò)。
其次介紹STM32F746ZGNucleo 開(kāi)發(fā)板,STMicroelectronics 公司基于 Arm Cortex-M7 的STM32F746處理器使用的就是這款開(kāi)發(fā)板,運(yùn)行頻率為 216 MHz(圖 3)。與 OpenMV 模塊上的處理器相比,這款開(kāi)發(fā)板上使用的處理器具有較少的內(nèi)存和閃存,分別為 320 KB 和 1 MB。Arm 在許多機(jī)器學(xué)習(xí)白皮書(shū)中都使用了這款處理器,這些白皮書(shū)涵蓋了諸如關(guān)鍵字識(shí)別之類的主題。
圖 3:STM32F746ZG Nucleo 開(kāi)發(fā)板是一款低成本開(kāi)發(fā)板,適用于那些剛開(kāi)始使用機(jī)器學(xué)習(xí),不需要附加各種“花哨”功能的開(kāi)發(fā)人員。(圖片來(lái)源:STMicroelectronics)
這款開(kāi)發(fā)板更大程度上提供的是一種開(kāi)放平臺(tái),適用于原型開(kāi)發(fā)以及使用大量 I/O 和外設(shè)的系統(tǒng)。它包括一個(gè)以太網(wǎng)端口、USB OTG、三個(gè) LED、兩個(gè)用戶和重置按鈕以及用于 ST Zio(包括ArduinoUno V3)和 ST Morpho 的擴(kuò)展板連接器。
最后介紹NXP Semiconductors公司的IMXRT1050-EVKB開(kāi)發(fā)板,該公司的i.MX RT 1050處理器使用的就是這款開(kāi)發(fā)板,運(yùn)行頻率高達(dá) 600 MHz(圖 4)。該處理器仍然基于 Cortex-M7 架構(gòu),但卻擁有很強(qiáng)的機(jī)器學(xué)習(xí)算法執(zhí)行能力。因此,這是一個(gè)很棒的通用平臺(tái),開(kāi)發(fā)人員可以使用它來(lái)試驗(yàn)和調(diào)整他們對(duì)機(jī)器學(xué)習(xí)的理解。該處理器內(nèi)含 512 kB 緊耦合內(nèi)存 (TCM),并且能夠使用外部 NOR、NAND 或 eMMC 閃存。
圖 4:NXP 的 i.MX RT1050 基于 Arm Cortex-M7 架構(gòu),但同時(shí)還融合了 NXP 的 Cortex-A i.MX 系列處理器的最佳功能。RT1050 是一款高端處理器,能夠提供出色的機(jī)器學(xué)習(xí)體驗(yàn)。(圖片來(lái)源:NXP Semiconductors)
了解 CMSIS-NN 的作用
即使機(jī)器學(xué)習(xí)從云端轉(zhuǎn)移到網(wǎng)絡(luò)邊緣,在微控制器上運(yùn)行機(jī)器學(xué)習(xí)框架也不切實(shí)際,認(rèn)識(shí)到這一點(diǎn)非常重要。微控制器可以運(yùn)行框架的輸出,即經(jīng)過(guò)訓(xùn)練的網(wǎng)絡(luò),但僅此而已。Arm-NN 能夠?qū)⒃诟叨藱C(jī)器上運(yùn)行的經(jīng)過(guò)訓(xùn)練的模型轉(zhuǎn)換為可在微控制器上運(yùn)行的低級(jí)代碼。為 Arm-NN 提供 API 的低級(jí)庫(kù)即是 CMSIS-NN。
如前所述,CMSIS-NN 包含用于常見(jiàn)機(jī)器學(xué)習(xí)活動(dòng)的 API 和庫(kù)函數(shù),例如:
卷積
池化
激活
圖 5:Arm-NN 利用 CMSIS-NN 庫(kù)將高端機(jī)器上執(zhí)行的經(jīng)過(guò)訓(xùn)練的模型轉(zhuǎn)換為可在 Cortex-M 處理器上運(yùn)行的低級(jí)代碼。(圖片來(lái)源:Arm)
使用邊緣機(jī)器學(xué)習(xí)的技巧和竅門
有很多技術(shù)可以幫助改進(jìn)邊緣機(jī)器學(xué)習(xí)。以下是一些技巧和竅門,可以幫助那些有興趣架設(shè)和運(yùn)行自己的機(jī)器學(xué)習(xí)系統(tǒng)的開(kāi)發(fā)人員:
如果不考慮延遲,可以使用邊緣收集數(shù)據(jù),并使用云端通過(guò)機(jī)器學(xué)習(xí)網(wǎng)絡(luò)來(lái)處理數(shù)據(jù)
將機(jī)器學(xué)習(xí)分流到云端時(shí),除非您計(jì)劃未來(lái)將機(jī)器學(xué)習(xí)轉(zhuǎn)移到邊緣設(shè)備,否則請(qǐng)不要過(guò)度選擇邊緣設(shè)備所需的處理能力
當(dāng)實(shí)時(shí)性能至關(guān)重要時(shí),請(qǐng)使用高性能的 Arm Cortex-M7 處理器來(lái)執(zhí)行邊緣機(jī)器學(xué)習(xí)網(wǎng)絡(luò)
閱讀 Ian Goodfellow、Yoshua Bengio、Aaron Courville 和 Francis Bach 編寫(xiě)的《深度學(xué)習(xí)》,了解機(jī)器學(xué)習(xí)背后的理論和數(shù)學(xué)知識(shí)
從云端或 PC 開(kāi)始,然后按照自己的方式達(dá)成嵌入式目標(biāo)
創(chuàng)建一個(gè)可以識(shí)別手寫(xiě)數(shù)字的“Hello World”應(yīng)用程序
查看關(guān)于關(guān)鍵字識(shí)別和語(yǔ)音識(shí)別的 Arm 論文
購(gòu)買開(kāi)發(fā)套件并復(fù)制一個(gè)示例
結(jié)論
智能正在迅速?gòu)脑贫讼蜻吘夀D(zhuǎn)移。從將機(jī)器學(xué)習(xí)完全分流到云端,到在邊緣上運(yùn)行經(jīng)過(guò)訓(xùn)練的機(jī)器學(xué)習(xí)算法,目前有三種不同的方法可供開(kāi)發(fā)人員選擇。運(yùn)行邊緣機(jī)器學(xué)習(xí)需要具有高性能和 DSP 功能的微控制器。Arm Cortex-M7 處理器非常適合架設(shè)和運(yùn)行邊緣機(jī)器學(xué)習(xí)。
-
邊緣檢測(cè)
+關(guān)注
關(guān)注
0文章
92瀏覽量
18224 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8424瀏覽量
132765
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論