[筆記] AI 的研究心得:TensorFlow, Pytorch, Lite ...

        最近在閱讀有關 AI 領域的知識,常常聽到 TensorFlow 與 Pytorch 等名詞,還有 TensorFlow LiteH5PB模型OpenVINO...,底下我記錄下學習的心得。首先,我們要將 AI 區分成 前置作業階段執行階段,前者主要工作為建立模型收集資料訓練...,如下圖所示,這個階段需要專業的工程人員,花費時間訓練並建立出最終的模型參數。後者則為執行過程,在什麼平台上面執行 AI 的判斷。

圖一:建立模型階段

        在建立模型階段,工程師經常用到的語法就是 TensorFlow 或 Pytorch,將自己的演算法透過上述的程式語言不斷地訓練資料,來獲得最終的模型參數,而模型的優劣就是由這套演算法的好壞所決定。訓練過程,有幾項參數將與最終的模型參數有關,比如精密度錯誤率...,精密度高且錯誤率低可能就要花費更多時間,精密度低且錯誤率高就可以節省一些運算空間....等等的 trade-off。

        對於一般人而言,想要建立模型,當然不是一件容易的事。因此,Google推出一套 Teachable Machine https://teachablemachine.withgoogle.com/ 讓一般人能快速建模,體驗一製作 AI 模型的過程。產生的模型格式,有 H5 (Keras 產出) 或 PB (TensorFlow 產出) 型態,根據夜市小霸王的說法[1],PB 格式的效能比載入 H5 的運算效能高。接下來就是如何依照這個模型來執行判斷了。

        在執行判斷的階段,拿到訓練後的模型後,我們要在什麼平台上面執行?可以是效能的 PC,可以是 NVIDIA 平台,也可以是 Intel OpenVINO 平台,或者在嵌入式的 MCU 上面執行。如果是在 Arduino 或者 ESP32 MCU 上面執行 AI 模型,可以參考 TensorFlow Lite for Microcollectors 連結,由於它是開源的程式碼,所以我們可以自行移植到其他的 MCU 平台。在 MCU 上面執行,當然就會犧牲一些準確率與模型的精密度。像瑞昱HUB 8735 模組,裡面就內建一套 RTL 自己的 AI 模型,可以做到物件辨識、人臉辨識、 聲音種類辨識...等應用。不過,對於複雜的應用領域,我們會在效能 PC 或專用的平台上執行 AI 判斷。

總結,複雜性高的辨識就需要算力越高的平台,比如 NVIDA 或 INTEL 的高算力系統,而在 MCU 上面的辨識只能處理較單純的識別,需要建特別的模型 (TensorFlow Lite for MCU) 來滿足特定的 MCU,畢竟跟有限的算力與資源有關。另外,像奇景光電的HX6537-A 模組主打低功耗的 AI 辨識,屬於 edge 的前沿初級運算,替主要算力節省一些電力。經過這樣的整理後,越來越清楚 AI 辨識的大架構了。

參考資料

留言

此網誌的熱門文章

[筆記] Raspberry Pi 樹莓派的軟體開發

[應用] 在 ESP32 Audio 開發板的 VoIP 範例

[筆記] ESP32 在 VS Code 開發環境的編譯與除錯

[筆記] Visual Studio 遠端偵錯的設定步驟

[筆記] Android APP 藍芽範例說明 -- BluetoothChat

[應用] 藍芽 BLE client/server 架構:BLE remote controller

[模組] LD3320 離線語音辨識晶片與 ESP32 無線傳輸