在之前的開箱文介紹了Tinker Board 2S / 2GB的相關硬體規格,可以明顯看出Tinker Board 2S / 2GB其實在硬體性能方面的已經具備不錯的條件,此外,開箱文的介紹裡,也提到了Tinker Board 2S採用了aarch64的作業系統架構,以Debian 10 Linux的LXDE桌面環境,更讓使用者有著相當不錯的GUI使用體驗。
Tinker Board 2S在原廠網站上提供了Debian 10 Linux作業系統給使用者進行安裝,相關LXDE桌面環境的套件軟體程式,都有相當完整的支援,本篇教學文將會著眼在Tinker Board 2S應用在AI範疇中,所應該要在後續的套件軟體程式的安裝介紹,在這次的系統安裝測試過程,我們發現了在Tinker Board 2S安裝的Debian 10 Linux作業系統裡,為了安裝一些常用的AI支援套件程式,在安裝過程中仍要補足許多缺漏的相依套件程式,甚至在測試安裝的過程裡,也發現了有部分的相依套件程式有斷裂的問題,甚至無法單純採用pip3 install或apt-get install的方式進行相依套件程式的安裝,得要透過一些其他套件程式進行修補斷裂的安裝,這部分將會在後續的教學內容中會詳細說明。
撰寫/攝影 | 曾俊霖 |
難度 |
★★★☆☆ |
時間 |
6小時以上 |
材料表 |
|
本篇教學文將會針對以下這些AI應用程式設計中常用的套件程式安裝進行說明:
- nano (用於簡易文字編輯器操作)
- OpenCV 4.5.0 (用於相關視覺影像的介面操作)
- imutils (用於視覺影像處理的介面操作)
- pillow (用於視覺影像處理的介面操作)
- tkinter (用於圖形化使用者介面 GUI 程式設計)
- Tensorflow 2.4.1 與 Tensorflow-Lite Runtime 2.5.0 (用於神經網路運算)
- Python3-Coral (用於Google Coral 邊緣張量處理單元Edge-TPU加速器運算)
- SciKit-Learn (用於神經網路運算)
一、安裝簡易文字編輯器nano
由於在許多的終端機操作環境下需要快速編修文件,採用精巧且功能完整的文字編輯器nano,一直是許多系統操作者的最愛之一,以下說明安裝流程:
二、安裝GTK-2.0相依套件libgtk2.0-dev
本次安裝測試的過程當中,在安裝OpenCV 4.5.0套件程式時,發生了相依套件斷裂的問題,在Tinker Board 2S的Debian 10 Linux系統中因為沒有安裝GTK-2.0 的libgtk2.0-dev套件程式,這將導致在OpenCV 4.5.0因cmake無法將 libgtk2.0-dev相依套件進行編譯設定,雖然在後續的make流程都能完成,但最後會在最後Python程式執行階段無法正確使用如imshow、putText等畫面顯示或繪圖的函數,並且會在執行階段報錯,並且提示需要重新進行cmake。
為了將libgtk2.0-dev相依套件程式安裝至系統,筆者初期使用sudo apt-get install libgtk2.0-dev這種方式安裝相依套件程式,但系統卻又報錯,表示還有許多其他相關相依套件有「相依斷裂」的問題,筆者嘗試再以sudo apt-get install去安裝那些相依套件程式,卻依然發現更多的「相依斷裂」,更糟糕的是還發生「循環相依」,所謂「循環相依」表示其他的相依套件程式又循環相依libgtk2.0-dev。
為了解決這種「相依斷裂」與「循環相依」的問題,最後只能透過額外安裝「套件安裝設定程式」的方式來解決,本次教學使用的是安裝「aptitude」套件程式來解決這個問題。
透過「aptitude」套件程式便可以進行libgtk2.0-dev套件程式安裝,以下說明安裝流程:
三、安裝OpenCV 4.5.0套件程式
在本篇教學採用OpenCV 4.5.0進行視覺影像介面處理,筆者曾嘗試以sudo apt-get install python-opencv進行套件程式的安裝,結果經過檢查發現,以這種方式安裝的OpenCV版本是3.6版,雖然簡單Python程式函數還是可以執行,可是當遇到更進階的函數如DNN等相關進階應用時,便會產生函數缺漏的問題,有鑑於此,筆者選擇重新以Build from Source的方式進行安裝。
在這裡要特別強調一個重要關鍵,在安裝OpenCV 4.5.0套件程式之前,「必須」將前述的GTK-2.0相依套件libgtk2.0-dev先行安裝完成,切莫跳過這個重要步驟。
由於OpenCV 4.5.0的安裝過程需要大量的記憶體運作空間以進行後續的make流程,因此必須先行安裝虛擬記憶體的套件程式,並且將虛擬記憶體設為10240MB,並且將Tinker Board 2S重新開機,以下說明虛擬記憶體設定流程:
sudo apt-get update
sudo apt-get upgrade
#安裝dphys-swapfile套件程式 sudo apt-get install dphys-swapfile
#以nano編輯 /etc/dphys-swapfile設定檔案 sudo nano /etc/dphys-swapfile #尋找 #CONF_SWAPSIZE= 字串內容,並且將註解符號 # 取消。 #設定CONF_SWAPSIZE=10240 #離開nano文字編輯器 #重新開機 sudo reboot |
下載並編譯安裝OpenCV 4.5.0,請注意,這個階段的安裝時間非常久,筆者大約安裝了近4小時,且在make階段時Tinker Board 2S的散熱片會產生高溫,筆者嘗試使用make -j2或make -j4等多核心的編譯指令,雖然可以加快make流程,但是這種編譯方式會讓CPU的散熱片的溫度飆升,甚至導致熱當機的狀況很多次,造成make失敗多次,因此筆者建議只要採用make這種單核心的編譯為佳,且在編譯過程務必確保電源穩定,且適當以電風扇在旁邊幫助散熱,雖然時間很久,但可以確保編譯過程安全無誤,以下說明OpenCV 4.5.0的安裝流程:
至 .bashrc 設定OpenCV 4.5.0路徑,安裝完成OpenCV 4.5.0之後,必須要設定相關執行路徑,若跳過這個步驟,會導致Python程式在import cv2時產生allocation memory 報錯,以下說明 .bashrc 路徑設定方式:
cd ~
#以nano文字編輯器編輯 .bashrc 設定檔 sudo nano ~/.bashrc
#到文件末端將以下敘述補在最後一行 export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1 #執行 .bashrc 內容 source ~/.bashrc
|
四、安裝其他視覺影像處理與圖形化使用者介面套件程式
五、安裝Tensorflow 2.4.1 神經網路運算套件程式
Tinker Board 2S 具有強大的CPU與GPU運算效能,可進行神經網路運算,搭配OpenCV可以進行各種AI影像辨識的應用,依照Tinker Board 2S的各種硬體規格,筆者認為神經網路的框架可採用Tensorflow 2.4.1來進行神經網路的推論(Inference)運算,以下說明套件程式安裝流程:
六、安裝Tensorflow-Lite Runtime 2.5.0 套件程式
對於Tinker Board 2S / 2GB而言,由於受限於主記憶體僅有2GB的緣故,因此對於神經網路進行推論運算時所需使用的主記憶體容量,就必須要謹慎運用這有限的容量,若需要在神經網路推論時有較高的運算效能,往往就必須要選擇神經網路模型規模較小的模型格式,在Tensorflow族系裡有種Tensorflow-Lite格式就是一種模型規模較小的格式,在Tensorflow的原廠網站裡也特別將Tensorflow-Lite格式定義適用於物聯網IoT應用的場合當中,以下說明套件程式安裝的方式:
七、安裝google Coral Edge-TPU Pthon套件程式
若想在邊緣裝置提升神經網路的運算效能,常會在邊緣運算裝置上外加神經網路運算加速裝置,最常用的做法,便是透過USB連接神經網路運算加速裝置的方式進行擴充,Tinker Board 2S有強大的USB 3.0介面可以運用,筆者為了能夠在Tinker Board 2S上充分發揮Tensorflow-Lite的效能,因此選擇透過google推出的Coral Edge-TPU USB Accelerator安裝在Tinker Board 2S上,透過Edge-TPU強大的運算效能,讓AI的各種應用都能有高速的反應。
以下說明Python3-Coral套件程式安裝方式:
八、安裝其他支援神經運算的套件程式SciKit-Learn
以上是針對Tinker Board 2S在後續應用在AIoT主題開發所安裝的各種套件程式安裝教學,筆者將會在下一篇「Tinker Board 2S 系統評測」中介紹Tinker Board 2S在神經網路運算的效能,屆時將會透過筆者設計的Python3範例程式進行本篇各種套件程式的測試效能,敬請各位讀者拭目以待囉!