嵌入式人工智能技術(shù)開發(fā)及應(yīng)用
Development and application of embedded AI technology
本文引用地址:http://m.butianyuan.cn/article/201904/400008.htm作者/畢盛 華南理工大學(xué) 計算機科學(xué)與工程學(xué)院(廣東 廣州 510006)
摘要:人工智能算法如何有效地運行在嵌入式智能終端(即邊緣計算)是近年研究的熱點,本文從嵌入式人工智能技術(shù)研究的意義以及所面臨的問題入手,并從硬件平臺、算法設(shè)計以及算法部署三個方面展開,闡述嵌入式人工智能技術(shù)開發(fā)的思路,最后通過一個應(yīng)用實例說明此開發(fā)過程。
關(guān)鍵詞:邊緣計算;嵌入式系統(tǒng);人工智能
1 研究意義
隨著“AIoT(人工智能物聯(lián)網(wǎng))=AI(人工智能)+IoT(物聯(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ò)中。
當然邊緣計算不是為了代替云計算,而是作為云計算的一個補充。
據(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ī)模將超萬億,成為與云計算平分秋色的新興市場 [1] 。因此吸引越來越多的公司加入到邊緣計算開發(fā)當中。
2 邊緣計算的挑戰(zhàn)與機會
邊緣計算就是在嵌入式平臺上能有效地運行各種智能算法,從而使終端具有類似人一樣的智能。如圖1所示,智能算法大致可以歸為三類:(1)認知環(huán)境,其中包括物體識別、目標檢測、語義分割和特征提取功能,涉及了模式識別、機器學(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)當前的智能算法還有很大改進的空間,例如通過深度學(xué)習(xí)訓(xùn)練出的特征往往優(yōu)于人們傳統(tǒng)認識的特征(例如邊緣和角點特征等),因此這為邊緣計算在算法改進上提供了很大空間;(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)的。
?。?)嵌入式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、寒武紀MLU100、華為麒麟980和高通驍龍855等芯片。
(4)數(shù)字信號處理DSP。DSP內(nèi)部集成了硬件乘法器、多總線和信號處理單元,通過DSP指令集可實現(xiàn)算法的硬件加速,例如TI、ADI等公司專用的DSP芯片,Xilinx公司、英特爾可編程解決方案事業(yè)部(注:英收購的Altera公司)的FPGA集成了DSP單元。
?。?)基于算法定制化的ASIC——XPU和DLA。
根據(jù)需求設(shè)計特定人工智能算法芯片“xPU”,例如APU、BPU等,以及Google公司推出的張量處理器TPU。 英偉達提供了的DLA(深度學(xué)習(xí)加速器),并進行開源,瞄準了嵌入式和 IoT 市場。
?。?)芯片內(nèi)核加速單元—ARM核NEON。ARMNEON是單指令多數(shù)據(jù)流(SIMD)技術(shù),可用于加速多媒體和信號處理算法,例如一些針對ARM芯片的前端部署方案諸如NCNN [2] 采用NEON對深度學(xué)習(xí)的卷積運算進行加速。
?。?)類人腦芯片。例如IBM公司的TrueNorth(真北),模擬人腦神經(jīng)網(wǎng)絡(luò)設(shè)計的64芯片系統(tǒng),數(shù)據(jù)處理能力已經(jīng)相當于包含6400萬個神經(jīng)細胞和160億個神經(jīng)突觸的類腦功能。
4 邊緣計算算法設(shè)計
設(shè)計適合于邊緣計算環(huán)境下運行的算法,如圖2所示,主要從以下幾方面進行考慮:
?。?)在對外界環(huán)境認知過程中,如何有效地提取特征很重要,從邊緣特征提取方法到壓縮感知理論以及到基于深度學(xué)習(xí)的特征提取方法,都是在研究一種有效特征提取方法,因此可以針對嵌入式平臺研究一種在精度和速度上相互兼顧的方法。
?。?)嵌入式系統(tǒng)往往是針對一個具體的應(yīng)用,而算法研究要考慮到普適性,所以在邊緣計算環(huán)境下可以結(jié)合具體的應(yīng)用對算法進行改進,從而減少計算量提高運算速度,例如可以把面向未知場景的全局優(yōu)化搜索問題轉(zhuǎn)為針對某個具體場景的局部優(yōu)化問題。
?。?)利用傳感器直接采集數(shù)據(jù)代替算法對此信息的估計過程,從而降低算法運算量。例如單獨根據(jù)視覺計算出相機的位姿,可以通過結(jié)合慣性傳感器(IMU)來降低計算量使其適合于邊緣計算環(huán)境下運行。
?。?)在深度學(xué)習(xí)過程中,需要對網(wǎng)絡(luò)進行簡化,主要包括:1) 刪除對模型性能影響不大的卷積核;2)深度可分離卷積和1×1卷積代替普通卷積;3)浮點數(shù)進行整形量化,二值化網(wǎng)絡(luò)中參數(shù)用1位來表示;4)精簡模型學(xué)習(xí)復(fù)雜模型的輸出。例如Google公司的MobileNet [3] 、伯克利與斯坦福大學(xué)的SqueezeNet [4] 和Face++公司的ShuffleNet [5] 等,采用了輕量級的網(wǎng)絡(luò)結(jié)構(gòu),且保持了較為實用的準確率。
5 邊緣計算前端部署
邊緣計算算法可以借助硬件加速來提高運行效率,例如瑞芯微RK3399、高通驍龍855或華為麒麟980芯片都是基于ARM核,采用了多核、Mali GPU以及支持ARM NEON加速。其中在異構(gòu)多核處理器調(diào)度方面,針對優(yōu)化目標分別從滿足性能、功耗優(yōu)化、滿足公平性和并發(fā)程序瓶頸優(yōu)化等方面進行優(yōu)化部署,除了利用多核特性實現(xiàn)對算法的整體調(diào)度優(yōu)化外,深度學(xué)習(xí)等智能算法也需要硬件加速,如圖3所示,可以利用ARM NEON單元實現(xiàn)卷積運算的加速。每次1x1卷積操作時,將輸出特征圖按照8個每組使用OpenMP平分給設(shè)備可調(diào)用的每個CPU以充分利用硬件資源。之后針對每8個輸出特征圖,會以1x8的小塊為單位同時進行8個輸出特征圖的計算。
一些公司也開發(fā)了前端部署方案,例如ARM公司OPEN AI LAB的Tengine框架 [6] 、Google公司的TensorFlow Lite [7] 、騰訊公司的NCNN框架 [2] ,小米公司的MACE框架 [8] 和百度公司的Mobile-deep-learning [9] 、亞馬遜公司的TVM [10]和美國高通公司的 SNPE [11] 等,都是通過借助多核和加速單元實現(xiàn)卷積的快速計算,從而在移動設(shè)備上有效的實現(xiàn)深度學(xué)習(xí)算法。
同時針對具體硬件平臺,ARM公司OPENAI LAB開發(fā)了基于RK3399芯片的EAIDK開發(fā)套件 [6] 、中科創(chuàng)達公司開發(fā)了基于高通驍龍845芯片Thundercomm TurboX AI Kit開發(fā)套件 [12] 、NVIDIA Jetson Nano開發(fā)套件等 [13] 。
6 邊緣計算實例
本實驗室的張英杰、張粵和李智豪三位同學(xué)在邊緣計算環(huán)境Thundercomm AI Kit平臺上實現(xiàn)了結(jié)合自然語言理解和環(huán)境認知的智能服務(wù)系統(tǒng),用于機器人結(jié)合場景的對話系統(tǒng)中,如圖4所示。例如人問機器人“瓶子在哪里”,機器人通過自然語言處理得到語義文本信息;與此同時,機器人對視覺圖片也在進行目標檢測,根據(jù)訓(xùn)練樣本集VOC的物體類別,在圖片中可以識別出“瓶子”和“顯示器”并框選出來;接著通過相似度的評價方法對語言理解語義和視覺認知的物體名稱進行匹配,并根據(jù)物體的坐標信息,可得出“瓶子在顯示器右側(cè)”。
整個過程主要包括:(1)自然語言理解,由于語音數(shù)據(jù)量不大,同時有較多的基于云端的商業(yè)解決方案,因此借助訊飛公司的語音識別SDK實現(xiàn)語音處理,獲得語義文本;(2)物體目標檢測采用深度學(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)達技術(shù)大會并進行了現(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] Howard A G, Zhu M, Chen B, et al. MobileNets: Efficient Convolutional Neural Networks forMobile Vision Applications[J/OL]. https://arxiv.org/pdf/1704.04861.pdf, 2017.
[4] Iandola F N, Moskewicz M W, Ashraf K, et al. SqueezeNet: AlexNet-level accuracy with 50xfewer parameters and <1MB model size[J/OL]. https://arxiv.org/pdf/1602.07360.pdf, 2016.
[5] Zhang X, Zhou X, Lin M, et al. ShuffleNet: An Extremely Efficient Convolutional NeuralNetwork for Mobile Devices[J/OL]. https://arxiv.org/pdf/1707.01083.pdf, 2017.
[6] Tengine[eb/ol], http://www.openailab.com/, 2019,2019.04.10
[7] TensorFlow Lite[eb/ol],https://tensorflow.google.cn/lite/, 2019.04.10
[8] MACE[eb/ol], https://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] Thundercomm TurboX AI Kit[eb/ol],https://www.thundercomm.com/app_zh/product/1536844968290219,2019.04.10
[13] NVIDIA Jetson Nano[eb/ol], https://www.nvidia.cn/autonomous-machines/embedded-systems/jetson-nano/,2019.04.10
作者簡介
畢盛(1978-),男,博士,副教授,主要從事智能機器人、FPGA快速處理算法、嵌入式智能終端及智能手機研究和開發(fā)工作。
本文來源于科技期刊《電子產(chǎn)品世界》2019年第5期第14頁,歡迎您寫論文時引用,并注明出處
評論