『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記

DeepHao發表於2020-10-20

最近需要將自定義的TensorFlow模型部署在JETSON XAVIER NX DEVELOPER KIT,這裡記錄一些如何安裝TensorFlow以及OpenCV的方法

『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記 『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記
英偉達開發板 JETSON XAVIER NX DEVELOPER KIT 示意圖

通用部分

系統安裝

『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記

具體安裝方法參見Getting Started With Jetson Xavier NX Developer Kit

TeamViewer安裝

進入TeamViewer官網,選擇Raspberry Pi選項,點選Scarica Host下載host版本的teamviewer,我這裡下載版本為:teamviewer-host_15.10.5_armhf.deb。進入下載檔案目錄,輸入以下命令:

# 由於下載檔案架構為armhf,因此需要新增armhf架構
sudo dpkg --add-architecture armhf
# 系統更新
sudo apt update
# 安裝teamviewer
sudo dpkg -i teamviewer-host_15.10.5_armhf.deb

注意如果出現報錯,原因是確實armhf需要的依賴,執行如下命令:

sudo apt --fix-broken install

安裝完成後進入桌面,進入軟體介面就能看到已安裝的TeamViewer

『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記

圖中所示為我已經連上了的截圖,點選進入TeamViewer,在右上角狀態列會有圖示,點選顯示狀態對話方塊,就可以進行一系列的連線操作了

Anaconda替代品安裝

miniforge安裝

可選安裝[Linux系統常用的安裝包]

# apt-get install apt-utils
apt-get install apt-utils
# apt-get install iputils-ping
apt-get install iputils-ping
# apt-get install net-tools
apt-get install net-tools
# ps
apt-get install procps

由於我所購買的NVIDIA Jetson Xavier使用的arm64架構是沒法使用anaconda的,強行安裝不僅麻煩還容易出現各種問題,因此我們選擇安裝miniforge

miniforge與miniconda的區別在於miniforge的下載通道是conda-forge

miniforge的github地址:https://github.com/conda-forge/miniforge

miniforge的.sh release下載地址:https://github.com/conda-forge/miniforge/releases

直接在網址中下載最新版就行了,下載後執行sh檔案,比如我這裡下載檔案為Miniforge-pypy3-4.8.5-2-Linux-aarch64.sh

sh Miniforge-pypy3-4.8.5-2-Linux-aarch64.sh

注意:這裡需要新增環境變數,否則會出現bash:conda Command not found這種找不到命令的錯誤,如下執行:

# 增加環境變數
export PATH=/home/moemil/miniforge-pypy3/bin:$PATH
# 啟用環境變數
source ~/.bashrc

注意設定為自己的安裝路徑

更換下載換源

更換conda源

conda config --prepend channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --prepend channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

更換pip源

mkdir ~/.pip
cd ~/.pip
vi pip.conf

[global]
index-url = https://pypi.mirrors.ustc.edu.cn/simple/

通過 ESC wq 儲存即可

建立虛擬環境

建立和使用的方式與傳統PC Linux系統的Anaconda相同,相比於Windows則是多個一個conda字首,XXX為你想要為環境命的名

conda create -n XXX python=3.6
conda activate XXX

啟動風扇

安裝硬體溫度檢測工具sensors

sudo apt install lm-sensors

安裝成功以後,輸入

sensors

系統會顯示當前溫度,一般不開風扇的話系統溫度能達到40度左右(我這裡是已經開著風扇了

『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記

在任意路徑下,輸入

sudo nvpmodel --query

會顯示當前的執行模式,我所購買的板子有四種執行模式,在右上角NVIDIA圖示可以查詢得到,如下所示:

『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記

首先輸入

jetson_clocks

通過以下命令可以檢視板子的執行情況,如下所示:

# 安裝 jetson-stats
sudo -H pip install jetson-stats
# 檢視狀態
sudo jtop
『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記

通過以下命令可以控制風扇的執行情況,如下所示:

# 為檔案賦予許可權
sudo chmod 777 /sys/devices/pwm-fan/target_pwm
# 設定佔空比 255為最大轉速,0為停止,設定在這個範圍之間
sudo echo 255 > /sys/devices/pwm-fan/target_pwm

TensorFlow安裝

根據官網的指引,以此輸入以下指令,這部分指令的目的是安裝依賴,屬於通用型的

# 安裝TensorFlow所需的系統軟體包:
sudo apt-get update
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran

# 安裝和升級pip3
sudo apt-get install python3-pip
sudo pip3 install -U pip testresources setuptools=49.6.0

# 安裝Python軟體包依賴項
sudo pip3 install -U numpy==1.16.1 future==0.18.2 mock==3.0.5 h5py==2.10.0 keras_preprocessing==1.1.1 keras_applications==1.0.8 gast==0.2.2 futures protobuf pybind11

然後根據自己的選擇安裝TensorFlow2.x版本,還是TensorFlow1.x版本
注意:從20.02 TensorFlow版本開始,軟體包名稱已從 張量流gpu 至 張量流

# 使用以下命令安裝TensorFlow點3命令。該命令將安裝與JetPack 4.4相容的最新版本的TensorFlow
sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 tensorflow

# TensorFlow版本2是最近釋出的,與TensorFlow 1.x並不完全向後相容。如果您希望使用TensorFlow 1.x軟體包,可以通過將TensorFlow版本指定為小於2來安裝它
sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 ‘tensorflow<2# 如果要安裝特定版本的JetPack支援的TensorFlow的最新版本,請發出以下命令
sudo pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v$JP_VERSION tensorflow

其中JP_VERSION為使用的JetPack版本,例如 42 對於JetPack 4.2.2或,33 對於JetPack 3.3.1等,JetPack版本可用如下命令查詢:

head -n 1 /etc/nv_tegra_release
『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記

例如我的版本是4.3,因此我在安裝時使用
sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 tensorflow

sudo pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v43 tensorflow==2.1.0 + nv20.3

具體的適配可以參見官方文件

Table 1. TensorFlow compatibility with NVIDIA containers and Jetpack
TensorFlow VersionNVIDIA TensorFlow ContainerJetPack Version
2.3.020.094.4
2.2.020.08, 20.07, 20.064.4
2.1.020.044.4
20.03, 20.024.3
1.15.320.09, 20.08, 20.074.4
1.15.220.06, 20.044.4
20.03, 20.024.3
Older packages below are installed as tensorflow-gpu; more recent releases above as tensorflow.
2.0.020.01, 19.124.3
19.114.2.x
1.15.020.01, 19.124.3
19.114.2.x
1.14.019.10, 19.09, 19.074.2.x
1.14.019.093.3.1
1.13.119.05, 19.04, 19.034.2.x

OpenCV安裝

開發板自帶安裝

由於OpenCV是自帶了的,所以直接將開發板自帶的路徑拷貝至我們的虛擬環境即可

# 拷貝連結並重新命名為cv2
ln -s /usr/lib/python3/dist-packages/cv2.cpython-36m-aarch64-linux-gnu.so cv2.so

原始碼編譯

下載opencv以及opencv_contrib原始碼,在opencv中建立一個build資料夾,進入此資料夾,在終端輸入:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_EXTRA_MODULES_PATH=/home/moemil/opencv_contrib/modules -D PYTHON3_EXECUTABLE=/home/moemil/miniforge-pypy3/envs/guoquanhao_tf2/bin/python -D BUILD_EXAMPLES=ON -D BUILD_opencv_python3=ON ..

在此期間,我一共報了兩種錯誤,一種是檔案的缺失,我們需要把如下檔案手動拷貝到opencv_contrib/modules/xfeaturesd/src

『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記

這些缺失的檔案報錯方式如下:

/home/moemil/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:654:20: fatal error: boostdesc_bgm.i: 沒有那個檔案或目錄
           #include "boostdesc_bgm.i"
                    ^~~~~~~~~~~~~~~~~
compilation terminated.
modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/build.make:91: recipe for target 'modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.o' failed
make[2]: *** [modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.o] Error 1
CMakeFiles/Makefile2:12621: recipe for target 'modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/all' failed
make[1]: *** [modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/all] Error 2
make[1]: *** 正在等待未完成的任務....

這些報錯都是檔案缺失造成的,可能是網路原因造成的無法下載,因此我們可以在opencv/build/CMakeDownloadLog.txt查詢到這些檔案及其下載地址,將其下載下來即可(或建立一個同名檔案將其程式碼複製下來)

第二個錯誤是找不到系統檔案錯誤,發生在features2d,只需要將opencv下的features2d拷貝到build下即可,最後就會完成編譯,編譯與安裝的指令如下:

sudo make -j8
sudo make install
sudo ldconfig
『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記 『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記

最終成功後我發現仍然沒有cv2模組也找不到cv2的連結,因此妥協了系統自帶的cv2連結,我也不知道為什麼,這裡留個足跡

選用部分

此部分根據自己環境的需求選用,旨在介紹如何更換CUDA以及CUDNN

更換CUDA以及CUDNN

由於安裝完成後的TensorFlow使用的是CUDA10.0以及CUDNN7,而系統預裝的是CUDA10.2以及CUDNN8,因此需要更換CUDA以及CUDNN,首先需要加入下載源,進入sources.list加入以下行:

deb https://repo.download.nvidia.com/jetson/common r32 main
deb https://repo.download.nvidia.com/jetson/t210 r32 main

然後執行

sudo apt-get update
sudo apt install cuda-toolkit-10-0
sudo apt-get install libcudnn7

完成後,設定環境變數

vim ~/.bashrc

export CUDA_HOME=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.0/bin:$PATH

source ~/.bashrc

輸入nvcc -V檢視CUDA版本

『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記

在其目錄下我們可以找到自己安裝的CUDA10.0以及原始的CUDA10.2,可以自行設定環境變數

『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記

檢視TensorFlow是否呼叫GPU

通過tf.test.is_gpu_available()檢視是否支援GPU,最終發現為True,說明設定成功(之前CUDA10.2時為False,忘了放圖)
在這裡插入圖片描述

這裡就完成了一整個TensorFlow的安裝以及CUDA、CUDNN的替換

相關文章