0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為嵌入式應(yīng)用程序優(yōu)化 AI

張飛雄 ? 來(lái)源:一個(gè)黃人 ? 作者:一個(gè)黃人 ? 2022-07-20 09:49 ? 次閱讀

在我之前的博客中,我談到了對(duì)基于 AI 的界面的需求如何變得幾乎不可避免——并且添加一個(gè)基于 AI 的界面(如 face-id)來(lái)授權(quán)對(duì)機(jī)器的訪問(wèn),乍一看似乎是一個(gè)巨大的飛躍,但實(shí)際上并非如此有你想象的那么困難。有大量可用的 AI 平臺(tái)、大量培訓(xùn)選項(xiàng)甚至開源應(yīng)用程序,例如face-id 示例。您可以使用可以在 PC 上運(yùn)行的原型快速啟動(dòng)和測(cè)試。

約束

將訓(xùn)練有素的網(wǎng)絡(luò)遷移到您的嵌入式應(yīng)用程序似乎是另一個(gè)巨大的障礙。PC 或云訓(xùn)練的網(wǎng)絡(luò)并沒(méi)有針對(duì)內(nèi)存使用或功耗進(jìn)行太多優(yōu)化。他們可能會(huì)使用浮點(diǎn)數(shù)或雙字進(jìn)行網(wǎng)絡(luò)計(jì)算,并且在處理圖像上的滑動(dòng)窗口時(shí)會(huì)嚴(yán)重依賴片外內(nèi)存訪問(wèn)。對(duì)于在插入墻上電源的高性能 PC 上運(yùn)行的原型來(lái)說(shuō),這不是問(wèn)題,但您需要在最終應(yīng)用程序中更加節(jié)儉,同時(shí)不影響性能。

優(yōu)化的要點(diǎn)

優(yōu)化的一個(gè)關(guān)鍵步驟稱為量化。將權(quán)重從浮點(diǎn)切換到定點(diǎn)并減小定點(diǎn)大小,例如從 32 位浮點(diǎn)到 8 位整數(shù),不僅會(huì)影響權(quán)重的大小,還會(huì)影響中間計(jì)算值。僅此一項(xiàng)就可以顯著減少內(nèi)存占用,在大多數(shù)情況下對(duì)識(shí)別質(zhì)量幾乎沒(méi)有明顯影響。

第二個(gè)操作是利用權(quán)重的稀疏性,對(duì)準(zhǔn)確性的影響最小。這種做法將利用接近零的權(quán)重,并將它們四舍五入為零,同時(shí)密切跟蹤準(zhǔn)確性影響。權(quán)重用于乘以部分和,當(dāng)其中一個(gè)因素為零時(shí),這是沒(méi)有意義的練習(xí),因此無(wú)需執(zhí)行操作。

在實(shí)際實(shí)現(xiàn)中,圖像是增量處理的,因此當(dāng)計(jì)算窗口在圖像上移動(dòng)時(shí)必須更新權(quán)重。這可以帶來(lái)很多更新和大量流量。通過(guò)強(qiáng)制大部分權(quán)重為零,可以壓縮權(quán)重?cái)?shù)組,從而可以將所有或大部分?jǐn)?shù)組存儲(chǔ)在片上 SRAM 中,以便按需解壓縮。這反過(guò)來(lái)又最大限度地減少了訪問(wèn)主存儲(chǔ)器的需要,從而提高了性能并降低了功耗。它還偶然減少了加載重量時(shí)的片上流量。更少的流量爭(zhēng)用意味著更高的吞吐量。

還應(yīng)考慮一個(gè)因素。像大多數(shù)復(fù)雜的應(yīng)用程序一樣,神經(jīng)網(wǎng)絡(luò)依賴于復(fù)雜的庫(kù)。您需要使用專為在微控制器環(huán)境中使用而設(shè)計(jì)的庫(kù),并將編譯器用于您選擇的平臺(tái)。一個(gè)好的起點(diǎn)可能是開源庫(kù),例如TensorFlow Lite,但要充分利用微控制器,就需要專門定制的解決方案。

當(dāng)然,知道你必須做什么并不容易。您現(xiàn)在需要找到一個(gè)能夠簡(jiǎn)化這些操作并提供硬件優(yōu)化庫(kù)的平臺(tái)。

我如何使它成為一個(gè)易于使用的流程?

您想要的是一個(gè)流程,您可以在其中使用您在特定平臺(tái)(例如 TensorFlow)上訓(xùn)練的網(wǎng)絡(luò),并將其直接編譯到您的嵌入式解決方案中——除了撥打一些基本要求外,無(wú)需干預(yù)。當(dāng)然,您還希望該選項(xiàng)能夠進(jìn)一步手動(dòng)優(yōu)化,可能在不同的平面上設(shè)置不同的量化級(jí)別。也許可以嘗試權(quán)重閾值與片上內(nèi)存大小。您需要針對(duì)硬件優(yōu)化的庫(kù)和針對(duì)庫(kù)優(yōu)化的硬件。

CEVA 的CDNN等經(jīng)過(guò)驗(yàn)證的 AI 平臺(tái)旨在提供這種類型的流程。CDNN 為量化和運(yùn)行時(shí)任務(wù)生成提供離線處理器工具集,以及為 CEVA DSP 和客戶用戶硬件加速器定制的運(yùn)行時(shí)庫(kù)。CEVA 的解決方案支持所有流行的 AI 模型格式,包括 TensorFlow Lite、ONNX、Caffe 等。

審核編輯 黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5046

    文章

    18832

    瀏覽量

    298808
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    28924

    瀏覽量

    266298
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式linux開發(fā)的基本步驟有哪些?

    嵌入式Linux開發(fā)是一個(gè)復(fù)雜的過(guò)程,涉及到硬件選擇、操作系統(tǒng)移植、驅(qū)動(dòng)開發(fā)、應(yīng)用程序開發(fā)等多個(gè)方面。以下是嵌入式Linux開發(fā)的基本步驟,以及每個(gè)步驟的說(shuō)明。 硬件選擇 在開始嵌入式
    的頭像 發(fā)表于 09-02 09:11 ?190次閱讀

    C28x嵌入式應(yīng)用程序二進(jìn)制接口

    電子發(fā)燒友網(wǎng)站提供《C28x嵌入式應(yīng)用程序二進(jìn)制接口.pdf》資料免費(fèi)下載
    發(fā)表于 08-31 09:39 ?0次下載
    C28x<b class='flag-5'>嵌入式</b><b class='flag-5'>應(yīng)用程序</b>二進(jìn)制接口

    MSP430嵌入式應(yīng)用程序二進(jìn)制接口

    電子發(fā)燒友網(wǎng)站提供《MSP430嵌入式應(yīng)用程序二進(jìn)制接口.pdf》資料免費(fèi)下載
    發(fā)表于 08-30 11:43 ?0次下載
    MSP430<b class='flag-5'>嵌入式</b><b class='flag-5'>應(yīng)用程序</b>二進(jìn)制接口

    C6000嵌入式應(yīng)用程序二進(jìn)制接口

    電子發(fā)燒友網(wǎng)站提供《C6000嵌入式應(yīng)用程序二進(jìn)制接口.pdf》資料免費(fèi)下載
    發(fā)表于 08-29 14:52 ?0次下載
    C6000<b class='flag-5'>嵌入式</b><b class='flag-5'>應(yīng)用程序</b>二進(jìn)制接口

    嵌入式系統(tǒng)中的實(shí)時(shí)操作系統(tǒng)

    嵌入式RTOS是嵌入式應(yīng)用程序運(yùn)行、相互交互和與外界通信的底層軟件機(jī)制。在本節(jié)中,您將了解嵌入式軟件開發(fā)人員使用哪些流行RTOS以及它們運(yùn)行的嵌入式
    的頭像 發(fā)表于 08-20 11:28 ?280次閱讀

    嵌入式軟件開發(fā)與AI整合

    嵌入式軟件開發(fā)與AI整合是當(dāng)前技術(shù)發(fā)展的重要趨勢(shì)之一。隨著人工智能技術(shù)的快速發(fā)展,嵌入式系統(tǒng)越來(lái)越多地集成了AI算法,以實(shí)現(xiàn)更復(fù)雜的智能功能。以下是關(guān)于
    的頭像 發(fā)表于 07-31 09:25 ?493次閱讀
    <b class='flag-5'>嵌入式</b>軟件開發(fā)與<b class='flag-5'>AI</b>整合

    AI引爆邊緣計(jì)算變革,塑造嵌入式產(chǎn)業(yè)新未來(lái)AI引爆邊緣計(jì)算變革,塑造嵌入式產(chǎn)業(yè)新未來(lái)——2024研華嵌入式

    中國(guó)北京,2024年5月30日?- 2024年研華嵌入式產(chǎn)業(yè)合作伙伴會(huì)議在北京·中關(guān)村皇冠假日酒店成功舉辦,現(xiàn)場(chǎng)參會(huì)嘉賓逾300人。會(huì)議以“AI引爆邊緣計(jì)算變革,塑造嵌入式產(chǎn)業(yè)新未來(lái)”為主題展開
    發(fā)表于 05-31 13:53 ?209次閱讀
    <b class='flag-5'>AI</b>引爆邊緣計(jì)算變革,塑造<b class='flag-5'>嵌入式</b>產(chǎn)業(yè)新未來(lái)<b class='flag-5'>AI</b>引爆邊緣計(jì)算變革,塑造<b class='flag-5'>嵌入式</b>產(chǎn)業(yè)新未來(lái)——2024研華<b class='flag-5'>嵌入式</b>

    提升嵌入式系統(tǒng)可靠性的有效策略

    對(duì)嵌入式工程師來(lái)說(shuō)一個(gè)很大的好處是,我們的IDE和工具鏈可以自動(dòng)產(chǎn)生應(yīng)用程序或內(nèi)存空間校驗(yàn)和(Checksum),從而根據(jù)這個(gè)校驗(yàn)和驗(yàn)證應(yīng)用程序是否完好。有
    發(fā)表于 04-26 14:50 ?307次閱讀
    提升<b class='flag-5'>嵌入式</b>系統(tǒng)可靠性的有效策略

    再談嵌入式實(shí)時(shí)操作系統(tǒng)

    由于嵌入式處理器早期功能單一且運(yùn)算能力不高,嵌入式應(yīng)用已不能滿足各個(gè)領(lǐng)域不斷增長(zhǎng)的需求。嵌入式操作系統(tǒng)應(yīng)運(yùn)而生,嵌入式操作系統(tǒng)可以支持新時(shí)代復(fù)雜、多任務(wù)環(huán)境和功能的
    的頭像 發(fā)表于 04-09 17:27 ?578次閱讀
    再談<b class='flag-5'>嵌入式</b>實(shí)時(shí)操作系統(tǒng)

    【從0開始創(chuàng)建AWTK應(yīng)用程序】編譯應(yīng)用到嵌入式Linux平臺(tái)運(yùn)行

    。搭建Linux平臺(tái)交叉編譯環(huán)境在上一篇文章我們介紹了使用AWTK開發(fā)簡(jiǎn)單的應(yīng)用并在PC上模擬運(yùn)行,本篇文章就來(lái)介紹一下怎么讓應(yīng)用程序運(yùn)行在嵌入式Linux平臺(tái)上。1
    的頭像 發(fā)表于 12-07 12:08 ?536次閱讀
    【從0開始創(chuàng)建AWTK<b class='flag-5'>應(yīng)用程序</b>】編譯應(yīng)用到<b class='flag-5'>嵌入式</b>Linux平臺(tái)運(yùn)行

    嵌入式Linux應(yīng)用程序開發(fā)詳解-第3章

    電子發(fā)燒友網(wǎng)站提供《嵌入式Linux應(yīng)用程序開發(fā)詳解-第3章.pdf》資料免費(fèi)下載
    發(fā)表于 11-16 11:19 ?0次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應(yīng)用程序</b>開發(fā)詳解-第3章

    嵌入式Linux應(yīng)用程序開發(fā)詳解-第2章

    電子發(fā)燒友網(wǎng)站提供《嵌入式Linux應(yīng)用程序開發(fā)詳解-第2章.pdf》資料免費(fèi)下載
    發(fā)表于 11-16 11:18 ?0次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應(yīng)用程序</b>開發(fā)詳解-第2章

    嵌入式Linux應(yīng)用程序開發(fā)詳解-第1章

    電子發(fā)燒友網(wǎng)站提供《嵌入式Linux應(yīng)用程序開發(fā)詳解-第1章.pdf》資料免費(fèi)下載
    發(fā)表于 11-16 11:17 ?0次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應(yīng)用程序</b>開發(fā)詳解-第1章

    Linux系統(tǒng)的嵌入式開發(fā)是什么

    嵌入式開發(fā)聽起來(lái)很高大上,但其實(shí)它就在我們身邊。   嵌入式開發(fā)是指將操作系統(tǒng)、應(yīng)用程序或數(shù)據(jù)存儲(chǔ)在嵌入式設(shè)備中,如手機(jī)、平板電腦、智能家居等。   隨著物聯(lián)網(wǎng)時(shí)代的到來(lái),
    的頭像 發(fā)表于 10-12 15:40 ?1545次閱讀

    什么是嵌入式Linux?

    Linux到底是什么呢? 嵌入式linux 是將日益流行的Linux操作系統(tǒng)進(jìn)行裁剪修改,使之能在嵌入式計(jì)算機(jī)系統(tǒng)上運(yùn)行的一種操作系統(tǒng)。簡(jiǎn)單來(lái)說(shuō),是除了電腦之外可以運(yùn)行程序的設(shè)備,將CPU嵌入
    發(fā)表于 10-11 13:47