嵌入式人工智能技術(shù)開發(fā)及應(yīng)用
Development and application of embedded AI technology
本文引用地址:http://butianyuan.cn/article/201904/400008.htm作者/畢盛 華南理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院(廣東 廣州 510006)
摘要:人工智能算法如何有效地運(yùn)行在嵌入式智能終端(即邊緣計(jì)算)是近年研究的熱點(diǎn),本文從嵌入式人工智能技術(shù)研究的意義以及所面臨的問題入手,并從硬件平臺(tái)、算法設(shè)計(jì)以及算法部署三個(gè)方面展開,闡述嵌入式人工智能技術(shù)開發(fā)的思路,最后通過一個(gè)應(yīng)用實(shí)例說明此開發(fā)過程。
關(guān)鍵詞:邊緣計(jì)算;嵌入式系統(tǒng);人工智能
1 研究意義
隨著“AIoT(人工智能物聯(lián)網(wǎng))=AI(人工智能)+IoT(物聯(lián)網(wǎng))”的發(fā)展,若把算法都部署在云平臺(tái)上進(jìn)行,會(huì)給網(wǎng)絡(luò)通信帶來不小的壓力,并且會(huì)面臨數(shù)據(jù)傳輸?shù)难舆t性以及安全性等問題,因此并不是所有的智能終端都需要利用云平臺(tái)來運(yùn)行,因此如何在智能終端上直接運(yùn)行算法的邊緣計(jì)算應(yīng)運(yùn)而生。
邊緣計(jì)算相對(duì)于云平臺(tái)有如下優(yōu)勢(shì):(1)實(shí)時(shí)性高,不需要傳輸數(shù)據(jù)從而減少反應(yīng)延遲;(2)可靠性高,即使網(wǎng)絡(luò)斷開也能正常工作;(3)安全性高,避免隱私數(shù)據(jù)被上傳;(4)部署靈活,可在各種終端靈活部署;(5)更加節(jié)能,嵌入式系統(tǒng)低功耗特性以及減少了傳輸過程的能耗等;(6)網(wǎng)絡(luò)流量低,有效抑制了網(wǎng)絡(luò)擁塞;(7)類人化,人就是作為獨(dú)立的智能體生存在社會(huì)網(wǎng)絡(luò)中。
當(dāng)然邊緣計(jì)算不是為了代替云計(jì)算,而是作為云計(jì)算的一個(gè)補(bǔ)充。
據(jù)IDC預(yù)測(cè),到2020年將有超過500億的終端與設(shè)備聯(lián)網(wǎng),而有50%的物聯(lián)網(wǎng)網(wǎng)絡(luò)將面臨網(wǎng)絡(luò)帶寬的限制,40%的數(shù)據(jù)需要在網(wǎng)絡(luò)邊緣分析、處理與儲(chǔ)存。邊緣計(jì)算市場(chǎng)規(guī)模將超萬億,成為與云計(jì)算平分秋色的新興市場(chǎng) [1] 。因此吸引越來越多的公司加入到邊緣計(jì)算開發(fā)當(dāng)中。
2 邊緣計(jì)算的挑戰(zhàn)與機(jī)會(huì)
邊緣計(jì)算就是在嵌入式平臺(tái)上能有效地運(yùn)行各種智能算法,從而使終端具有類似人一樣的智能。如圖1所示,智能算法大致可以歸為三類:(1)認(rèn)知環(huán)境,其中包括物體識(shí)別、目標(biāo)檢測(cè)、語義分割和特征提取功能,涉及了模式識(shí)別、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等技術(shù);(2)顯示場(chǎng)景,其中包括復(fù)原算法、三維點(diǎn)云展示和場(chǎng)景生成,涉及了最優(yōu)化、虛擬現(xiàn)實(shí)、深度學(xué)習(xí)GAN網(wǎng)絡(luò)等技術(shù);(3)控制機(jī)構(gòu),其中包括智能控制,涉及了強(qiáng)化學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)控制等技術(shù)。但是邊緣計(jì)算環(huán)境下嵌入式平臺(tái)的運(yùn)算能力弱,因此如何能有效的運(yùn)行各種智能算法是一個(gè)很挑戰(zhàn)的問題。
隨著人們對(duì)人工智能越來越深入的研究,邊緣計(jì)算也有了一系列發(fā)展的機(jī)會(huì):(1)目前通用的計(jì)算機(jī)體系硬件體系結(jié)構(gòu)并不符合人腦的結(jié)構(gòu)構(gòu)成,所以計(jì)算效能還有很大的提升潛力,因此這為邊緣計(jì)算平臺(tái)提供了彎道超車的可能性;(2)當(dāng)前的智能算法還有很大改進(jìn)的空間,例如通過深度學(xué)習(xí)訓(xùn)練出的特征往往優(yōu)于人們傳統(tǒng)認(rèn)識(shí)的特征(例如邊緣和角點(diǎn)特征等),因此這為邊緣計(jì)算在算法改進(jìn)上提供了很大空間;(3)邊緣計(jì)算平臺(tái)即嵌入式系統(tǒng)往往是實(shí)現(xiàn)某種特定的應(yīng)用,因此可以根據(jù)需求對(duì)算法進(jìn)行各種簡(jiǎn)化,并且可提出合適的部署方案。
結(jié)合邊緣計(jì)算所面臨的挑戰(zhàn)和機(jī)會(huì),本文從硬件架構(gòu)、算法設(shè)計(jì)和算法部署三個(gè)方面展開邊緣計(jì)算的開發(fā)和應(yīng)用。
3 邊緣計(jì)算環(huán)境下的硬件架構(gòu)
人工智能(AI)從云端走向邊緣端,需要嵌入式硬件有較好的運(yùn)算能力,因此各芯片廠家在芯片內(nèi)部集成了便于加速運(yùn)算的硬件模塊,其中包括如下。
?。?)多核處理架構(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,從而提高顯示處理能力,并在邊緣計(jì)算環(huán)境下實(shí)現(xiàn)并行加速計(jì)算,主要有兩種類型:堆核,如ARM芯片采用的Mali GPU;大核,如高通公司采用的Adreno GPU。
?。?)神經(jīng)網(wǎng)絡(luò)處理器(NPU)。采用“數(shù)據(jù)驅(qū)動(dòng)并行計(jì)算”架構(gòu),顛覆了傳統(tǒng)馮·諾依曼計(jì)算機(jī)架構(gòu),從而可以加速深度學(xué)習(xí)算法,如瑞芯微RK3399Pro、寒武紀(jì)MLU100、華為麒麟980和高通驍龍855等芯片。
?。?)數(shù)字信號(hào)處理DSP。DSP內(nèi)部集成了硬件乘法器、多總線和信號(hào)處理單元,通過DSP指令集可實(shí)現(xiàn)算法的硬件加速,例如TI、ADI等公司專用的DSP芯片,Xilinx公司、英特爾可編程解決方案事業(yè)部(注:英收購的Altera公司)的FPGA集成了DSP單元。
?。?)基于算法定制化的ASIC——XPU和DLA。
根據(jù)需求設(shè)計(jì)特定人工智能算法芯片“xPU”,例如APU、BPU等,以及Google公司推出的張量處理器TPU。 英偉達(dá)提供了的DLA(深度學(xué)習(xí)加速器),并進(jìn)行開源,瞄準(zhǔn)了嵌入式和 IoT 市場(chǎng)。
?。?)芯片內(nèi)核加速單元—ARM核NEON。ARMNEON是單指令多數(shù)據(jù)流(SIMD)技術(shù),可用于加速多媒體和信號(hào)處理算法,例如一些針對(duì)ARM芯片的前端部署方案諸如NCNN [2] 采用NEON對(duì)深度學(xué)習(xí)的卷積運(yùn)算進(jìn)行加速。
(7)類人腦芯片。例如IBM公司的TrueNorth(真北),模擬人腦神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)的64芯片系統(tǒng),數(shù)據(jù)處理能力已經(jīng)相當(dāng)于包含6400萬個(gè)神經(jīng)細(xì)胞和160億個(gè)神經(jīng)突觸的類腦功能。
4 邊緣計(jì)算算法設(shè)計(jì)
設(shè)計(jì)適合于邊緣計(jì)算環(huán)境下運(yùn)行的算法,如圖2所示,主要從以下幾方面進(jìn)行考慮:
?。?)在對(duì)外界環(huán)境認(rèn)知過程中,如何有效地提取特征很重要,從邊緣特征提取方法到壓縮感知理論以及到基于深度學(xué)習(xí)的特征提取方法,都是在研究一種有效特征提取方法,因此可以針對(duì)嵌入式平臺(tái)研究一種在精度和速度上相互兼顧的方法。
(2)嵌入式系統(tǒng)往往是針對(duì)一個(gè)具體的應(yīng)用,而算法研究要考慮到普適性,所以在邊緣計(jì)算環(huán)境下可以結(jié)合具體的應(yīng)用對(duì)算法進(jìn)行改進(jìn),從而減少計(jì)算量提高運(yùn)算速度,例如可以把面向未知場(chǎng)景的全局優(yōu)化搜索問題轉(zhuǎn)為針對(duì)某個(gè)具體場(chǎng)景的局部?jī)?yōu)化問題。
(3)利用傳感器直接采集數(shù)據(jù)代替算法對(duì)此信息的估計(jì)過程,從而降低算法運(yùn)算量。例如單獨(dú)根據(jù)視覺計(jì)算出相機(jī)的位姿,可以通過結(jié)合慣性傳感器(IMU)來降低計(jì)算量使其適合于邊緣計(jì)算環(huán)境下運(yùn)行。
(4)在深度學(xué)習(xí)過程中,需要對(duì)網(wǎng)絡(luò)進(jìn)行簡(jiǎn)化,主要包括:1) 刪除對(duì)模型性能影響不大的卷積核;2)深度可分離卷積和1×1卷積代替普通卷積;3)浮點(diǎn)數(shù)進(jìn)行整形量化,二值化網(wǎng)絡(luò)中參數(shù)用1位來表示;4)精簡(jiǎn)模型學(xué)習(xí)復(fù)雜模型的輸出。例如Google公司的MobileNet [3] 、伯克利與斯坦福大學(xué)的SqueezeNet [4] 和Face++公司的ShuffleNet [5] 等,采用了輕量級(jí)的網(wǎng)絡(luò)結(jié)構(gòu),且保持了較為實(shí)用的準(zhǔn)確率。
5 邊緣計(jì)算前端部署
邊緣計(jì)算算法可以借助硬件加速來提高運(yùn)行效率,例如瑞芯微RK3399、高通驍龍855或華為麒麟980芯片都是基于ARM核,采用了多核、Mali GPU以及支持ARM NEON加速。其中在異構(gòu)多核處理器調(diào)度方面,針對(duì)優(yōu)化目標(biāo)分別從滿足性能、功耗優(yōu)化、滿足公平性和并發(fā)程序瓶頸優(yōu)化等方面進(jìn)行優(yōu)化部署,除了利用多核特性實(shí)現(xiàn)對(duì)算法的整體調(diào)度優(yōu)化外,深度學(xué)習(xí)等智能算法也需要硬件加速,如圖3所示,可以利用ARM NEON單元實(shí)現(xiàn)卷積運(yùn)算的加速。每次1x1卷積操作時(shí),將輸出特征圖按照8個(gè)每組使用OpenMP平分給設(shè)備可調(diào)用的每個(gè)CPU以充分利用硬件資源。之后針對(duì)每8個(gè)輸出特征圖,會(huì)以1x8的小塊為單位同時(shí)進(jìn)行8個(gè)輸出特征圖的計(jì)算。
一些公司也開發(fā)了前端部署方案,例如ARM公司OPEN AI LAB的Tengine框架 [6] 、Google公司的TensorFlow Lite [7] 、騰訊公司的NCNN框架 [2] ,小米公司的MACE框架 [8] 和百度公司的Mobile-deep-learning [9] 、亞馬遜公司的TVM [10]和美國高通公司的 SNPE [11] 等,都是通過借助多核和加速單元實(shí)現(xiàn)卷積的快速計(jì)算,從而在移動(dòng)設(shè)備上有效的實(shí)現(xiàn)深度學(xué)習(xí)算法。
同時(shí)針對(duì)具體硬件平臺(tái),ARM公司OPENAI LAB開發(fā)了基于RK3399芯片的EAIDK開發(fā)套件 [6] 、中科創(chuàng)達(dá)公司開發(fā)了基于高通驍龍845芯片Thundercomm TurboX AI Kit開發(fā)套件 [12] 、NVIDIA Jetson Nano開發(fā)套件等 [13] 。
6 邊緣計(jì)算實(shí)例
本實(shí)驗(yàn)室的張英杰、張粵和李智豪三位同學(xué)在邊緣計(jì)算環(huán)境Thundercomm AI Kit平臺(tái)上實(shí)現(xiàn)了結(jié)合自然語言理解和環(huán)境認(rèn)知的智能服務(wù)系統(tǒng),用于機(jī)器人結(jié)合場(chǎng)景的對(duì)話系統(tǒng)中,如圖4所示。例如人問機(jī)器人“瓶子在哪里”,機(jī)器人通過自然語言處理得到語義文本信息;與此同時(shí),機(jī)器人對(duì)視覺圖片也在進(jìn)行目標(biāo)檢測(cè),根據(jù)訓(xùn)練樣本集VOC的物體類別,在圖片中可以識(shí)別出“瓶子”和“顯示器”并框選出來;接著通過相似度的評(píng)價(jià)方法對(duì)語言理解語義和視覺認(rèn)知的物體名稱進(jìn)行匹配,并根據(jù)物體的坐標(biāo)信息,可得出“瓶子在顯示器右側(cè)”。
整個(gè)過程主要包括:(1)自然語言理解,由于語音數(shù)據(jù)量不大,同時(shí)有較多的基于云端的商業(yè)解決方案,因此借助訊飛公司的語音識(shí)別SDK實(shí)現(xiàn)語音處理,獲得語義文本;(2)物體目標(biāo)檢測(cè)采用深度學(xué)習(xí)的思路實(shí)現(xiàn),但傳統(tǒng)的深度網(wǎng)絡(luò)計(jì)算量大,不能在邊緣端運(yùn)行,因此需要對(duì)網(wǎng)絡(luò)輕量化并選取合適的前端硬件部署方案,本項(xiàng)目利用VOC數(shù)據(jù)集在Caffe框架下訓(xùn)練MobileNet-SSD輕量級(jí)深度網(wǎng)絡(luò),并利用NCNN框架實(shí)現(xiàn)在硬件上的部署;(3)利用相似度評(píng)價(jià)方法實(shí)現(xiàn)文本語義和物體指稱的匹配,最終確定出物體的相對(duì)位置。
相對(duì)于傳統(tǒng)的非場(chǎng)景對(duì)話系統(tǒng),本系統(tǒng)人機(jī)交互程度高,可用于人與機(jī)器人協(xié)作過程中,同時(shí)整個(gè)系統(tǒng)在嵌入式平臺(tái)上進(jìn)行了實(shí)現(xiàn)并成功部署。本系統(tǒng)參加了2018年中科創(chuàng)達(dá)技術(shù)大會(huì)并進(jìn)行了現(xiàn)場(chǎng)實(shí)物演示,獲得了一等獎(jiǎng)。
參考文獻(xiàn)
[1]胡又文 (ID:axzqjsj),華爾街見聞專欄作者,邊緣計(jì)算,5G時(shí)代新風(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
作者簡(jiǎn)介
畢盛(1978-),男,博士,副教授,主要從事智能機(jī)器人、FPGA快速處理算法、嵌入式智能終端及智能手機(jī)研究和開發(fā)工作。
本文來源于科技期刊《電子產(chǎn)品世界》2019年第5期第14頁,歡迎您寫論文時(shí)引用,并注明出處
評(píng)論