Maker 玩 AI 系列(四): AMB82 mini – 即時串流 Edge AI 開發板

Maker 玩 AI 系列(四): AMB82 mini - 即時串流 Edge AI 開發板

一、Ameba 阿米巴

瑞昱當家的 Ameba 系列物聯網開發板,最早可以追溯到 2016 年推出的 RTL8195AM 開發板,代號為 AMB01。在那個 Arduino 相容開發板百家爭鳴的時期,說實在話筆者對於 Realtek 的評價並不能稱得上滿意,因為那時候 Ameba 對於 Arduino 硬體 HAL 層寫得並不是很好,造成載入第三方的 library 時會有相容性的問題。

不過物換星移,時至今日,許多當初製造開發板的團隊已經撒手不管 Maker 圈的開發板了,反倒是 Realtek 持續推出新作品。不得不感慨,經營市場就是在比氣長,誰能撐得久撐得長遠,最後終將獲得市場的擁抱。٩(๑•̀ω•́๑)۶

話講遠了,拉回到我們今天的主角 AMB82 mini,核心SoC 型號為 RTL8735 ,工作頻率高達 500MHz,內建獨立 ISP (image Signal Processor),可以做到 H.264 與 H.265 編碼以及 HDR 影像處理等,明顯就是特別針對影像處理強化的物聯網晶片。

Realtek 出品的開發板自然要囊括雙頻 Wi-Fi 與 BLE 5.1等聯網功能,並且可使用板上的 ipex 4 RF 連接器將天線給引出。同時官方也宣稱他的 AI 效能可以達到 0.384 TOPS,即便是 INT 的整數運算所得出來的數字,但也已經是相當優異了,尤其是以這個 1,000 元以內價位的邊緣裝置來說,更是難能可貴。

二、怎麼玩?

既然是物聯網開發板,Maker 可以使用 Arduino IDE 進行 AMB82 mini 開發,對於有意要做產品的族群瑞昱也有標準 SDK 可以提供給進階開發者使用。在 Arduino 開發的方式與其他開發板無異,將開發板來源檔案加入後即可透過開發板管理員進行安裝。

筆者的測試環境為 Arduino IDE 2.0.4 版本,並使用 ambpro2_arduino 的開發者 4.0.3-build20230320 版本,讀者可以自行斟酌使用穩定版本或是開發者版本來安裝 Arduino 開發板支援。

但以 github repo 的更新速度來說每週都會是出新 build 版本,看來 Realtek 團隊對於 AMB82 mini 也是投注了不少資源深耕這一塊的 Maker 市場。此外 AMB82 mini 將 16MB 的 Flash 拆分成三個 Section 區塊,分別存放 Arduino 程式碼、影像處理器(ISP) Binary Code 與神經網路(NN) Binary Code,若沒有用到影像處理器或是神經網路運算時,可以不需要上傳對應的 Binary Code 來縮短燒錄的時間。

開發板上有兩個 micro USB port,一個為 RTL8735 原生 USB,另一個則是連接到 CH340 橋接 IC 做為燒錄使用。首次上電將 USB 連接到 CH340 port,會看到板上三顆 LED 同時亮起,除了最右側的 power LED 為電源指示燈,其於兩者接是可以透過程式控制的使用者自定義 LED。

三顆同時會亮應該是出廠時所運行的測試程式所致。上傳程式時務必先按壓 upload button 不放,再按壓 Reset Button,使 RTL8735 進入到燒錄模式,才能順利更新韌體。

這點在阿米巴系列開發板經常為人所詬病,對於新手較不友善,希望日後可以有機會藉由 IC 或是電路的設計將其改為自動上傳。在燒錄完 Blink 範例程式後,最左側的藍色 LED 即會以一明一滅的方式顯示,代表已經順利運行新的程式碼了!

Maker 玩 AI 系列(四): AMB82 mini - 即時串流 Edge AI 開發板
AMB82 mini 板上介面說明

即便 AMB82 mini 使用了 MIPI 介面的 camera 佔據了不少 IO 腳位,但其開發板上的排針引腳仍有豐富的介面可以使用,包含三組 UART、兩組 SPI、兩組 I2C、5 個 ADC(另有 3 個 ADC 未被拉至排針)等,同時幾乎所有腳位皆支援外部中斷,並且有 8 個 PWM 輸出,相較於其他有 camera 的開發板, AMB82 mini 在 IO 介面上更有優勢。

隨開發板也附帶一顆 Full HD 的鏡頭模組,可視角度 FOV 達 130 度,可直接用於移動載具做視覺循線或是物件偵測等應用。

Maker 玩 AI 系列(四): AMB82 mini - 即時串流 Edge AI 開發板
AMB82 mini pinouts 引腳圖 (圖片來源:amebaiot)

三、AI 物件偵測

AMB82 mini 官方的 Arduino 範例中就提供了人臉檢測(Face Detection)、人臉識別(Face Recognition)、物件偵測(Object Detection)等神經網路模型範例,並將預訓練模型也包進 Arduino package 中,使用者可以直接開啟範例做使用,體驗 RTL8735 神經網路的運算能力。

以物件偵測為例,官方提供兩個範例程式 ObjectDetectionLoop 與 ObjectDetectionCallback ,兩者功能相同差別僅在於程式碼的架構,一個為輪詢(Polling)另一個回呼(Callback),筆者使用 Callback 的範例測試,一來較有效率二來程式碼也較具彈性。AMB82 mini 提供 YOLOv4-Tiny 預訓練模型,可以做到 COCO dataset 的 80 種物件類別的偵測。

範例程式碼會產生兩個影像串流,一個做 RTSP,另一個則將影像丟進神經網路做運算,運算的結果將繪製成 OSD(on-screen display) 疊在第一個影像隨著 RTSP 串流出去。輸出的結果可以在電腦端使用 VLC 等播放軟體,開啟 AMB82 mini 的 RTSP 串流即可看到 YOLOv4-tiny 神經網路運算結果。

Maker 玩 AI 系列(四): AMB82 mini - 即時串流 Edge AI 開發板
AMB82 mini 運行 YOLOv4-Tiny 物件偵測

筆者為了計算 FPS 在 callback 函式內埋了程式碼計算時間,將神經網路的影像格式改為 416×416 (符合 YOLOv4-Tiny 輸入大小),並且把 RTSP 串流輸出從 FHD 降為 HD(1280×720),實測結果 YOLOv4-Tiny 運算的效能約達 6~7 FPS,辨識度也不差,整體算是令人滿意的!(。•ㅅ•。)♡

確實在當前 MCU 級距的開發板已無人能出其右,要應用在非即時的智慧場域也算是勘用了!

由於是對著螢幕近距離拍攝,可以看到鏡頭變形較明顯,且無法順利對焦,主要物體依然能夠偵測,若想要細部調整辨識度可以呼叫 ObjDet.configThreshold(float confidence_threshold, float nms_threshold) 進行設定,預設情況神經網路信心(confidence)門檻值為 0.5, NMS(Non-Maximal Suppression) 門檻值為 0.3。

對著 AMB82 mini 的 Camera 播放影片進行實測

四、小結-Arduino AI Camera 的王者

目前市場上能夠使用 Arduino 進行開發並且搭配攝影鏡頭開發板並不多見,其中以 ESP32-CAM 因為價錢低廉能見度最高,但將兩者相比, AMB82 mini 在影像串流與神經網路應用卻是技高一籌,不論是做到 RTSP 即時雙軌串流,或是神經網路的人臉識別與物件偵測都能有非凡的效能。

高效能的代價自然是開發板的整體成本較高,但對於想要做到神經網路運算又需要控制預算省下高階 MPU 開發板的群眾,肯定是非常有吸引力的!AMB82 mini 這塊 AI Camera 開發板不僅是面對 Maker 社群,對於有心想要使用其製作商業產品的團隊,也有提供郵票貼模組便利開發並縮短開發時程。

此外原廠對於技術支援也不馬虎,除了有官方討論區能和全球開發者交流,也很用心的經營 Ameba 社團,藉由社群媒體的即時性跟開發者互動。筆者倒是相當期待 AMB82 mini 能夠支援更多不同類型的神經網路功能,屆時有機會再追加一篇客製化模型測試與各位分享。