增加諸如人臉識別這樣基于人工智能的界面來進行機器的訪問授權——這乍一看似乎是一個巨大的飛躍,但它并不像您想象得那么困難。有大量的網絡平臺可用,有很多訓練選項,甚至還有開源應用程序,比如前面提到的人臉識別的例子。您可以用能在您的個人電腦上運行的原型程序來快速地進行測試。
限制因素
在您的嵌入式應用程序中放入一個經過訓練的網絡似乎是另一個巨大的困難。個人電腦(或云)訓練的網絡不會在存儲容量或功耗方面優化太多。它們可能使用浮點或雙字來進行網絡計算,并且在處理圖像上的滑動窗口時,它們將大幅依賴于片外存儲器訪問。這對高性能個人電腦上運行的原型來說不成問題,但您需要在終端應用程序中省著點用,以確保不影響性能。
優化要領
優化中的一個關鍵步驟叫做量化。將權重從浮點切換到定點,并減小定點的大小,例如從32位浮點減到8位整數,不僅影響權重的大小,而且影響中間計算值的大小。僅此一項就可以顯著減少內存占用,并且在大多數情況下對識別質量的影響很小。
第二項操作是利用權重中的稀疏性,同時盡可能地減小對精確度的影響。這種做法將利用那些接近于零的權重,并將它們舍入到零,同時密切跟蹤這對精確度的影響。權重用于乘以部分和,如果其中有因數為零,就將變成無用功,因此也就沒有必要執行該操作了。
在實際的實現過程中,圖像被增量處理,因此當計算窗口在圖像上移動時,必須更新權重。這會帶來大量的更新以及大量的數據流量。通過將大部分權重值強制設為零,就可以壓縮權重數組,從而使數組的全部或大部分存儲在片內SRAM中,以便按需解壓縮。因此,最大限度地減少了對主存的需求,從而提高了性能并降低了功耗。在加載權重時,它還附帶地減少了片內通信量。更少的流量占用則意味著更高的吞吐量。
此外還要考慮一個因素。像大多數復雜的應用一樣,神經網絡依賴于精密的數據庫。您需要使用專為微控制器環境設計的數據庫,和您所選擇的平臺的編譯器。選擇TensorFlow Lite等開源庫便是一個不錯的著手點,但是為了充分利用微控制器,還需要專門的定制解決方案。
當然,想要弄清自己必須要干什么并不容易。而您現在要做的,就是找到平臺來簡化這些操作并提供經過硬件優化的數據庫。
我如何使這個流程變得簡單易用?
您需要的是一個可以在特定平臺(例如TensorFlow)上承載訓練過的網絡,并且將該網絡直接編譯到您的嵌入式解決方案中的流程。除了加入一些基本要求之外,無需額外干預。當然,您也希望能夠進一步手動優化該選項,可以是在不同的平面上設置不同的量化級別,也可以是在權重閾值與片內存儲器容量方面多加嘗試。此外,您還希望根據硬件優化數據庫,以及根據數據庫優化硬件。
原文標題:掌握嵌入式人工智能:根據您的設備進行優化
文章出處:【微信公眾號:CEVA】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
人工智能
+關注
關注
1792文章
47354瀏覽量
238818 -
人臉識別
+關注
關注
76文章
4012瀏覽量
81978
原文標題:掌握嵌入式人工智能:根據您的設備進行優化
文章出處:【微信號:CEVA-IP,微信公眾號:CEVA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論