『NVIDIA』JETSON XAVIER NX DEVELOPER KIT学习笔记

最近需要将自定义的TensorFlow模型部署在JETSON XAVIER NX DEVELOPER KIT,这里记录一些如何安装TensorFlow以及OpenCV的方法

『NVIDIA』JETSON XAVIER NX DEVELOPER KIT学习笔记_第1张图片 『NVIDIA』JETSON XAVIER NX DEVELOPER KIT学习笔记_第2张图片
英伟达开发板 JETSON XAVIER NX DEVELOPER KIT 示意图

通用部分

系统安装

『NVIDIA』JETSON XAVIER NX DEVELOPER KIT学习笔记_第3张图片

具体安装方法参见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这种找不到命令的错误,如下执行:

# 编辑环境变量
vim ~/.bashrc
# 增加环境变量
export PATH=/home/moemil/miniforge-pypy3/bin:$PATH
# 激活环境变量
source ~/.bashrc
# 显示(base)
source activate

注意设置为自己的安装路径

更换下载换源

更换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图标可以查询得到,如下所示:

『NVIDIA』JETSON XAVIER NX DEVELOPER KIT学习笔记_第4张图片

首先输入

jetson_clocks

通过以下命令可以查看板子的运行情况,如下所示:

# 安装 jetson-stats
sudo -H pip install jetson-stats
# 查看状态
sudo jtop
『NVIDIA』JETSON XAVIER NX DEVELOPER KIT学习笔记_第5张图片

通过以下命令可以控制风扇的运行情况,如下所示:

# 为文件赋予权限
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版本开始,软件包名称已从tensorflow-gpu 至 tensorflow

# 使用以下命令安装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

具体的适配可以参见官方文档

Table 1. TensorFlow compatibility with NVIDIA containers and Jetpack
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

『NVIDIA』JETSON XAVIER NX DEVELOPER KIT学习笔记_第6张图片

这些缺失的文件报错方式如下:

/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学习笔记_第7张图片 『NVIDIA』JETSON XAVIER NX DEVELOPER KIT学习笔记_第8张图片

最终成功后我发现仍然没有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,可以自行设置环境变量

『NVIDIA』JETSON XAVIER NX DEVELOPER KIT学习笔记_第9张图片

查看TensorFlow是否调用GPU

通过tf.test.is_gpu_available()查看是否支持GPU,最终发现为True,说明设置成功(之前CUDA10.2时为False,忘了放图)

这里就完成了一整个TensorFlow的安装以及CUDA、CUDNN的替换

你可能感兴趣的:(tensorflow,XAVIER,NX,linux)