ASUS Tinker Board 2 / 2S 推出至今,搭配Debian作業系統操作的版本也從先前介紹的2.0.0版更新到了2.0.3版,上次的安裝教學內容連結如下:https://blog.cavedu.com/2021/09/01/tinker-board-2s-2/
這次華碩IoT團隊更新了Debian作業系統的內容,這次更新的內容強化了通訊的功能、周邊介面存取的功能,相關的更新內容請參考下表(原廠文件):
1. Fix OV5647 mirror issue
2. Fix ufw and iptables not working in Debian 10
3. xfce4-power-manager: set blank after to “never”
4. Add auto_ums config in config.txt
5. Add modem manager
6. Add ASUS.GPIO library for Python 3
7. Support Quectel EM06-E LTE module
8. Support USB to Serial Chip CH934X
9. Support WinChipHead CH340/CH341
10. Add support for ASUS API
11. Enable CONFIG_TUN kernel config
12. Power Manager add support for GPU configuration
13. Fix Debian apt-get repo issue
14. Fix UART0 RTS not working
本篇教學將主要說明各種常用的Python相依套件程式安裝流程,也透過本篇的內容強化即將使用Tinker Board 2S進行各種專案開發的朋友,有更多可以參考的文件,這些Python相依套件基本上都已經過各種範例的實測,在目前最新發表的Debian-10 2.0.3版 作業系統都是可以正常操作。
本次的安裝教學主要是針對新版核心(Debian-10 2.0.3版)進行安裝,相關安裝流程與較舊版本核心的安裝流程略有差異,若是新版核心建議還是按照本篇教學進行安裝,以確保相關的套件流程都可以正確安裝與執行。
本篇教學文將會針對以下這些AI應用程式設計中常用的套件程式安裝進行說明:
1. nano (用於簡易文字編輯器操作)
2. OpenCV 4.5.0 (用於相關視覺影像的介面操作)
3. imutils (用於視覺影像處理的介面操作)
4. pillow (用於視覺影像處理的介面操作)
5. tkinter (用於圖形化使用者介面 GUI 程式設計)
6. Tensorflow 2.4.1 與 Tensorflow-Lite Runtime 2.5.0 (用於神經網路運算)
7. SciKit-Learn (用於神經網路運算)
8. mediapipe(用於各種人體肢體或表情變化偵測操作)
9. pygame(用於各種多媒體遊戲或媒體撥放功能操作)
10. AudioPlayer、Playsound(用於撥放mp3或wav音訊檔案)
11. I2C介面與PCA9685電路驅動(用於周邊電路的控制)
一、安裝簡易文字編輯器nano
由於在許多的終端機操作環境下需要快速編修文件,採用精巧且功能完整的 nano
文字編輯器,一直是許多系統操作者的最愛之一,以下說明安裝流程:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install 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套件程式安裝,以下說明安裝流程:
sudo apt-get install aptitude
sudo aptitude install 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 -j4
等多核心編譯指令來以加快make流程。另外在編譯過程務必確保電源穩定,最好拿電風扇幫忙散熱,以確保編譯過程順利完成。以下說明OpenCV 4.5.0的安裝流程:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libjpeg-dev libpng-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libgtk2.0-dev libcanberra-gtk* libgtk-3-dev
sudo apt-get install python3-dev python3-numpy python3-pip
sudo apt-get install libtbb2 libtbb-dev libdc1394-22-dev
sudo apt-get install libv4l-dev v4l-utils
sudo apt-get install libopenblas-dev libatlas-base-dev libblas-de
sudo apt-get install liblapack-dev gfortran libhdf5-dev
sudo apt-get install libprotobuf-dev libgoogle-glog-dev libgflags-dev
sudo apt-get install protobuf-compiler
sudo apt-get install qt5-default
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.0.zip
unzip opencv.zip
unzip opencv_contrib.zip
mv opencv-4.5.0 opencv
mv opencv_contrib-4.5.0 opencv_contrib
更新並取得 openCV
cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D WITH_OPENMP=ON \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=OFF \
-D WITH_GSTREAMER=OFF \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_VTK=OFF \
-D WITH_QT=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_python3=TRUE \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF \
-D WITH_GTK=ON ..
make -j4
sudo make install
sudo ldconfig
make clean
build and make
接著要透過 .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
四、安裝其他視覺影像處理與圖形化使用者介面套件程式
本段要安裝多個乘用的影像處理與 GUI 套件
#安裝pillow套件程式
cd ~
sudo apt-get update
sudo apt-get upgrade
pip3 install setuptools
pip3 install pillow
#安裝tkinter套件程式
cd ~
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-tk
sudo apt-get install python3-pil.imagetk
#安裝imutils套件程式
cd ~
sudo apt-get update
sudo apt-get upgrade
pip3 install imutils
五、安裝Tensorflow 2.4.1 神經網路運算套件程式
Tinker Board 2S 具有強大的CPU與GPU運算效能,可進行神經網路運算,搭配OpenCV可以進行各種AI影像辨識的應用,依照Tinker Board 2S的各種硬體規格,筆者認為神經網路的框架可採用Tensorflow 2.4.1來進行神經網路的推論(Inference)運算,以下說明套件程式安裝流程:
#更新作業系統套件資訊
sudo apt-get update
sudo apt-get upgrade
#更新安裝pip3套件程式
sudo apt-get install python-pip python3-pip
#移除舊版Tensoflow套件程式
sudo pip uninstall tensorflow
sudo pip3 uninstall tensorflow
#安裝各種系統相依套件程式
sudo apt-get install gfortran
sudo apt-get install libhdf5-dev libc-ares-dev libeigen3-dev
sudo apt-get install libatlas-base-dev libopenblas-dev libblas-dev
sudo apt-get install liblapack-dev
#安裝各種Python3各種套件程式
sudo -H pip3 install --upgrade setuptools
sudo -H pip3 install pybind11
sudo -H pip3 install wrapt
sudo -H pip3 install termcolor
sudo -H pip3 install Cython==0.29.21
sudo -H pip3 install h5py==2.10.0
更新系統套件
#安裝下載工具
pip3 install gdown
sudo cp ~/.local/bin/gdown /usr/local/bin/gdown
#下載Tensorflow 2.4.1套件程式安裝檔
gdown https://drive.google.com/uc?id=1WDG8Rbi0ph0sQ6TtD3ZGJdIN_WAnugLO
#安裝Tensorflow 2.4.1套件程式
sudo -H pip3 install tensorflow-2.4.1-cp37-cp37m-linux_aarch64.whl
安裝 tensorflow
六、安裝Tensorflow-Lite Runtime 2.5.0 套件程式
對於Tinker Board 2S / 2GB而言,由於受限於主記憶體僅有2GB的緣故,因此對於神經網路進行推論運算時所需使用的主記憶體容量,就必須要謹慎運用這有限的容量,若需要在神經網路推論時有較高的運算效能,往往就必須要選擇神經網路模型規模較小的模型格式,在Tensorflow族系裡有種Tensorflow-Lite格式就是一種模型規模較小的格式,在Tensorflow的原廠網站裡也特別將Tensorflow-Lite格式定義適用於物聯網應用場域。以下說明套件程式安裝的方式,也歡迎參考我們的相關文章:http://blog.cavedu.com/?s=tensorflow
cd ~
sudo apt-get update
sudo apt-get upgrade
pip3 install https://github.com/google-coral/pycoral/releases/download/v2.0.0/tflite_runtime-2.5.0.post1-cp37-cp37m-linux_aarch64.whl
更新系統與安裝 tf runtime
七、安裝其他支援神經運算的套件程式SciKit-Learn
cd ~
sudo apt-get update
sudo apt-get upgrade
sudo pip3 install sklearn
八、安裝mediapipe Python相依套件
Google mediapipe 是最近非常熱門的 ML 套件,把各種視覺辨識變得更簡單好用,也歡迎參考我們的相關文章:http://blog.cavedu.com/?s=mediapipe
sudo apt update
sudo apt install -y python3-dev protobuf-compiler python3-pip git make libssl-dev
sudo pip3 install pip --upgrade
sudo pip3 install opencv_contrib_python
git clone https://github.com/PINTO0309/mediapipe-bin && cd mediapipe-bin
./v0.8.4/numpy120x/mediapipe-0.8-cp37-none-linux_aarch64_numpy120x_download.sh
sudo pip3 install \
cmake-3.20.2-cp37-none-linux_aarch64.whl \
numpy-1.20.3-cp37-none-linux_aarch64.whl \
mediapipe-0.8-cp37-none-linux_aarch64.whl
sudo pip3 install opencv-python dataclasses
安裝 mediapipe 與相關套件
九、安裝pygame套件
https://www.pygame.org/news
sudo aptitude install libsdl-image1.2-dev
wget https://files.pythonhosted.org/packages/0f/9c/78626be04e193c0624842090fe5555b3805c050dfaa81c8094d6441db2be/pygame-1.9.6.tar.gz
sudo apt-get install python-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev libsmpeg-dev python-numpy subversion libportmidi-dev ffmpeg libswscale-dev libavformat-dev libavcodec-dev
sudo apt-get install libfreetype6-dev
pip3 install pygame-1.9.6.tar.gz
十、安裝AudioPlayer套件
https://pypi.org/project/audioplayer/
sudo apt-get install python-gst-1.0
sudo apt-get install gir1.2-gstreamer-1.0
sudo apt-get install gstreamer1.0-tools
sudo apt-get install gir1.2-gst-plugins-base-1.0
sudo apt-get install gstreamer1.0-plugins-good
sudo apt-get install gstreamer1.0-plugins-ugly
pip3 install audioplayer
pip3 install playsound==1.2.2
十一、安裝Playsound套件
https://pypi.org/project/playsound/
sudo apt-get install python-gst-1.0
sudo apt-get install gir1.2-gstreamer-1.0
sudo apt-get install gstreamer1.0-tools
sudo apt-get install gir1.2-gst-plugins-base-1.0
sudo apt-get install gstreamer1.0-plugins-good
sudo apt-get install gstreamer1.0-plugins-ugly
pip3 install playsound==1.2.2
十二、安裝I2C介面與PCA9685電路驅動套件程式
在操作I2C介面驅動套件程式安裝之前,必須先至 tinker-config
系統管理工具啟用 I2C 介面服務,之後才能安裝相關套件與操作範例程式。
設定完成之後,繼續安裝,快完工了!https://pypi.org/project/smbus2/
pip3 install SMBUS2
pip3 install setuptools
sudo pip3 install adafruit-circuitpython-servokit
sudo pip3 install adafruit-pca9685
總結
本次的安裝教學主要是針對新版核心(Debian-10 2.0.3版)進行安裝,相關安裝流程與較舊版本核心的安裝流程略有差異,若是新版核心建議還是按照本篇教學進行安裝,以確保相關的套件流程都可以正確安裝與執行。
相關文章