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