2020年10月5日 星期一

AI邊緣運算實作: TensorFlow Lite for MCU




關於AI邊緣運算


隨著物聯網與人工智慧發展,工作負載開始由雲端移轉至終端,AI也隨之進入到嵌入式系統及物聯網終端裝置中。在終端或所謂邊緣裝置這類的超低功耗微處理器上所實現的深度學習,被稱呼為微型深度學習。然而在MCU本身運算速度就不快,記憶體空間也有限的情況下,AI模型也不能太大,因此要能確保AI 效能,同時兼顧低功耗、成本與縮短開發時間,都是研發人員所必須面對的挑戰。

什麼是TensorFlow Lite

TensorFlow Lite for MCU正是專為邊緣裝置設計的TensorFlow模型預測框架,是TensorFlow的精簡版本,讓開發者可以在物聯網與嵌入式裝置中部署微型機器學習模型。

AI模型佈署於微控制器,需要那些知識 ?

首先,必須先知道TensorFlow Lite for MCU 在實作上會涉及Deep Learning 觀念及MCU開發技術,然而這是兩個截然不同的技術領域的人, 故要能有效整合出好的AI系統,必須能同時理解這兩邊的技術。簡而言之,你會需要對於Deep Learning 有一定的概念、還要有模型優化(如Quantization)、TensorFlow Lite的框架以及MCU程式開發的相關知識。技術不能說很難,但對於初學者,沒有人引導,是有困難度的,因為開發環境包含AI環境與MCU的BSP環境都不太熟悉的情況下,產生的錯誤常常搞不清楚問題在那 。

在板子跑AI和我在電腦跑AI有何差別?

在電腦上跑AI,對於輸入資料多半是.csv或圖片,以檔案方式存在。 然而在邊緣運算上, 輸入的資料通常是來自硬體的感測器,因此要能正確且即時的對資料預處理並且轉換成模型所須要的x輸入型狀(x input shape)才能代入模型。但資料抓取上要如何切成一個剛好完整的x 來進行推論呢? 例如聲音訊號是連續波, 不可能每次都剛好切出一段完整的聲音丟入模型,而得到很好的正確率。還有,像是感測器訊號也可能有雜訊產生,也會造成模型誤判。所以在系統上,需要有一個處理的機制來讓我們的AI系統達到穏定。

在板子上讀取訊號當作x

OK 先從簡單的開始, 要先去觀察感測器看到什麼. 也就是x, 不對的x, 再好的模型也無法得到好的結果.

在Sparkfun edge board 讀取G-Sensor X, Y,Z 的變化


在Sparkfun edge board 讀取Microphone 左右聲道變化


Tiny DL Demo
底下Demo 幾個AI邊緣運算分別在圖像、聲音、感測訊號的應用

語音識別


姿態識別
                          

人臉偵測
 
在Sparkfun edge board 讀取Camera的畫面




References:

https://bit.ly/3j2fIIt