AI 教學系列-實測 UP Squared Pro 7000 Edge 製作 AI 專案

AI 教學系列-實測 UP Squared Pro 7000 Edge 製作 AI 專案

一、前言

在製作 AI 邊緣運算專案,對於單板電腦的選擇中,大家第一個想到的不外乎就是最為出名且屹立不搖的 Raspberry Pi。或是想到 AI 就會下意識聯想到的 NVIDIA Jetson Series。但這兩項產品皆屬於 ARM 架構,不同於一般的 x86 架構,對於工程師來說使用不同的平台做開發,早已司空見慣。可是對於習慣在筆電或桌機運行 Windows 的使用者來說,轉換上有些難度。

以一般的初學者為例,ARM 架構的電腦大多都是運行 Linux 系統,光是要熟悉新系統的操作可能就得花上一段時間,更不用提安裝一些套件或軟體上,會出現不相容的情況,只能多 Google 或是詢問 ChatGPT,並期望下完指令後,終端機視窗會回應我們 success 的訊息,而不是一堆看不懂問題在哪的紅字。

換句話說,若是手上的單板電腦也是 x86 架構,最好還能裝上 Windows 系統,問題就可以大幅下降了對吧?

沒有錯,其實這類型的單板電腦也不少,你可以想像自己的桌機縮小到一個便當盒的大小,同樣是 Intel 的 CPU,裡面可能也裝載著Windows 系統,接上螢幕、電源、網路與鍵盤滑鼠後,熟悉的感覺就跟使用自己的電腦沒有什麼差別,在自己電腦上測試成功的程式,轉移到這個便當盒內,同樣也能執行,有夠方便。

隨著去年 OpenVINO 2022.1這個超棒版本的出現,大大降低了使用 Intel 執行 AI 推論的部屬與操作時間,除了使用上更為親民,效果也異常的優秀。

小編有幸借到研揚UP Squared Pro 7000 Edge 來進行實測,測試的重點主要會放在製作一台簡單的模型自駕車為主,運用 YOLOv8 Instance segmentation 的模型,來分割攝影機拍攝到的畫面,找到道路上的一些特徵,作為自駕車行進方向的依據。過程中會透過OpenVINO 加速後,加強模型推論的效率,讓自駕車運行得更順暢。

AI 教學系列-實測 UP Squared Pro 7000 Edge 製作 AI 專案
對圖片進行實例分割

二、硬體介紹

UP Squared Pro 7000 Edge 使用的 Intel 處理器採用 Alder Lake-N 系列,外觀上有很大一片的散熱片,除了最高可搭載 64G 的 EMMC、16GB 的記憶體外,使用介面應有盡有,電源需求是 35W。

AI 教學系列-實測 UP Squared Pro 7000 Edge 製作 AI 專案
圖片取自AAEON官網

這項產品共有四個規格可選,小編借用到的是四個規格中最高的 Intel® Core™ i3-N305。借來時裡面已經裝好了 Windows 10 的作業系統,若是習慣使用 Linux 的玩家,它也支援 Ubuntu 22.04 LTS 的版本,可以自行安裝試看看。

AI 教學系列-實測 UP Squared Pro 7000 Edge 製作 AI 專案
圖片取自AAEON官網

三、模型效能評估

開機後二話不說直接環境安裝起來,除了怕不小心裝壞樂極生悲的必備工具虛擬環境,還有本次的主角 YOLOv8、OpenVINO 與OpenVINO Notebooks。在 OpenVINO Notebooks 提供的範例文件中,正好有 YOLOv8 的範例程式,提供 OpenVINO 相關的IR轉換程式與測試程式碼可以使用。

於是小編立馬標註了一份簡易的資料集,並照著 YOLOv8 作者提供的程式碼訓練了一個自己的 YOLOv8n-seg 模型,主要用於分割道路上黃色線的部份。

AI 教學系列-實測 UP Squared Pro 7000 Edge 製作 AI 專案
對圖片進行標註

隨後將模型放入 OpenVINO Notebooks 提供的「230-yolov8-optimization.ipynb」中,首先執行尚未做 IR 轉換的 Pytorch 模型,就下圖執行結果資訊來看,整體 FPS 大約是落在「3.33」左右。

Speed: 2.0ms preprocess, 273.1ms inference, 24.9ms postprocess per image at shape (1, 3, 640, 640)

AI 教學系列-實測 UP Squared Pro 7000 Edge 製作 AI 專案
Pytorch模型推論結果

接著我們執行 OpenVINO IR 轉換,在調整精度的部份,分別使用維持在 FP32 的精度與INT8的精度,共兩種模型做比較。並使用OpenVINO 的 Benchmark Python Tool,為這兩個模型做效能評估,device的部份依舊單純使用「CPU」

依照下圖的結果所示,透過 OpenVINO 轉換成 IR 模型,在 FP32 的經度下 FPS 加速到了「9.76」

AI 教學系列-實測 UP Squared Pro 7000 Edge 製作 AI 專案
IR-FP32 模型推論結果

透過 OpenVINO 轉換成 IR 模型在 INT8 的經度下 FPS 更是加速到了「16.57」

AI 教學系列-實測 UP Squared Pro 7000 Edge 製作 AI 專案
IR-INT8模型推論結果

使用測試集分別對兩個模型進行準確率推論,測試結果圖如下:

AI 教學系列-實測 UP Squared Pro 7000 Edge 製作 AI 專案
IR-FP32與IR-INT8模型推論結果

四、實際執行專案

儘管使用OpenVINO轉換成精度為INT8的IR模型,推論速度已提升好幾倍,但使用在自動駕駛上,接不接近實時性還是相當重要。為了再加速推論速度,我們將模型輸入資料大小從「640」轉換為「320」,通過減少資料輸入大小換取更快的處理速度,最終調整後的FPS達到「64.54」。儘管小編覺得這個數字不可思議,反覆測試多次,數值都是維持在6x,姑且就信它了。

IR-FP32模型推論結果

推論速度達標後,小編隨手拿了一個我們架上的移動平台、WebCam 還有滿足供電需求的鋰電池,並將它們裝在一起。

依照一開始的規劃,透過實例分割切出影像中的黃線,並將黃線的位子轉換成馬達的移動控制。實際執行後如下圖所示:

透過遠端連線擷取攝影機拍攝的推論畫面,如下圖所示,FPS 下降也是合情合理,畢竟多了不少步驟,不像執行 benchmark_app 那麼單純,但執行起來還是不錯的。

五、結論

UP Squared Pro 7000 Edge 做為一個邊緣運算裝置,用來製作 AI 相關主題可說是相當不錯,除了可以將自己電腦上的專案無痛搬過來之外,OpenVINO 也提供了不少優勢。有機會的話小編或許會嘗試其他規格,並轉換成 Linux 系統後將 ROS2 弄上去看看,導航之餘也加入影像辨識,期待那天到來。