在我之前的博客中,我談到了對基于 AI 的界面的需求如何變得幾乎不可避免——并且添加一個(gè)基于 AI 的界面(如 face-id)來授權(quán)對機(jī)器的訪問,乍一看似乎是一個(gè)巨大的飛躍,但實(shí)際上并非如此有你想象的那么困難。有大量可用的 AI 平臺、大量培訓(xùn)選項(xiàng)甚至開源應(yīng)用程序,例如face-id 示例。您可以使用可以在 PC 上運(yùn)行的原型快速啟動(dòng)和測試。
約束
將訓(xùn)練有素的網(wǎng)絡(luò)遷移到您的嵌入式應(yīng)用程序似乎是另一個(gè)巨大的障礙。PC 或云訓(xùn)練的網(wǎng)絡(luò)并沒有針對內(nèi)存使用或功耗進(jìn)行太多優(yōu)化。他們可能會使用浮點(diǎn)數(shù)或雙字進(jìn)行網(wǎng)絡(luò)計(jì)算,并且在處理圖像上的滑動(dòng)窗口時(shí)會嚴(yán)重依賴片外內(nèi)存訪問。對于在插入墻上電源的高性能 PC 上運(yù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ù),不僅會影響權(quán)重的大小,還會影響中間計(jì)算值。僅此一項(xiàng)就可以顯著減少內(nèi)存占用,在大多數(shù)情況下對識別質(zhì)量幾乎沒有明顯影響。
第二個(gè)操作是利用權(quán)重的稀疏性,對準(zhǔn)確性的影響最小。這種做法將利用接近零的權(quán)重,并將它們四舍五入為零,同時(shí)密切跟蹤準(zhǔn)確性影響。權(quán)重用于乘以部分和,當(dāng)其中一個(gè)因素為零時(shí),這是沒有意義的練習(xí),因此無需執(zhí)行操作。
在實(shí)際實(shí)現(xiàn)中,圖像是增量處理的,因此當(dāng)計(jì)算窗口在圖像上移動(dòng)時(shí)必須更新權(quán)重。這可以帶來很多更新和大量流量。通過強(qiáng)制大部分權(quán)重為零,可以壓縮權(quán)重?cái)?shù)組,從而可以將所有或大部分?jǐn)?shù)組存儲在片上 SRAM 中,以便按需解壓縮。這反過來又最大限度地減少了訪問主存儲器的需要,從而提高了性能并降低了功耗。它還偶然減少了加載重量時(shí)的片上流量。更少的流量爭用意味著更高的吞吐量。
還應(yīng)考慮一個(gè)因素。像大多數(shù)復(fù)雜的應(yīng)用程序一樣,神經(jīng)網(wǎng)絡(luò)依賴于復(fù)雜的庫。您需要使用專為在微控制器環(huán)境中使用而設(shè)計(jì)的庫,并將編譯器用于您選擇的平臺。一個(gè)好的起點(diǎn)可能是開源庫,例如TensorFlow Lite,但要充分利用微控制器,就需要專門定制的解決方案。
當(dāng)然,知道你必須做什么并不容易。您現(xiàn)在需要找到一個(gè)能夠簡化這些操作并提供硬件優(yōu)化庫的平臺。
我如何使它成為一個(gè)易于使用的流程?
您想要的是一個(gè)流程,您可以在其中使用您在特定平臺(例如 TensorFlow)上訓(xùn)練的網(wǎng)絡(luò),并將其直接編譯到您的嵌入式解決方案中——除了撥打一些基本要求外,無需干預(yù)。當(dāng)然,您還希望該選項(xiàng)能夠進(jìn)一步手動(dòng)優(yōu)化,可能在不同的平面上設(shè)置不同的量化級別。也許可以嘗試權(quán)重閾值與片上內(nèi)存大小。您需要針對硬件優(yōu)化的庫和針對庫優(yōu)化的硬件。
CEVA 的CDNN等經(jīng)過驗(yàn)證的 AI 平臺旨在提供這種類型的流程。CDNN 為量化和運(yùn)行時(shí)任務(wù)生成提供離線處理器工具集,以及為 CEVA DSP 和客戶用戶硬件加速器定制的運(yùn)行時(shí)庫。CEVA 的解決方案支持所有流行的 AI 模型格式,包括 TensorFlow Lite、ONNX、Caffe 等。
審核編輯 黃昊宇
-
嵌入式
+關(guān)注
關(guān)注
5088文章
19159瀏覽量
306509 -
AI
+關(guān)注
關(guān)注
87文章
31316瀏覽量
269659
發(fā)布評論請先 登錄
相關(guān)推薦
評論