嵌入式系統(tǒng)中AI和ML的實(shí)際應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
譯自:https://blogs.windriver.com/wind_river_blog
/2020/01/practical-applications-for-ai-and-ml-in-embedded-systems/
基本背景
嵌入式開(kāi)發(fā)往往是由部署高度優(yōu)化和高效的系統(tǒng)需求所驅(qū)動(dòng)。
人工智能通過(guò)采用解決復(fù)雜問(wèn)題的新方法對(duì)現(xiàn)有業(yè)務(wù)或現(xiàn)有工作類(lèi)型的革命而顛覆世界。無(wú)論您是否真正了解這種顛覆性革新所帶來(lái)價(jià)值,以及如何將其應(yīng)用到您的市場(chǎng)中,還是想弄清楚如何利用這項(xiàng)技術(shù),對(duì)人工智能及其潛在應(yīng)用的做一些基本了解已迫在眉睫。了解其潛在的應(yīng)用必將成為您戰(zhàn)略規(guī)劃過(guò)程的關(guān)鍵一環(huán)。
盡管已進(jìn)行了大肆宣傳,但令人震驚的是,人們認(rèn)為人工智能似乎是無(wú)所不能的魔術(shù)棒。然而魔術(shù)師們卻僅僅能使用很小的一部分魔術(shù)技能以解決現(xiàn)實(shí)中的問(wèn)題。這種反差引起人們強(qiáng)烈關(guān)注的一個(gè)領(lǐng)域是如何將人工智能應(yīng)用于嵌入式系統(tǒng),重點(diǎn)是如何在這些更受限的環(huán)境中部署人工智能應(yīng)用。
定義和基本原理
為確保我們能有基本共識(shí),讓我們從不同技術(shù)及其對(duì)計(jì)算要求的基本背景開(kāi)始介紹。
人工智能是一門(mén)計(jì)算機(jī)科學(xué)學(xué)科,致力于研究如何使用計(jì)算機(jī)來(lái)模仿人類(lèi)智能。自20世紀(jì)計(jì)算機(jī)技術(shù)問(wèn)世以來(lái),人工智能就已經(jīng)存在了,當(dāng)時(shí)諸如Alan Turing之類(lèi)的先驅(qū)者預(yù)見(jiàn)了計(jì)算機(jī)以人類(lèi)可能以類(lèi)似的方式解決問(wèn)題的可能性。
經(jīng)典的計(jì)算機(jī)編程通過(guò)在代碼中顯式編碼算法來(lái)解決問(wèn)題,指導(dǎo)計(jì)算機(jī)執(zhí)行邏輯來(lái)處理數(shù)據(jù)并計(jì)算輸出。相比之下,機(jī)器學(xué)習(xí)(ML)是一種AI方法,旨在尋找數(shù)據(jù)模型,并根據(jù)數(shù)據(jù)進(jìn)行有效學(xué)習(xí)。有很多方法可以實(shí)現(xiàn),包括預(yù)標(biāo)記數(shù)據(jù)(或不標(biāo)記數(shù)據(jù)),指導(dǎo)算法開(kāi)發(fā)的強(qiáng)化學(xué)習(xí),通過(guò)統(tǒng)計(jì)分析(或其他方法)提取特征,然后根據(jù)經(jīng)過(guò)訓(xùn)練的數(shù)據(jù)集對(duì)輸入數(shù)據(jù)進(jìn)行分類(lèi),從而確定具有指定置信度的輸出。
深度學(xué)習(xí)(DL)是ML的子集,它使用多層神經(jīng)網(wǎng)絡(luò)從迭代的大型數(shù)據(jù)集中訓(xùn)練模型。訓(xùn)練后,模型可以查看新數(shù)據(jù)集以推斷出新數(shù)據(jù)。這種方法最近引起了很多關(guān)注,并已應(yīng)用于各種問(wèn)題,如圖像處理和語(yǔ)音識(shí)別或金融資產(chǎn)建模。我們認(rèn)為這種方法也對(duì)未來(lái)的關(guān)鍵基礎(chǔ)架構(gòu)和設(shè)備產(chǎn)生重大影響。
在嵌入式系統(tǒng)中應(yīng)用ML/DL
由于創(chuàng)建精確模型所需的大量數(shù)據(jù)集以及訓(xùn)練模型所需的大量計(jì)算能力,因此通常在云或高性能計(jì)算環(huán)境中進(jìn)行訓(xùn)練。相反,推論通常應(yīng)用于靠近數(shù)據(jù)源的設(shè)備中。盡管分布式訓(xùn)練或邊緣訓(xùn)練是一個(gè)非常令人感興趣的話題,但它并不是當(dāng)今大多數(shù)ML系統(tǒng)的部署方式。為了簡(jiǎn)單起見(jiàn),我們假設(shè)訓(xùn)練是在云端進(jìn)行的,而推理將在邊緣或設(shè)備內(nèi)進(jìn)行。
如前所述,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)是以數(shù)據(jù)為中心的學(xué)科。因此,創(chuàng)建和訓(xùn)練模型需要訪問(wèn)大型數(shù)據(jù)集以及為數(shù)據(jù)操作提供豐富環(huán)境的工具和環(huán)境。使用了簡(jiǎn)化數(shù)據(jù)處理,實(shí)現(xiàn)復(fù)雜的數(shù)學(xué)庫(kù)和統(tǒng)計(jì)分析的框架和語(yǔ)言。這些通常是諸如Python之類(lèi)的語(yǔ)言框架,然后在其上構(gòu)建ML框架。有很多這樣的框架,一些常見(jiàn)的框架包括TensorFlow,Caffe或PyTorch。
機(jī)器學(xué)習(xí)框架可用于模型開(kāi)發(fā)和訓(xùn)練,也可用于在邊緣使用經(jīng)過(guò)訓(xùn)練的模型來(lái)運(yùn)行推理引擎。因此,一種簡(jiǎn)單的部署方案是在設(shè)備中部署諸如TensorFlow的框架。由于它們需要豐富的運(yùn)行時(shí)環(huán)境(例如Python),因此它們最適合Linux上的通用計(jì)算工作負(fù)載。由于需要在移動(dòng)設(shè)備上運(yùn)行機(jī)器學(xué)習(xí),我們看到許多輕量級(jí)的推理引擎(TensorFlow Lite,PyTorch mobile)已經(jīng)開(kāi)始開(kāi)發(fā),需要較少的資源,但是這些引擎相較于其全功能版本仍然尚未廣泛使用或還不成熟。
不需要完整的ML框架就可以解釋和運(yùn)行某些模型。例如,包含深層/卷積神經(jīng)網(wǎng)絡(luò)(DNN / CNN)庫(kù)的計(jì)算機(jī)視覺(jué)框架OpenCV可以從TensorFlow和其他框架中讀取模型。OpenCV和DNN庫(kù)可在許多不支持更復(fù)雜或功能齊全的ML框架的緊湊型操作環(huán)境中使用,因此第二個(gè)部署選項(xiàng)是使用諸如OpenCV的框架部署推理引擎。
機(jī)器學(xué)習(xí)是高度計(jì)算密集型的,早期部署(例如在自動(dòng)駕駛汽車(chē)中)依賴(lài)于專(zhuān)門(mén)的硬件加速器,例如GPU,F(xiàn)PGA或?qū)iT(mén)的神經(jīng)網(wǎng)絡(luò)。隨著這些加速器在SoC中變得越來(lái)越普遍,我們可以預(yù)期看到高效的引擎在受限設(shè)備中運(yùn)行機(jī)器學(xué)習(xí)模型。發(fā)生這種情況時(shí),另一個(gè)部署選項(xiàng)是編譯經(jīng)過(guò)訓(xùn)練的模型,以在DNN加速器上進(jìn)行優(yōu)化部署。一些這樣的工具已經(jīng)存在,并且需要現(xiàn)代的編譯器框架(例如LLVM)以模型前端和硬件加速器后端為目標(biāo)。
對(duì)嵌入式開(kāi)發(fā)的影響
嵌入式開(kāi)發(fā)通常是由部署高度優(yōu)化和高效的系統(tǒng)的需求所驅(qū)動(dòng)。經(jīng)典的開(kāi)發(fā)方法是從非常受限的硬件和軟件環(huán)境開(kāi)始,并僅在需要時(shí)才添加功能。這是RTOS應(yīng)用程序的典型應(yīng)用。
隨著技術(shù)的日新月異,我們看到開(kāi)發(fā)方法首先要使復(fù)雜的系統(tǒng)工作,然后在以后的階段進(jìn)行優(yōu)化以進(jìn)行部署。與軟件的許多重大進(jìn)步一樣,開(kāi)源社區(qū)是機(jī)器學(xué)習(xí)中創(chuàng)新步伐和規(guī)模的重要推動(dòng)引擎。包含在開(kāi)源中并通常從Linux開(kāi)發(fā)開(kāi)始的工具和框架正在迅速成為主要的創(chuàng)新途徑。因此,同時(shí)使用實(shí)時(shí)操作系統(tǒng)(RTOS)和Linux或?qū)㈤_(kāi)源從Linux遷移到RTOS是必須得到支持的重要開(kāi)發(fā)旅程。
無(wú)論公司是剛剛起步還是準(zhǔn)備部署優(yōu)化的機(jī)器學(xué)習(xí)解決方案,他們都必須構(gòu)建基礎(chǔ)技術(shù)和豐富的開(kāi)發(fā)環(huán)境來(lái)抽象化復(fù)雜性并啟用異構(gòu)運(yùn)行時(shí)環(huán)境。
—END—
如果喜歡右下點(diǎn)個(gè)在看,也會(huì)讓我倍感鼓舞
關(guān)注置頂:掃描左下二維碼關(guān)注公眾號(hào)加星
關(guān)注 |
加群 |
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!