畢盛
摘要:人工智能算法如何有效地運行在嵌入式智能終端(即邊緣計算)是近年研究的熱點,本文從嵌入式人工智能技術(shù)研究的意義以及所面臨的問題入手,并從硬件平臺、算法設(shè)計以及算法部署三個方面展開,闡述嵌入式人工智能技術(shù)開發(fā)的思路,最后通過一個應(yīng)用實例說明此開發(fā)過程。
關(guān)鍵詞:邊緣計算;嵌入式系統(tǒng);人工智能
1研究意義
隨著“AloT(人工智能物聯(lián)網(wǎng))=Al(人工智能)+loT(物聯(lián)網(wǎng))”的發(fā)展,若把算法都部署在云平臺,上進行,會給網(wǎng)絡(luò)通信帶來不小的壓力,并且會面臨數(shù)據(jù)傳輸?shù)难舆t性以及安全性等問題,因此并不是所有的智能終端都需要利用云平臺來運行,因此如何在智能終端上直接運行算法的邊緣計算應(yīng)運而生。
邊緣計算相對于云平臺有如下優(yōu)勢:(1)實時性高,不需要傳輸數(shù)據(jù)從而減少反應(yīng)延遲;(2)可靠性高,即使網(wǎng)絡(luò)斷開也能正常工作;(3)安全性高,避免隱私數(shù)據(jù)被上傳;(4)部署靈活,可在各種終端靈活部署;(5)更加節(jié)能,嵌入式系統(tǒng)低功耗特性以及減少了傳輸過程的能耗等;(6)網(wǎng)絡(luò)流量低,有效抑制了網(wǎng)絡(luò)擁塞;(7)類人化,人就是作為獨立的智能體生存在社會網(wǎng)絡(luò)中。
當(dāng)然邊緣計算不是為了代替云計算,而是作為云計算的一個補充。
據(jù)IDC預(yù)測,到2020年將有超過500億的終端與設(shè)備聯(lián)網(wǎng),而有50%的物聯(lián)網(wǎng)網(wǎng)絡(luò)將面臨網(wǎng)絡(luò)帶寬的限制,40%的數(shù)據(jù)需要在網(wǎng)絡(luò)邊緣分析、處理與儲存。邊緣計算市場規(guī)模將超萬億,成為與云計算平分秋色的新興市場"。因此吸引越來越多的公司加入到邊緣計算開發(fā)當(dāng)中。
2邊緣計算的挑戰(zhàn)與機會
邊緣計算就是在嵌入式平臺上能有效地運行各種智能算法,從而使終端具有類似人一樣的智能。如圖1所示,智能算法大致可以歸為三類:(1)認(rèn)知環(huán)境,其中包括物體識別、目標(biāo)檢測、語義分割和特征提取功能,涉及了模式識別、機器學(xué)習(xí)和深度學(xué)習(xí)等技術(shù);(2)顯示場景,其中包括復(fù)原算法、三維點云展示和場景生成,涉及了最優(yōu)化、虛擬現(xiàn)實、深度學(xué)習(xí)GAN網(wǎng)絡(luò)等技術(shù),(3)控制機構(gòu),其中包括智能控制,涉.及了強化學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)控制等技術(shù)。但是邊緣計算環(huán)境下嵌入式平臺的運算能力弱,因此如何能有效的運行各種智能算法是一個很挑戰(zhàn)的問題。
隨著人們對人工智能越來越深入的研究,邊緣計算也有了-系列發(fā)展的機會:(1)目前通用的計算機體系硬件體系結(jié)構(gòu)并不符合人腦的結(jié)構(gòu)構(gòu)成,所以計算效能還有很大的提升潛力,因此這為邊緣計算平臺提供了彎道超車的可能性;(2)當(dāng)前的智能算法還有很大改進的空間,例如通過深度學(xué)習(xí)訓(xùn)練出的特征往往優(yōu)于人們傳統(tǒng)認(rèn)識的特征(例如邊緣和角點特征等),因此這為邊緣計算在算法改進上提供了很大空間;(3)邊緣計算平臺即嵌入式系統(tǒng)往往是實現(xiàn)某種特定的應(yīng)用,因此可以根據(jù)需求對算法進行各種簡化,并且可提出合適的部署方案。
結(jié)合邊緣計算所面臨的挑戰(zhàn)和機會,本文從硬件架構(gòu)、算法設(shè)計和算法部署三個方面展開邊緣計算的開發(fā)和應(yīng)用。
3邊緣計算環(huán)境下的硬件架構(gòu)
人工智能(AI)從云端走向邊緣端,需要嵌入式硬件有較好的運算能力,因此各芯片廠家在芯片內(nèi)部集成了便于加速運算的硬件模塊,其中包括如下。
(1)多核處理架構(gòu)。其中異構(gòu)多核架構(gòu)即結(jié)合兩種或多種不同類型的芯片內(nèi)核架構(gòu),使其能夠提供適合各種應(yīng)用的處理器性能,以及更有效功耗和更少的物理空間,近年來在嵌入式領(lǐng)域得到了大范圍推廣,例如現(xiàn)在推出的高性能ARM核芯片瑞芯微RK3399等是基于異構(gòu)多核架構(gòu)的。
(2)嵌入式GPU。嵌入式芯片內(nèi)部集成GPU,從而提高顯示處理能力,并在邊緣計算環(huán)境下實現(xiàn)并行加速計算,主要有兩種類型:堆核,如ARM芯片采用的Mali GPU;大核,如高通公司采用的Adreno GPU。
(3)神經(jīng)網(wǎng)絡(luò)處理器(NPU)。采用“數(shù)據(jù)驅(qū)動并行計算”架構(gòu),顛覆了傳統(tǒng)馮.諾依曼計算機架構(gòu),從而可以加速深度學(xué)習(xí)算法,如瑞芯微RK3399Pro、寒武紀(jì)MLU100、華為麒麟980和高通驍龍855等芯片。
(4)數(shù)字信號處理DSP。DSP內(nèi)部集成了硬件乘法器、多總線和信號處理單元,通過DSP指令集可實現(xiàn)算法的硬件加速,例如TI、ADI等公司專用的DSP芯片,Xilinx公司、英特爾可編程解決方案事業(yè)部(注:英收購的Altera公司)的FPGA集成了DSP單元。
(5)基于算法定制化的ASIC——XPU和DLA。根據(jù)需求設(shè)計特定人工智能算法芯片“xPU”,例如APU、BPU等,以及Google公司推出的張量處理器TPU。英偉達(dá)提供了的DLA(深度學(xué)習(xí)加速器),并進行開源,瞄準(zhǔn)了嵌入式和IoT市場。
(6)芯片內(nèi)核加速單元一ARM核NEON。ARMNEON是單指令多數(shù)據(jù)流(SIMD)技術(shù),可用于加速多媒體和信號處理算法,例如一些針對ARM芯片的前端部署方案諸如NCNN2采用NEON對深度學(xué)習(xí)的卷積運算進行加速。
(7)類人腦芯片。例如IBM公司的TrueNorth(真北),模擬人腦神經(jīng)網(wǎng)絡(luò)設(shè)計的64芯片系統(tǒng),數(shù)據(jù)處理能力已經(jīng)相當(dāng)于包含6400萬個神經(jīng)細(xì)胞和160億個神經(jīng)突觸的類腦功能。
4邊緣計算算法設(shè)計
設(shè)計適合于邊緣計算環(huán)境下運行的算法,如圖2所示,主要從以下幾方面進行考慮:
(1)在對外界環(huán)境認(rèn)知過程中,如何有效地提取特征很重要,從邊緣特征提取方法到壓縮感知理論以及到基于深度學(xué)習(xí)的特征提取方法,都是在研究一種有效特征提取方法,因此可以針對嵌入式平臺研究一種在精度和速度上相互兼顧的方法。
(2)嵌入式系統(tǒng)往往是針對一個具體的應(yīng)用,而算法研究要考慮到普適性,所以在邊緣計算環(huán)境下可以結(jié)合具體的應(yīng)用對算法進行改進,從而減少計算量提高運算速度,例如可以把面向未知場景的全局優(yōu)化搜索問題轉(zhuǎn)為針對某個具體場景的局部優(yōu)化問題。
(3)利用傳感器直接采集數(shù)據(jù)代替算法對此信息的估計過程,從而降低算法運算量。例如單獨根據(jù)視覺計算出相機的位姿,可以通過結(jié)合慣性傳感器(IMU)來降低計算量使其適合于邊緣計算環(huán)境下運行。
(4)在深度學(xué)習(xí)過程中,需要對網(wǎng)絡(luò)進行簡化,主要包括:1)刪除對模型性能影響不大的卷積核;2)深度可分離卷積和1X1卷積代替普通卷積;3)浮點數(shù)進行整形量化,二值化網(wǎng)絡(luò)中參數(shù)用1位來表示;4)精簡模型學(xué)習(xí)復(fù)雜模型的輸出。例如Google公司的MobileNet[3]、伯克利與斯坦福大學(xué)的SqueezeNet[4]和Face++公司的ShuffleNet等,采用了輕量級的網(wǎng)絡(luò)結(jié)構(gòu),且保持了較為實用的準(zhǔn)確率。
5邊緣計算前端部署
邊緣計算算法可以借助硬件加速來提高運行效率,例如瑞芯微RK3399、高通驍龍855或華為麒麟980芯片都是基于ARM核,采用了多核、Mali GPU以及支持ARMNEON加速。其中在異構(gòu)多核處理器調(diào)度方面,針對優(yōu)化目標(biāo)分別從滿足性能、功耗優(yōu)化、滿足公平性和并發(fā)程序瓶頸優(yōu)化等方面進行優(yōu)化部署,除了利用多核特性實現(xiàn)對算法的整體調(diào)度優(yōu)化外,深度學(xué)習(xí)等智能算法也需要硬件加速,如圖3所示,可以利用ARMNEON單元實現(xiàn)卷積運算的加速。每次1x1卷積操作時,將輸出特征圖按照8個每組使用OpenMP平分給設(shè)備可調(diào)用的每個CPU以充分利用硬件資源。之后針對每8個輸出特征圖,會以1x8的小塊為單位同時進行8個輸出特征圖的計算。
一些公司也開發(fā)了前端部署方案,例如ARM公司OPENAILAB的Tengine框架l6、Google公司的TensorFlowLite[7]、騰訊公司的NCNN框架[2],小米公司的MACE框架[8和百度公司的Mobile-deep-learning9、亞馬遜公司的TVM1101和美國高通公司的SNPEI11等,都是通過借助多核和加速單元實現(xiàn)卷積的快速計算,從而在移動設(shè)備上有效的實現(xiàn)深度學(xué)習(xí)算法。
同時針對具體硬件平臺,ARM公司OPENAlLAB開發(fā)了基于RK3399芯片的EAIDK開發(fā)套件6]、中科創(chuàng)達(dá)公司開發(fā)了基于高通驍龍845芯片ThundercommTurboXAI Kit開發(fā)套件1121、NVIDIAJetsonNano開發(fā)套件等[13]。
6邊緣計算實例
本實驗室的張英杰、張粵和李智豪三位同學(xué)在邊緣計算環(huán)境ThundercommAI Kit平臺上實現(xiàn)了結(jié)合自然語言理解和環(huán)境認(rèn)知的智能服務(wù)系統(tǒng),用于機器人結(jié)合場景的對話系統(tǒng)中,如圖4所示。例如人問機器人‘瓶子在哪里”,機器人通過自然語言處理得到語義文本信息;與此同時,機器人對視覺圖片也在進行目標(biāo)檢測,根據(jù)訓(xùn)練樣本集VOC的物體類別,在圖片中可以識別出“瓶子”和“顯示器”并框選出來;接著通過相似度的評價方法對語言理解語義和視覺認(rèn)知的物體名稱進行匹配,并根據(jù)物體的坐標(biāo)信息,可得出“瓶子在顯示器右側(cè)”。
整個過程主要包括:(1)自然語言理解,由于語音數(shù)據(jù)量不大,同時有較多的基于云端的商業(yè)解決方案,因此借助訊飛公司的語音識別SDK實現(xiàn)語音處理,獲得語義文本;(2)物體目標(biāo)檢測采用深度學(xué)習(xí)的思路實現(xiàn),但傳統(tǒng)的深度網(wǎng)絡(luò)計算量大,不能在邊緣端運行,因此需要對網(wǎng)絡(luò)輕量化并選取合適的前端硬件部署方案,本項目利用VOC數(shù)據(jù)集在Caffe框架下訓(xùn)練MobileNet-SSD輕量級深度網(wǎng)絡(luò),并利用NCNN框架實現(xiàn)在硬件上的部署;(3)利用相似度評價方法實現(xiàn)文本語義和物體指稱的匹配,最終確定出物體的相對位置。
相對于傳統(tǒng)的非場景對話系統(tǒng),本系統(tǒng)人機交互程度高,可用于人與機器人協(xié)作過程中,同時整個系統(tǒng)在嵌入式平臺上進行了實現(xiàn)并成功部署。本系統(tǒng)參加了2018年中科創(chuàng)達(dá)技術(shù)大會并進行了現(xiàn)場實物演示,獲得了一等獎。
參考文獻(xiàn)
[1]胡又文(ID:axzqjsj),華爾街見聞專欄作者,邊緣計算,5G時代新風(fēng)口,https://wallstreetcn.com/articles/3487892,2019.03.05
[2]NCNN[eb/ol],https://github.com/Tencent/ncnn
[3]HowardAG,ZhuM,ChenB,et al.MobileNets:EfficientConvolutionalNeuralNetworksforMobileVisionApplications[J/OL].https://arxiv.org/pdf/1704.04861.pdf,2017.
[4]landolaFN,MoskewiczMW,AshrafK,et al.SqueezeNet:AlexNet-levelaccuracywith50xfewerparametersand<1MBmodelsize[J/OL].https//arxiv.org/pdf/1602.07360.pdf,2016.
[5]ZhangX,ZhouX,LinM,et al.ShuffleNet:AnExtremelyEfficientConvolutionalNeuralNetworkforMobileDevices[J/OL].https/arxiv.org/pdf/1707.01083.pdf,2017.
[6]Tengine[eb/ol,ht://ww.openailab.com/,2019,2019.04.10
[7]TensorFlowLite[eb/ol],https://tensorflow.google.cn/lite/,2019.04.10
[8]MACE[eb/ol],ht:/github.com/XiaoMi/mace/blob/master/README_.zh.md,2019.04.10
[9]Mobile-deep-learning[eb/ol,https://github.com/PaddlePaddle/paddle-mobile,2019.04.10
[10]TVM[eb/ol],https://tvm.ai/,2019.04.10
[11]SNPE[eb/ol],https://developer.qualcomm.com/docs/snpe/overview.html,2019.04.10
[12]ThundercommTurboXAlKit[eb/oI],https://www.thundercomm.com/app__zh/product/1536844968290219,.2019.04.10
[13]NVIDIAJetsonNano[eb/ol],https://www.nvidia.cn/autonomous-machines/embedded-systems/jetson-nano/,2019.04.10