|

【Maker 玩 AI】Orange Pi 5 Plus - 支援深度學習的 8K 串流機

   

作者:Felix

Orange Pi 5 Plus

在樹莓派引領單板電腦崛起之時,市場上充斥不少與樹莓派體積相同的類似產品,來自於深圳的 Orange Pi 團隊便是其中之一,2005 年迄今已將近十年仍不斷推出新的開放硬體,而 Orange Pi 5 Plus (以下簡稱 OPi 5+)則是其最新世代的產品。

 

Orange Pi 5 Plus 外觀(圖片來源:Orange Pi

OPi 5+ 的 SoC 為 Rockchip RK3588 八核心大小核(Cortex-A76+Cortex-A55)架構的 64-bit 處理器, 時脈達 2.4GHz 並帶有 Mali-G610 GPU,除此之外的亮點還囊括了一個 6 TOPS 算力的 NPU(Neural Processing Unit),支援 TensorFlow、PyTorch 等常見框架轉換,使其能夠作為處理 AI 影像的邊緣裝置。開發板上的周邊也相當豐富,包含 2 Ports 2.5Gb Ethernet、3 Ports HDMI (2out + 1in)、5 Ports USB、 M.2 E-Key 等高速介面。從硬體帳面數據看來相較數莓派而言可說是全面性的輾壓,但實際使用如何,一起往下看看!

 

Orange Pi 5 Plus 周邊介面(圖片來源:Orange Pi

怎麼玩?

OPi 5+ 支援多種作業系統,包含 Ubuntu、Debian、Android 與團隊特製的 Orange Pi OS 等, 各位可以自行挑選喜歡的 image 映像檔下載後燒錄到 SD Card 啟動。筆者這裡選擇相容性較好的 Ubuntu ,同時得利於 Open Source 的優勢,安裝的是非官方的 Ubuntu 22.04 社群版本。燒錄完 SD Card 放入 OPi 5+ 再接上螢幕鍵盤網路線等,上電後後經過初始化設定即可以看到 GNOME 的桌面介面以及那隻可愛的幸運水母 (Jammy Jellyfish)。

就如同樹莓派一樣,當作業系統安裝完成後就能夠當作一般個人電腦使用,或是做為多媒體應用甚至是搭載到移動載具上都行。由於使用的是 Ubuntu 作業系統,軟體套件支援性也算是相當豐富,雖不及樹莓派的一用性與擴充。筆者也實際使用 Chromium 瀏覽器開啟 YouTube 4K 串流進行測試,順暢度可以說是明顯比樹莓派要來得好上許多,也沒有任何影格丟失(frame drop)的現象!

Orange Pi 5 Plus 播放 4K 影片串流數據統計

神經網路運算單元 NPU

憑藉著 RK3588 處理器本身就的強大效能,若使用 OPi 5+ 若依然只是做 CPU 運算就稍微可惜些,筆者本篇的最主要目的就是要體驗 Rockchip 的 NPU 執行 AI 應用的效能如何。官方在 github 上有提供對應 RK3588 NPU 的 Library 與範例程式 rknpu2 可以直接在 OPi 5+ 安裝並呼叫 NPU 執行,以下記錄安裝過程供各位參考。由於範例程式為 C++ 語言需要進行編譯,先執行系統更新並安裝必要套件:


sudo apt-get update
sudo apt-get upgrade
sudo apt-get install gcc cmake git build-essential

從 github 下載 Repo:


git clone <https://github.com/rockchip-linux/rknpu2.git>
cd rknpu2/

範例程式包含 API 的使用與 mobilenet 及 YOLOv5,選擇 YOLOv5 範例進行編譯:


cd examples/rknn_yolov5_demo
./build-linux_RK3588.sh

執行範例,帶入官方預訓練的 YOLOv5 模型檔 “yolov5s-640-640.rknn” 與推論圖片 “bus.jpg”:


cd install/rknn_yolov5_demo_Linux
./rknn_yolov5_demo ./model/RK3588/yolov5s-640-640.rknn ./model/bus.jpg

完成後會產生輸出檔案 “out.jpg”,開啟後看到如下圖碩,主要物件接有被偵測並標記出來:

OPi5+ 執行 YOLOv5 圖片推論結果

若是第一次執行系統可能沒有安裝 RKNN 的 runtime library,會出現找不到 .so 動態連結 Library 導致執行失敗,可以將此檔案庫提供的 library 複製到系統路徑:


sudo cp lib* /usr/lib/

YOLOv5 即時影像推論

官方的範例並沒有提供從 Webcam 擷取影像進行推論的範例,但吾人可以參考社群上這一篇教學的內容進行實作。準備好一個 UVC Webcam 插上 OPi 5+ 的 USB 孔,輸入指令安裝 openCV 相依套件:


sudo apt-get install libopencv-dev python3-opencv

移動到 rknpu2 YOLOv5 範例的路徑:


cd ~/rknpu2/examples/rknn_yolov5_demo

下載社群 Maker 提供的 CMakeList.txt 並複製到此目錄下;下載社群 Maker 提供的 main.cc 並複製到 src 目錄下。再次編譯程式碼:


./build-linux_RK3588.sh

完成後動到安裝路徑執行範例程式,輸入下方指令執行。指令帶入第三個參數 “2” 代表使用 /dev/Video2 的裝置,”1280” 代表影像的寬度,”720” 則代表影像的高度,可以依各位實際的情況調整。


cd install/rknn_yolov5_demo_Linux
./rknn_yolov5_demo ./model/RK3588/yolov5s-640-640.rknn 2 1280 720

Orange Pi 5 Plus 測試 720P Webcam 輸入影像運行 YOLOv5 模型推論

實際測試的結果在 1280×720 HD 影像下的推論有 10 FPS,若是將解析度改為 640×480 則可以達到接近 20 FPS。但從 log 看來執行推論的過程約只耗費 20ms 左右,其餘的時間則是耗費在影像的處理與顯示上了,效能可說是相當不賴。

模型轉換工具 RKNN-Toolkit2

上述的推論範例使用官方預訓練的 RKNN 模型檔,若是想要自行將不同框架的模型轉成 RKNN 在 OPi 5+ 上推論,就必須透過官方提供的 RKNN-Toolkit2 這個工具。此工具必須要在 x86 的 PC 上執行,作業系統要求為 Ubuntu 18.04 以上,Python 3.6 以上,筆者的測試環境為 Ubuntu 22.04,Python 3.10。 第一步也是要安裝必要套件:


sudo apt-get install virtualenv git
sudo apt-get install python3 python3-dev python3-pip
sudo apt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 libsm6 libgl1-mesa-glx libpro
tobuf-dev gcc

建立 python 虛擬環境:


virtualenv -p /usr/bin/python3 venv
source venv/bin/activate

下載 RKNN-toolkit2


git clone <https://github.com/rockchip-linux/rknn-toolkit2.git>
cd rknn-toolkit2/

安裝相依套件:


pip3 install -r doc/requirements_cp310-1.5.0.txt

安裝 RKNN-Toolkit2 Python 模組:


pip install packages/rknn_toolkit2-1.5.0+1fa95b5c-cp310-cp310-linux_x86_64.whl

至此套件已安裝完成,在此 toolkit 中也有提供一些範例來轉換 pytorch、TensorFlow、Caffe、ONNX 等不同框架的模型,可以進入到各範例中執行模型轉換,舉例而言要執行 TensrFlow 的轉換範例可以輸入以下指令:


cd examples/tensorflow/ssd_mobilenet_v1/
python3 test.py

這個指令會把目錄下的 “ssd_mobilenet_v1_coco_2017_11_17.pb” TensorFlow 預訓練模型轉換成 NPU 可執行的模型 “ssd_mobilenet_v1_coco.rknn”,並且會讀取目錄中的 “road.bmp” 檔案進行推論測試。完成後即可把 RKNN 模型傳送到 Rockchip 的單板電腦上執行了。

 

使用 RKNN-Toolkit2 將 SSD_mobilenet 模型由 Tensorlow 轉換為 rknn 格式

OPi 5+ 執行 Teachable Machine 轉換後的 RKNN 模型

除了 RKNN Toolkit2 內建的範例外,筆者也成功地把 Teachable Machine 匯出的 TF.lite 模型轉換為 RKNN 模型並且在 OPi 5+ 上執行。簡易流程如下:

  • 在 Teachable Machine 訓練模型,並匯出為 TF.lite 未量化格式(操作流程可參考筆者之前的文章
  • 將 TF.lite 模型傳送到執行 RKNN-toolkit2 的 Ubuntu PC。路徑為 “rknn-toolkit2/examples/tflite/mobilenet_v1/”
  • 修改 “test.py” 檔案,在呼叫 “rknn.config” API 增加指定 traget_platfrom為”rk3588”,並修改 “rknn_load_rflite” API 所指定的 model 名稱為剛剛傳入的檔案名稱,如下圖:

    指定 target_platform

     

  • 執行 python3 test.py 轉換模型,筆者也同時將 test.py 測試推論的圖檔改為訓練資料圖檔,輸出結果如下圖,可以明確分類出圖像。

 

順利轉換 TF.lite 模型為 RKNN

  • 將 rknn 檔案複製起來,並傳送到 OPi 5+
  • 執行 OPi 5+ 的推論測試,結果如下圖,可以正確的分類圖片。

 

在 OPi 5+ 上成功載入 TensorFlow Lite 模型並執行推論

如此一來可以輕鬆的將 Teachable Machine 客製化訓練的模型放到 OPi 5+ 上執行了!

小結-展望未來想像空間更大

整體而言 Orange Pi 5 Plus 適合作為智慧機上盒、智慧顯示、NVR 等相關應用,具備雙 GbE 網路孔與多路影像輸出輸入介面是其特色。除此之外 Rockchip 的產品線近期已陸續搭載了 NPU,讓對應的單板電腦更具備競爭力,除了 CPU 核心效能本身就還不錯之外,還足以處理輕度物件偵測與影像分類等 AI 應用。唯獨在 NPU 工具的使用上還是稍微卡手了一些,Python 文件說明也未齊全,這將直接影響 Maker 玩家投入開發的意願程度。未來若能提供更人性化、更合宜的 NPU 開發者工具,再加上處理器本身的優異性能,可能將對邊緣運算的市場造成一股破壞性的浪潮。

Maker 玩 AI 系列專欄用深入淺出的方式,介紹 Maker 容易入門的 AI 軟硬體工具,並且以實際案例引領上手。有好用的 AI 軟硬體也歡迎留言討論喔!

(本篇文章經同意轉載自vMaker原文連結;責任編輯:謝嘉洵。)

Lin Felix
Lin Felix

Author: Lin Felix

長期出沒在南部地區的Maker社群,致力於推廣從實作中學習的精神。熱愛胡搞瞎搞,喜歡嘗試新事物。現職為亞堤教育團隊講師與創客閣樓召集人。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *