作者:Felix
Orange Pi 5 Plus
在樹莓派引領單板電腦崛起之時,市場上充斥不少與樹莓派體積相同的類似產品,來自於深圳的 Orange Pi 團隊便是其中之一,2005 年迄今已將近十年仍不斷推出新的開放硬體,而 Orange Pi 5 Plus (以下簡稱 OPi 5+)則是其最新世代的產品。
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 等高速介面。從硬體帳面數據看來相較數莓派而言可說是全面性的輾壓,但實際使用如何,一起往下看看!
怎麼玩?
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)的現象!
神經網路運算單元 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”,開啟後看到如下圖碩,主要物件接有被偵測並標記出來:
若是第一次執行系統可能沒有安裝 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
實際測試的結果在 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 的單板電腦上執行了。
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 名稱為剛剛傳入的檔案名稱,如下圖:
- 執行 python3 test.py 轉換模型,筆者也同時將 test.py 測試推論的圖檔改為訓練資料圖檔,輸出結果如下圖,可以明確分類出圖像。
- 將 rknn 檔案複製起來,並傳送到 OPi 5+
- 執行 OPi 5+ 的推論測試,結果如下圖,可以正確的分類圖片。
如此一來可以輕鬆的將 Teachable Machine 客製化訓練的模型放到 OPi 5+ 上執行了!
小結-展望未來想像空間更大
整體而言 Orange Pi 5 Plus 適合作為智慧機上盒、智慧顯示、NVR 等相關應用,具備雙 GbE 網路孔與多路影像輸出輸入介面是其特色。除此之外 Rockchip 的產品線近期已陸續搭載了 NPU,讓對應的單板電腦更具備競爭力,除了 CPU 核心效能本身就還不錯之外,還足以處理輕度物件偵測與影像分類等 AI 應用。唯獨在 NPU 工具的使用上還是稍微卡手了一些,Python 文件說明也未齊全,這將直接影響 Maker 玩家投入開發的意願程度。未來若能提供更人性化、更合宜的 NPU 開發者工具,再加上處理器本身的優異性能,可能將對邊緣運算的市場造成一股破壞性的浪潮。
Maker 玩 AI 系列專欄用深入淺出的方式,介紹 Maker 容易入門的 AI 軟硬體工具,並且以實際案例引領上手。有好用的 AI 軟硬體也歡迎留言討論喔!
(本篇文章經同意轉載自vMaker,原文連結;責任編輯:謝嘉洵。)
- 【開箱實測】OpenVINO榨出單板極限,實作離線LLM AI助理! - 2024/07/25
- 【Maker 玩 AI】Grove Vision AI 模組讓 Arduino 也能玩 YOLO 模型 - 2023/12/26
- 【Maker 玩 AI】Edge Impulse 搭配 XIAO ESP32-S3 實作影像分類專題 - 2023/12/04