jetson agx xavier:从亮机到yolov5下tensorrt加速

深度学习 嵌入式硬件 arm开发 arm python


重要的下载资源链接放在前面:

jetpack4.5资源

主要内容记录在了自己的石墨文档里,自己习惯性地修改起来比较快,可能后续小修小改在那边更新。这里就做一个csdn的拷贝造福各位。

石墨文档《xavier配置环境流程记录》
 


目录

重要:

流程:

亮机:

硬盘挂载(非必需):

apt换源:

语言环境:

安装nomachine:

安装jtop:

安装cuda/cudnn/tensorrt:

安装archiconda:

安装numpy/cv2/matplotlib库:

安装torch/torchvision:

pycuda:

tensorrt和yolov5的模型转换(onnx):

最终效果:

参考文章:


重要:

  1. 系统自带的python不要删,图形界面依赖自带的python运作
  2. 基础配置的32g硬盘不够配置gpu版本模型,需要加硬盘【实际上本次配置的xavier版带有128g固态,但是看起来没有挂载所以没显示,自己检查一下】
  3. pytorch和torchvision使用普通方法只能装cpu版本,装不了gpu版本
  4. 下载什么什么特殊文件,一般用自己机子带vpn的下载起来比较快,然后远程传给xavier。【特别是git!】
  5. sudo用户和普通用户拥有不同的~/.bashrc(本身~的位置就不同),保险起见可以都修改

流程:

亮机:

连网线、电源线。显示屏通过hdmi线连接(双typec线无法显示)。鼠标键盘的usb接口通过自带的typec-usb拓展槽连接。

除了大块的xavier本体,小块的是摄像机配件。找本体和摄像机配件的相应圆圈和槽可以确定位置,然后装上。

按电源键即可点亮。

硬盘挂载(非必需):

这部分不是我操作的,给个参考链接吧

NVIDIA Xavier AGX固态硬盘的安装以及/home的扩展挂载_啊哈ㄚ的博客-CSDN博客

apt换源:

xavier自带系统为ubuntu18,源中相应代号为bionic(例,ubuntu 20代号为focal)

通常情况清华源效果最好。

换源方法ubuntu通用,网上找,不赘述。

内容:

deb Index of /ubuntu-ports/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror bionic-updates main restricted universe multiverse

deb-src Index of /ubuntu-ports/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror bionic-updates main restricted universe multiverse

deb Index of /ubuntu-ports/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror bionic-security main restricted universe multiverse

deb-src Index of /ubuntu-ports/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror bionic-security main restricted universe multiverse

deb Index of /ubuntu-ports/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror bionic-backports main restricted universe multiverse

deb-src Index of /ubuntu-ports/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror bionic-backports main restricted universe multiverse

deb Index of /ubuntu-ports/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror bionic main universe restricted

deb-src Index of /ubuntu-ports/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror bionic main universe restricted

修改之后,sudo apt update进行名单更新(可以upgrade一次,但不必要)

推荐关掉自动upgrade,否则每次开机都会尝试软件更新(unattend upgrade),耗费时间【通过图形界面的“软件与更新”,设置相应更新选项/或者参考中级篇——ubuntu系统关闭unattended upgrades无人值守更新功能_玩转智能机器人的博客-CSDN博客_unattended upgrade,进入终端,sudo dpkg-reconfigure unattended-upgrades,选择 否-keep*****,然后reboot重启】

pip/pip3同样换清华源,网上自行搜寻。

语言环境:

点击图形界面中的语言支持,将菜单和窗口的语言设置为中文。设置完毕后,默认文件夹名称为中文,如“下载”代替“download”,终端操作不方便,推荐按照Ubuntu更改主目录文件名为英文 - 知乎进行修改。

默认输入法只有纯英文,在图形界面中寻找语言支持界面并修改(由于我的亮机途中重装了图形界面,和原始界面用的可能不是同一个,不一定有参考价值。我是在图形页面的输入法页面直接安装了pinyin输入法使用,网上看到的大多数是安装谷歌拼音输入法)

安装nomachine:

直接前往nomachine官网,选择download for arm。下载之后,进入终端,找到文件所在位置,sudo dpkg -i nomachine_[version]_arm64.deb进行安装。

安装成功之后,xavier本体的键鼠就可以不再使用了,通过远程操作即可(远程机也需要同样安装nomachine)。

nomachine操作和直接操作仍然有部分区别,如ctrl+alt+t不能唤出新终端,会进入nomachine自己的界面,但总体来说够用。

安装jtop:

终端输入jtop,看是否安装。

无,则使用pip安装:sudo pip install jetson-stats【如无法安装,应该是系统只带了python2,先apt install python3.6,然后pip改pip3】

安装之后,输入jtop进入界面,选择左下方5号ctrl页面,将boot选项调为e(enable),将jetson_clocks调整为running,控制开机后风扇启动

注:jetson_clocks为强制性能最大化选项,会提高耗电,不过装机过程没必要省电。

在jetson页面中选择左下方6号info界面,查看cuda与cudnn、tensortrt是否安装,有则跳过下一步。

安装cuda/cudnn/tensorrt:

官方方法是通过Jetson 下载中心 | NVIDIA Developer下载sdkmanager,装在一台ubuntu机上,然后连接ubuntu机与xavier,使用sdkmanager下载相应文件。实际操作中又要装win-ubuntu虚拟机,装完了usb-typec线连接xavier和机子还没识别出来。

网上的一种错误方法是apt-get install cuda-toolkit,实际上无论哪一个apt源都会显示此软件包不存在

实际解决方法是直接去网上找百度网盘里别人从adkmanager下载好的资源(找到的是jetpack4.5的,实际机子是jetpack4.6的,但是可以用)(已保存到自己的百度云账号链接:百度网盘 请输入提取码,此外也上传了torch和torchvision的两个whl文件,是python3.6的)参考xavier nx 安裝cuda, cudnn, tensorrt, opencv, 中文輸入法 - wangaolin - 博客园,选择文件下载(cuda一个,cudnn三个,tensortrt一个)、远程传输至xavier、进行安装、移动和添加path。

然后回到jtop查看info页面,检查是否安装并检测到。

安装archiconda:

去github搜索archiconda,选择Archiconda3-0.2.3-Linux-aarch64.sh下载,远程传输到xavier,然后sh Archiconda3-0.2.3-Linux-aarch64.sh安装(后续可以把这个文件删掉)(安装时好像会修改~/.bashrc文件,可以在普通用户和root用户下都跑一次,保险起见)。

创建conda环境:

conda create -n six python==3.6【先apt装python3.6,3.7、3.8的应该也可以,不推荐3.9往上】

首次激活conda时,如conda activate six失败,使用source activate six【应该是路径没有设置进去,需要重启或者source指令,或者先source ~/.bashrc】

后续所有文件在conda环境下安装,不影响原有环境。

conda不需要换源。【尝试换清华源时反而影响使用。conda-forge可以考虑】

(更新)conda实在链接不上还原,选择北外源成功

conda config --add channels Index of /anaconda/pkgs/free/ | 北京外国语大学开源软件镜像站 | BFSU Open Source Mirror 

conda config --add channels Index of /anaconda/pkgs/main/ | 北京外国语大学开源软件镜像站 | BFSU Open Source Mirror 

conda config --add channels Error 

conda config --add channels Index of /anaconda/cloud/msys2/ | 北京外国语大学开源软件镜像站 | BFSU Open Source Mirror

conda config --set show_channel_urls yes 

conda config --add channels Index of /anaconda/cloud/pytorch/ | 北京外国语大学开源软件镜像站 | BFSU Open Source Mirror

另外在channels下面加一个remote_read_timeout_secs: 2000能加长超时时间,注意taml格式

安装numpy/cv2/matplotlib库:

正常pip install opencv_python(或者下一步安装torch/torchvision中,使用参考2中指令,也有),然后

gedit ~/.bashrc

底部加入如下语句:export OPENBLAS_CORETYPE=ARMV8

点击保存

source ~/.bashrc

之后测试import numpy(不加这一句,会在import numpy时出现非法指令,核心已转储语句)

matplotlib(3.3.4)可能跳一堆红字,要求你下载Download The FreeType Project from SourceForge.net,照做就是,然后在/home/new/archiconda3/envs/six下面建一个build文件夹,把freetype解压进去,再重新运行一次

安装torch/torchvision:

参考1:Installing PyTorch for Jetson Platform :: NVIDIA Deep Learning Frameworks Documentation【nvidia官方,但是使用torch==1.12.0,在cpu版torch==1.12.0测试yolov5时出现了兼容问题,不如参考2中选择多样】

参考2:xavier安装torch-gpu_这个名字真好听的博客-CSDN博客_安装torch-gpu【其中的文件可以靠自己的机子下载,也可以在xavier上下载(修改参考1中export TORCH_INSTALL为新的下载网址)】

参考3:Jetson AGX Xavier安装torch、torchvision且成功运行yolov5算法_围白的尾巴的博客-CSDN博客_jetson xavier安装torchvision【详细,torch==1.7.1】

torchvision建议直接去github下载,pytorch/vision库,使用git clone太慢了

在进行torchvision编译时可能遇到报错Command '['which', 'x86_64-conda_cos6-linux-gnu-c++']' returned non-zero exit status 1,解决方法是:conda install gxx_linux-64

pycuda:

pip 安装

大片红字报错xlocale.h不存在

参考在jetson上安装pycuda时可能遇见的报错及解决方案 - 知乎 (zhihu.com)

把pycuda降级到2019.1.2使用

tensorrt和yolov5的模型转换(onnx):

tensorrt相应文件也在百度网盘链接里(见安装cuda/cudnn那一块儿),在直接装那个名字以tensorrt开头的deb包之前还需要装依赖,一起下下来然后dkpg安装就行。文件和安装顺序参考NX边缘盒环境安装 - 知乎 (zhihu.com)

使用yolov5自带的模型转换需要装onnx作为tensorrt模型转换的中介,直接装onnx的时候可能红字报错,这个时候尝试

sudo apt-get install  libprotobuf-dev protobuf-compiler

pip install pybind11

根据onnx官方建议,从源码编译protobuf吧onnx/onnx:机器学习互操作性的开放标准 (github.com),也可以apt安装protobuf,但是怎么加cmake参数我不会使用

装完onnx【onnx-simplifier没装,有个metadata名称对不上的问题,后面看可能也不是必要的】直接跑yolov5的export,会提示ONNX: export failure: cannot import name 'builder'。这个时候参考python - 导入错误:无法从“google.protobuf.internal”导入名称“生成器” - 堆栈溢出 (stackoverflow.com)

sudo find ~/environment -name builder.py找出builder文件在哪里【我的在/home/new/environment/protobuf-21.9/python/google/protobuf/internal/builder.py】,搬到/home/new/archiconda3/envs/six/lib/python3.6/site-packages/google/protobuf【和参考文章不同的是,这里是conda six环境下面的lib】,然后在跑export就没问题了!

最终效果:

export.py转换yolov5s.pt

cpu跑yolov5s.pt

gpu跑yolov5s.pt

gpu跑yolov5s.engine【tensorrt加速】

参考文章:

胎儿式保姆级教程:Jetson Xavier NX镜像烧录、开机配置、中文配置、风扇设置、远程桌面配置、文件传输配置、pycharm安装环境配置、QQ安装:胎儿式保姆级教程:Jetson Xavier NX镜像烧录、开机配置、中文配置、风扇设置、远程桌面、文件传输配置、pycharm安装环境配置,QQ,opencv(cuda编译),torch(GPU)._Wanto-Fly的博客-CSDN博客

xavier安装torch-gpu:xavier安装torch-gpu_这个名字真好听的博客-CSDN博客_安装torch-gpu

Jetson AGX Xavier系列:https://blog.csdn.net/qq_40691868/category_11366043.html

Jetson AGX Xavier刷机+安装opencv+使用TensorRT加速推理yolo全过程+心路历程:Jetson AGX Xavier刷机+安装opencv+使用TensorRT加速推理yolo全过程+心路历程_SoulGuide的博客-CSDN博客_xavier 推理

猜你喜欢

转载自blog.csdn.net/baidu_41617231/article/details/135378632