『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記
最近需要將自定義的TensorFlow模型部署在JETSON XAVIER NX DEVELOPER KIT,這裡記錄一些如何安裝TensorFlow以及OpenCV的方法
通用部分
系統安裝
具體安裝方法參見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
圖中所示為我已經連上了的截圖,點選進入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度左右(我這裡是已經開著風扇了)
在任意路徑下,輸入
sudo nvpmodel --query
會顯示當前的執行模式,我所購買的板子有四種執行模式,在右上角NVIDIA圖示可以查詢得到,如下所示:
首先輸入
jetson_clocks
通過以下命令可以檢視板子的執行情況,如下所示:
# 安裝 jetson-stats
sudo -H pip install jetson-stats
# 檢視狀態
sudo jtop
通過以下命令可以控制風扇的執行情況,如下所示:
# 為檔案賦予許可權
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
例如我的版本是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
具體的適配可以參見官方文件
TensorFlow Version | NVIDIA TensorFlow Container | JetPack Version |
---|---|---|
2.3.0 | 20.09 | 4.4 |
2.2.0 | 20.08, 20.07, 20.06 | 4.4 |
2.1.0 | 20.04 | 4.4 |
20.03, 20.02 | 4.3 | |
1.15.3 | 20.09, 20.08, 20.07 | 4.4 |
1.15.2 | 20.06, 20.04 | 4.4 |
20.03, 20.02 | 4.3 | |
Older packages below are installed as tensorflow-gpu; more recent releases above as tensorflow. | ||
2.0.0 | 20.01, 19.12 | 4.3 |
19.11 | 4.2.x | |
1.15.0 | 20.01, 19.12 | 4.3 |
19.11 | 4.2.x | |
1.14.0 | 19.10, 19.09, 19.07 | 4.2.x |
1.14.0 | 19.09 | 3.3.1 |
1.13.1 | 19.05, 19.04, 19.03 | 4.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
下
這些缺失的檔案報錯方式如下:
/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
最終成功後我發現仍然沒有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版本
在其目錄下我們可以找到自己安裝的CUDA10.0以及原始的CUDA10.2,可以自行設定環境變數
檢視TensorFlow是否呼叫GPU
通過tf.test.is_gpu_available()
檢視是否支援GPU,最終發現為True,說明設定成功(之前CUDA10.2時為False,忘了放圖)
這裡就完成了一整個TensorFlow的安裝以及CUDA、CUDNN的替換
相關文章
- 【nvidia jetson xavier】 Deepstream Yolov3示例模型執行YOLO模型
- 新品釋出 | 飛凌 AI邊緣計算終端FCU3001來了!基於NVIDIA Jetson Xavier NX設計AI
- Jetson AGX Xavier/Ubuntu安裝QTUbuntuQT
- Jetson AGX Xavier ROS下呼叫USB單目攝像頭ROS
- numpy的學習筆記\pandas學習筆記筆記
- [譯] 邊緣AI計算新品:NVIDIA Jetson NanoAINaN
- IT學習筆記筆記
- 學習筆記筆記
- 【學習筆記】數學筆記
- 《JAVA學習指南》學習筆記Java筆記
- 【java學習】JDK(Java Development Kit)JavaJDKdev
- Elasticsearch學習筆記Elasticsearch筆記
- Scala學習筆記筆記
- MySql學習筆記MySql筆記
- jQuery 學習筆記jQuery筆記
- react學習筆記React筆記
- 學習筆記(4.3)筆記
- 學習筆記(4.4)筆記
- 學習筆記(3.29)筆記
- 學習筆記(4.1)筆記
- AOP學習筆記筆記
- AspectJ學習筆記筆記
- 學習筆記(3.27)筆記
- 學習筆記(4.2)筆記
- golang 學習筆記Golang筆記
- Zookeeper學習筆記筆記
- 學習筆記(3.24)筆記
- 學習筆記(3.25)筆記
- 學習筆記(3.21)筆記
- GitHub學習筆記Github筆記
- jest 學習筆記筆記
- typescript 學習筆記TypeScript筆記
- Echarts學習筆記Echarts筆記
- js學習筆記JS筆記
- shell學習筆記筆記
- Dubbo 學習筆記筆記
- SVN 學習筆記筆記
- 笨笨學習筆記筆記