24小時聯系電話:18217114652、13661815404
中文
技術專題
針對嵌入式應用優化AI
基于AI的界面的需求-并且添加像face-id這樣的基于AI的界面來授權對機器的訪問乍看起來似乎是一個巨大的飛躍,但這并沒有就像您想的那樣困難。有大量可用的AI平臺,大量的培訓選項甚至是開源應用程序,例如face-id example。使用可以在PC上運行的原型,您可以快速啟動并進行測試。
約束條件
將訓練有素的網絡遷移到嵌入式應用程序似乎是另一個巨大的障礙。受PC或云訓練的網絡在內存使用或功耗方面沒有進行太多優化。他們可能會使用浮點數或雙字進行網絡計算,并且在處理圖像上的滑動窗口時會嚴重依賴片外內存訪問。對于在插入墻壁電源的高性能PC上運行的原型而言,這不是要擔心的問題,但是您需要在最終應用程序中更加節儉,并且不影響性能。
優化的要點
優化的一個關鍵步驟稱為量化。將權重從浮點切換到固定點并減小固定點大?。ɡ?,從32位浮點更改為8位整數)不僅會影響權重的大小,還會影響中間計算值。僅此一項就可以顯著減少內存占用,在大多數情況下,對識別質量的影響很小。
第二種操作是在最小的精度影響下利用權重的稀疏性。這種做法將利用權重接近零的優勢,并將其舍入為零,同時密切關注準確性的影響。權重用于乘以部分和,當因素之一為零時,這是無意義的練習,因此無需執行該運算。
在實際的實現中,圖像是增量處理的,因此當計算窗口在圖像上移動時,權重必須更新。那會帶來很多更新和大量流量。通過將大部分權重強制為零,可以壓縮權重數組,從而可以將所有或大部分數組存儲在片上SRAM中,以根據需要進行解壓縮。從而最大程度地減少了訪問主存儲器的需求,從而提高了性能并降低了功耗。加載砝碼時,它還附帶減少了片上流量。較少的流量爭用意味著較高的吞吐量。
應該考慮另外一個因素。像大多數復雜的應用程序一樣,神經網絡依賴于復雜的庫。您需要使用一個設計用于微控制器環境的庫,并將其編譯到您選擇的平臺。一個很好的起點可能是一個開源庫,例如TensorFlow Lite,但是為了充分利用微控制器,將需要專用的定制解決方案。
當然,知道您必須做什么并不容易。現在,您需要找到一個平臺,以簡化這些操作并提供硬件優化的庫。
如何使它易于使用?
您需要的是一個流程,您可以在特定平臺(例如TensorFlow)上使用經過培訓的網絡,并將其直接編譯到嵌入式解決方案中,而無需輸入一些基本要求。當然,您還希望該選項能夠進一步手動優化,也許在不同平面中設置不同的量化級別。也許嘗試權重閾值與片上存儲器大小的比較。并且您想要針對硬件進行優化的庫以及針對庫進行優化的硬件。
經過驗證的AI平臺(如CEVA的CDNN)旨在提供這種類型的流程。CDNN提供了用于量化和運行時任務生成的離線處理器工具集,以及為CEVA DSP和客戶用戶的硬件加速器量身定制的運行時庫。CEVA的解決方案支持所有流行的AI模型格式,包括TensorFlow Lite,ONNX,Caffe等。