Orange Pi – 類樹莓開發板的低價選擇

Orange Pi(中文譯為香橙派),由一家位於中國深圳的迅龍軟件所研發,算是目前眾多的類樹莓派開發板中較知名的廠牌之一。不過不像樹莓派僅有數種型號可選, Orange Pi洋洋灑灑擁有超過二十種不同的型號版本(截至今日網頁上目前有有23種):

Orange Pi Zero LTS, Orange Pi 3, Orange Pi AI Stick, Orange Pi 3g-iot-B, Orange Pi 3g-iot-A, Orange Pi 4G-IOT, Orange Pi RK3399, Orange Pi R1, Orange Pi Zoro Plus, Orange Pi I96, Orange Pi Prime, Orange Pi Win Plus, Orange Pi 2G-IOT, Orange Pi Zero Plus2, Orange Pi Plus 2E, Orange Pi PC Plus, Orange Pi PC2, Orange Pi PC, Orange Pi Lite 2, Orange Pi Lite, Orange Pi One Plus, Orange Pi One, Orange Pi Zero

請參考下方圖表,不同的型號之間有些微的硬體功能差異,在採購前必須要斟酌考量。(https://sebastien.andrivet.com/en/posts/orange-pi-models/

本文主要為Orange Pi One的安裝及設定介紹,並測試一些常用的AI系統運作效率如何。

Orange Pi One

硬體規格

CPU H3 Quad-core Cortex-A7 H.265/HEVC 4K
GPU Mali400MP2 GPU @600MHz (Supports OpenGL ES 2.0)
Memory 512MB DDR3 (shared with GPU)
Storage TF card (Max. 32GB)
Network 10/100M Ethernet RJ45
Video output Supports HDMI output
USB One USB 2.0 HOST, one USB 2.0 OTG
Size 69 mm × 48mm
Weight 36g

基本上,Orange Pi One是一款僅具備512MB、RJ45網路及HDMI輸出,無WIFI、Bluetooth等無線功能的開發板。

*網路上有些心得評語,指出Orange Pi的網路功能不是很穩定,我試用後,的確發現有此現象,以Orange Pi One來說,使用putty透過ssh連上使用,感覺網路速度不是很穩,尤其在執行諸如pip install、wget或git push等指令時,經常有hang住無反應現象,需重下command後才回復正常。

OS系統安裝

推薦使用armbian(我在OrangePi官方所下載的反而無法開機使用),這是專為ARM系列CPU所打造的OS。進入https://www.armbian.com之後,從Download頁面可看到支援相當多的開發板,我們選擇Orangepi。

接著選擇Orange Pi One

Buster是Debian的版本,Bionic是Ubuntu的版本,請選擇一種下載。

下載後,將image檔燒錄到SD卡上,Orange Pi便能透過該卡片開機了。

執行環境安裝

Swap調整

  1. 目前的swap size

pi@orangepione:~$ sudo swapon –show

NAME       TYPE        SIZE USED PRIO

/dev/zram1 partition 230.3M  15M    5

  1. 增加swap space

pi@orangepione:~$ sudo fallocate /var/swap.file –length 8GB

pi@orangepione:~$ sudo chmod 0600 /var/swap.file

pi@orangepione:~$ sudo mkswap /var/swap.file

Setting up swapspace version 1, size = 7.5 GiB (7999995904 bytes)

no label, UUID=ba11a1f4-e9a8-4b0b-b976-9fc6a3eb5379

pi@orangepione:~$ sudo swapon /var/swap.file

  1. 檢視增加後的swap size

pi@orangepione:~$ sudo swapon –show

NAME           TYPE        SIZE  USED PRIO

/dev/zram1     partition 230.3M 14.8M    5

/var/swap.file file        7.5G    0B   -2

基本套件

Armbian預設只有安裝python3,對於習慣使用python2的網友來說可能不太方便,需要手動額外安裝。(本文是以Python3示範)

  1. mkdir works; mkdir envs
  1. 安裝 virtualenv

sudo apt-get install virtualenv

  1. 建立一個虛擬環境AI

cd ~/envs/

virtualenv –p python3 AI

  1. 啟用AI環境(建議可將此行放在~/.bashrc)

source envs/AI/bin/activate

  1. 安裝numpy

pip install numpy

如果出現下方的error

表示需要手動安裝下方的package

sudo apt-get install python3-dev

  1. 安裝Tensorflow

wget https://github.com/lhelontra/tensorflow-on-arm/releases/download/v1.14.0-buster/tensorflow-1.14.0-cp37-none-linux_armv7l.whl

pip install tensorflow-1.14.0-py3-none-any.whl

Tensorflow安裝過程會出現error,需要先依次排除並手動安裝有問題的modules。

5.1 pip install cython

5.2 pip install grpcio==1.20.1

5.3 pip install h5py

5.4 pip install tensorflow-1.14.0-cp37-none-linux_armv7l.whl

OpenVINO

1. cd ~/

2. wget https://download.01.org/opencv/2019/openvinotoolkit/R2/l_openvino_toolkit_runtime_raspbian_p_2019.2.242.tgz

3. ln -s l_openvino_toolkit_runtime_raspbian_p_2019.2.242 openvino

4. nano /home/pi/openvino/bin/setupvars.sh

5. sudo apt-get install libgtk2.0-dev

6. sudo apt install libgtk-3-0

7. cd ~/envs/AI/lib/python3.7/site-packages/

ln -s /home/pi/openvino/python/python3/cv2.abi3.so

  1. nano ~/.bashrc

add 🡪

source ~/envs/AI/bin/activate

source ~/openvino/bin/setupvars.sh

sh ~/openvino/install_dependencies/install_NCS_udev_rules.sh

X Window

Armbian預設只有文字模型並沒有圖形介面,如果需要安裝,可透過如下的方式安裝Xfce桌面系統。

sudo apt-get -y install xorg lightdm xfce4 tango-icon-theme gnome-icon-theme

安裝完成後重開機,便會進入視窗模式如下:

YOLOV3-Tiny

如果單純透過OpenCV DNN模組執行我們於前文所訓練的YOLOV3-Tiny model,執行速度約0.3 FPS,亦即每個frame需要3.3秒的時間。相同的程式碼於樹莓派3B執行,則速度為0.5FPS。

OrangePi: 0.3 FPS                Raspberry Pi 3B: 0.5 FPS

但是若使用NCS2硬體加速,Orange Pi One速度可提升六倍以上,達到2 FPS,亦即每個frame僅需要0.5秒的時間。這個成績比起樹莓派3B+的1.9FPS相近,甚至還快一點點。

OrangePi: 2.0 FPS                Raspberry Pi 3B: 1.9 FPS

SSD-MobilenetV2

直接透過Tensorflow for python執行手掌偵測model,Orange Pi One的FPS約1.0,相同的程式碼執行於樹莓派3B+,速度為0.9 FPS,兩者的表現相當接近。

OrangePi: 1.0 FPS                Raspberry Pi 3B: 0.9 FPS

如果改使用OpenCV的DNN模組,Orange Pi One的FPS約0.9,而樹莓派3B+的表現為1.1 FPS。

OrangePi: 0.9 FPS                Raspberry Pi 3B: 1.1 FPS

透過OpenVINO+NCS2加速,Orange Pi One的FPS可加快到6.0 FPS,約提昇近七倍速度。至於樹莓派3B+,速度提昇為5.3 FPS,約快了3.8倍。

OrangePi: 6.0 FPS                Raspberry Pi 3B: 5.3 FPS

比較

  OrangePi One Raspberry 3B+
CPU YOLOV3-Tiny 0.3 FPS 0.5 FPS
NCS2 YOLOV3-Tiny 2.0 FPS 1.9 FPS
CPU SSD-MobileNet V2 1.0 FPS 0.9 FPS
DNN SSD-MobileNet V2 0.9 FPS 1.1 FPS
NCS2 SSD-MobileNet V2 6.0 FPS 5.3 FPS

使用心得

本文使用的程式及訓練好的model皆置於 https://github.com/ch-tseng/orangepi_palm

優點:

  1. 體積小
  2. 價格僅樹莓派3B+不到一半
  3. 執行效能相較於樹莓派3B+差不多。
  4. 與硬體加速的NCS2結合,效能提昇明顯。

缺點:

  1. 僅支援Ethernet RJ45
  2. 從官網下載的OS image無法開機,需使用第三方的armbian OS。
  3. 透過pip安裝tensorflow或opencv時會有相容問題,需手動安裝。
  4. RJ45網路功能不是非常穩定。
  5. 電源input為110V的1.7mm獨立的圓孔,使用上不比Micro USB線方便。
  6. RAM僅有512MB。

如果想要找一款低價的類樹莓派開發板,OrangePi是個好選擇,且值得的是,它與NCS2硬體加速的搭配良好,效能提昇相當明顯。