Xavier配置pytorth


注意:刷机时刷的 Jetpack4.4版本的,故下面为与4.4版本对应。

一、ubuntu18.04安装

由于NVIDIA Jetson AGX Xavier在刷机时就安装好了ubuntu系统,查看当前ubuntu系统版本,可知当前版本为18.04。
在这里插入图片描述

二、CUDA10.2安装

1.安装

由于NVIDIA Jetson AGX Xavier在板子刷机的时候就已经安装好了CUDA,所以我们不需要在额外安装了。查看已安装好的CUDA版本,可知当前版本为CUDA10.2。

$ nvcc -V

在这里插入图片描述

2.验证

使用安装的CUDA的样例读取计算机的硬件信息,显示PASS则通过验证。

$ cd /usr/local/cuda-10.2/samples/1_Utilities/deviceQuery  #cuda-10.2对应为自己的CUDA版本 
$ sudo make
$ sudo ./deviceQuery

在这里插入图片描述

三、cuDNN v8.0.0安装

1.安装

同样,xavier在刷机时已经安装了cuDNN,但没有将对应的头文件和库放到cuda目录 :/usr/local/cuda/include/cudnn.h,而将cuDNN的头文件放在:/usr/include/cudnn.h。

2.验证

故查看cuDNN版本如下,可知cuDNN版本为8.0.0。

$ cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

在这里插入图片描述

四、Miniforge安装

1.换镜像源

在安装前可以换镜像源,加速下载安装,可参考该文章

2.安装

由于NVIDIA Jetson Xavier 使用的aarch64架构是没法使用Anaconda的,虽然可以自己编译,但是conda指令是没法编译到aarch64架构上运行的。
所以这里使用Anaconda的替代Miniforge,Miniforge的下载官网:https://github.com/conda-forge/miniforge/releases。下载适合自己的版本。安装完成后,就和anaconda的使用方式一样。
可参考该文章

$ Miniforge-pypy3-4.10.3-4-Linux-aarch64.sh

在这里插入图片描述

3.创建虚拟环境

$ conda create -n py36 python=3.6 #py36为我创建虚拟环境的名称,3.6为安装的版本,可换成自己对应的

在这里插入图片描述

故虚拟环境安装成功。
可使用以下命令对虚拟环境操作:

$ conda create -n 环境名称 python=版本    #创建虚拟环境
$ conda env list       #查看当前虚拟环境都有那些
$ conda activate 创建的虚拟环境名称   #进入创建的虚拟环境
$ conda deactivate          #退出虚拟环境

不放心的可以验证一下,确保安装成功。
在这里插入图片描述
在这里插入图片描述
注意:虚拟环境里面安装的python版本也必须要和jetpack中的python版本一致,不然之后安装pytorch会出错!!!
如下,我jetpack4.4对应python3.6,然而我虚拟环境安装的是python3.8,所以导致我的pytorch不支持安装,安装不上。
在这里插入图片描述

五、pycharm安装

pycharm社区版:https://www.jetbrains.com/pycharm/download/#section=linux

$ cd Downloads
$ tar xfz pycharm-community-2021.2.tar.gz
$ cd pycharm-community-2021.2/bin
$ ./pycharm.sh

下载就可以了,但是在运行最后一句代码./pycharm.sh时出现下面问题。
在这里插入图片描述
这是因为Xavier的arm架构,导致无法安装官方的JDK环境,在arm64系统上取而代之的是只能安装open-jdk。pycharm需要java jdk,但是支持arm64的只有open-jdk,所以需要先安装open-jdk。
安装过程参考:
https://blog.csdn.net/asayuki_fsk/article/details/112391488?spm=1001.2014.3001.5501
安装完成后可创建桌面快捷方式,创建pycharm.desktop,然后在文本中进行编辑,具体可自己在网上,我就不详将了,然后双击以下路径的图标,并将其锁在桌面即可。
在这里插入图片描述

六、pytorch 安装

1.安装

在PC机ubuntu系统上安装pytorch只需要和自己的CUDA版本对应,而Xavier上的pytorch需要和Jetpack版本对应。
找到对应自己刷机的JetPack版本号下载对应的pytorch和torchvision版本即可,这里我下载的JetPack4.4,python3.6中选择pytorch1.7.0(选择适合自己的版本)。官网查询及安装地址:
https://elinux.org/Jetson_Zoo#PyTorch_.28Caffe2.29
这里需要科学上网,如果有需要可以给我私信。
在这里插入图片描述
在这里插入图片描述
输入以下命令:

$ sudo apt-get install libopenblas-base libopenmpi-dev python3-pip
$ pip3 install Cython
$ cd Downloads
$ pip3 install numpy torch-1.7.0-cp36-cp36m-linux_aarch64.whl  #对应自己下载的

安装好pytorch后接着安装torchvision,由上一个图可以看出,我安装的pytorch v1.7对应torchvision v0.8.1。参考官网安装地址:
https://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-9-0-now-available/72048
在这里插入图片描述

$ sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
$ git clone --branch v0.8.1 https://github.com/pytorch/vision torchvision   # see below for version of torchvision to download
$ cd torchvision
$ export BUILD_VERSION=0.8.1  # where 0.x.0 is the torchvision version  
$ python3 setup.py install --user
$ cd ../  # attempting to load torchvision from build dir will result in import error
$ pip install 'pillow<7' # always needed for Python 2.7, not needed torchvision v0.5.0+ with Python 3.6

注意:若python3 setup.py install --user 这条语句出现如下错误:

$ python3 setup.py install --user 
  Illegal instruction (core dumped)

在这里插入图片描述
则输入以下命令打开文件

$ sudo gedit ~/.bashrc

在打开的文件最后一行添加以下代码作为环境变量,然后重新执行python3 setup.py install --user命令即可。

export OPENBLAS_CORETYPE=ARMV8

2.验证

可参考官网验证方式:https://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-9-0-now-available/72048
在这里插入图片描述

import torch
print(torch.__version__)
print('CUDA available: ' + str(torch.cuda.is_available()))
print('cuDNN version: ' + str(torch.backends.cudnn.version()))
a = torch.cuda.FloatTensor(2).zero_()
print('Tensor a = ' + str(a))
b = torch.randn(2).cuda()
print('Tensor b = ' + str(b))
c = a + b
print('Tensor c = ' + str(c))
import torchvision
print(torchvision.__version__)

最终验证成功!
在这里插入图片描述

七、TensorRT优化

1.安装TensorRT

按照官方给的安装指导手册。在下载的tensorrtx文件中,按照官网给的步骤:在tensorrtx/READMA.md
参考:【动手学深度学习(二)】Yolov5-TensorRT的配置与部署

2. 权重文件转化为TensorRT模型

下载:
下载yolov5-6.1模型,以及对应C++的tensorrtx-yolov5-v6.0

git clone -b v6.0 https://github.com/ultralytics/yolov5.git 
git clone -b yolov5-v6.0 https://github.com/wang-xinyu/tensorrtx.git

生成yolov5s.wts文件

下载yolov5s.pt到yolov5工程的weights文件夹下;
复制tensorrtx/yolov5文件夹下的gen_wts.py文件到yolov5工程下。

conda activate yolov5env  #conda activate py36
cd /xxx/yolov5            #/home/zq/yolov5-6.1

python gen_wts.py -w yolov5s.pt -o yolov5s.wts

在这里插入图片描述
进入tensorrtx/yolov5文件夹下

 cd /home/zq/tensorrtx-yolov5-v6.0/yolov5

修改相关配置
然后进入/tensorrtx-yolov5-v6.0/yolov5
修改yololayer.h文件中的CLASS_NUM为你训练的模型的标签类别数
在这里插入图片描述

然后编译

mkdir build

在这里插入图片描述

复制yolov5-6.1工程中生成的yolov5s.wts文件到tensorrtx-yolov5-v6.0/yolov5/build文件夹中。并在build文件夹中打开终端:

cmake ..
make  #每次修改CLASS_NUM都要make一次
sudo ./yolov5 -s yolov5s.wts yolov5s.engine s   #v5.0   sudo ./yolov5 -s [.wts] [.engine] 

在这里插入图片描述
在这里插入图片描述
用它自带的图片测试一下

sudo ./yolov5 -d yolov5s.engine ../samples

在这里插入图片描述
最终结果
生成yolov5s.engine文件,这便是我们tensort部署所需要的模型文件
在这里插入图片描述

注意:若该阶段出现错误,考虑是否是以下出现了问题
若.engine文件无法生成,可能是生成的.wts文件有问题。建议你从以下几点排查:
1.你的yolov5版本和tensorrtx-yolov5版本对应吗
2.如果对应的话,你有没有修改yolov5的网络结构呢?如果修改了结构,那么tensorrtx-yolov5里也要修改
3.有没有按照readme里的操作生成.wts文件。
参考:
1.https://blog.csdn.net/qq_40691868/article/details/117331162#commentBox
2.https://blog.csdn.net/weixin_54603153/article/details/120079220#commentBox

3.模型部署

修改 /home/zq/tensorrtx-yolov5-v6.0/yolov5/yolov5_trt.py中的categories类别
在这里插入图片描述
最后在yolov5环境中执行yolov5_trt.py脚本。
在这里插入图片描述
实现效果
在这里插入图片描述

参考:

1.https://blog.csdn.net/abc13526222160/article/details/106710163?spm=1001.2014.3001.5501
2.https://blog.csdn.net/maum61/article/details/98218802?spm=1001.2014.3001.5501
3.https://blog.csdn.net/asayuki_fsk/article/details/112391488?spm=1001.2014.3001.5501
4.TensorRT(1)-介绍-使用-安装

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值