文章

顯示從 1月, 2023 起發佈的文章

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

圖片
        最近在閱讀有關 AI 領域的知識,常常聽到 TensorFlow 與 Pytorch 等名詞,還有 TensorFlow Lite 、 H5 、 PB模型 、 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 模型,可以做到 物件辨識、人臉辨識、 聲音種

[筆記] 以 STM32 為核心的四軸無人機套件

圖片
        最近買一套無人機套件,並研究其原理。套件包含一個遙控器,以及無人機主體,如下圖所示。系統架構與先前的平衡車系統類似,MCU 為控制與運算的核心,周邊搭配一顆 MPU6050 重力加速計,用來偵測系統的軸向變化,再來就是控制馬達驅動的模組。從系統原理來看,無人機比平衡車的運算更為複雜,建議可以先從平衡車的系統開始學習,然後再來研究無人機的系統。 圖一:無人機的套件         遙控器的電路,由 STM32F103 為核心,搭配 NRF24L01 做為無線傳輸的模組,以及周邊的數個按鈕和兩顆搖桿頭。飛行器的電路,同樣以 STM32F103 為控制核心,搭配 NRF24L01 透過 SPI 介面控制,一顆 MPU6050 加速度計透過 I2C 介面控制,然後利用 PWM 訊號控制四軸的馬達。另外,STM32 的 USB 介面可以連接到電腦,電腦端會顯示一個 HID 裝置。這套件的資料中,提供 PC 上面的監控軟體,如下圖所示,能顯示目前飛行器的三軸情況,以及遙控器傳給飛行器的數值。不得不說這整套系統,從硬體到韌體,再到電腦端的監控軟體都非常專業,適合想進入這領域的人員好好學習。 圖二:PC 端的監控軟體         再來,韌體的開發,該套件提供完整的原始碼,遙控器和飛行器都是用 KEIL 工具來開發和編譯程式碼。要留意的是有的套件上面焊的是 F103C 6 ,有的是 F103C 8 ,這兩者晶片內部的 Flash 配置不同,前者是 Low Density 核心,後者是 Medium Density 核心,因此在編譯程式碼時要注意。         無人機的操作比起平衡車更需要安全性,畢竟平衡車是在二軸平面上運行,但是無人機是三軸空間的運行,危險性更高。當遙控器與飛行器主體建立連線後,飛行器的螺旋槳還處在鎖定狀態,不會旋轉。 解鎖的方式 需要遙控器的油門,油門壓到最低,再將油門加到最高,最後再將油門壓到最低後,螺旋槳便會開始轉動,此時慢慢增加油門,飛行器就會慢慢上升。