部分参考:https://blog.csdn.net/weixin_50060664/article/details/121960835

虽然新款Xavier开发板已经发布且Xaiver NX的JetPack已经基本不再更新(停留在5.x),但我装的版本JetPack5.1.3(Ubuntu20.04)和原博主的还是有一些区别,因此记录一下。

配置CUDA环境

由于我安装的当前最新的(2024.4)JetPack 5.1.3(Ubuntu20.04),默认似乎已经配置好了环境变量,打开~/.bashrc如下:

使用nvcc -V可以看到版本号:

因此不再需要手动配置环境变量,直接下一步。

配置Pip3并安装需要的库

sudo apt-get update
sudo apt-get install python3-pip python3-dev -y
sudo apt-get install build-essential make cmake cmake-curses-gui -y
sudo apt-get install git g++ pkg-config curl -y
sudo apt-get install libatlas-base-dev gfortran libcanberra-gtk-module libcanberra-gtk3-module -y
sudo apt-get install libhdf5-serial-dev hdf5-tools -y
sudo apt-get install nano locate screen -y

如果你在此前没有安装过pip,那就顺便换个镜像源吧参考链接):

# pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.index-url https://mirror.sjtu.edu.cn/pypi/web/simple
# 清华源速度越来越慢了……建议使用别的源,例如上海交大源

安装所需的依赖

sudo apt-get install libfreetype6-dev -y
sudo apt-get install protobuf-compiler libprotobuf-dev openssl -y
sudo apt-get install libssl-dev libcurl4-openssl-dev -y
sudo apt-get install cython3 -y

更新CMake

使用cmake --version看到目前版本是3.16.3

下载新版本源码(官网https://cmake.org/download/),然后自己编译:

sudo apt-get install libssl-dev libcurl4-openssl-dev
# 从CMake官网复制链接下载,或者手动下载好放到这里
wget https://github.com/Kitware/CMake/releases/download/v3.29.1/cmake-3.29.1.tar.gz
tar -xzvf cmake-3*.tar.gz
cd cmake-3*/
./bootstrap --system-curl	
make -j4 		# 编译

编译完成后,添加环境变量,然后使其生效,这样就安装好了。

# 添加环境变量
echo 'export PATH=~/cmake-3.13.0/bin/:$PATH' >> ~/.bashrc
# 更新.bashrc:
source ~/.bashrc

安装PyTorch

NVIDIA官方提供安装PyTorch的教程https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html#overview__section_xavier_nx,有能力建议直接阅读官方英文版(本文所写的可能不是最新版),以下仅对安装单个版本PyTorch作简单精简和翻译,如果需要安装多个版本请参考官网教程。

安装PyTorch依赖的系统软件包

sudo apt-get -y update
sudo apt-get -y install python3-pip libopenblas-dev

方法一:在线安装

官方教程中写的版本还是2.0.0,这里换成了目前JP5可以使用的最新版Python3.8-PyTorch2.1.0

如果在这里发现安装pipnumpy等很慢,请先去按照上方“配置Pip3并安装需要的库”更换一下国内镜像源。

export TORCH_INSTALL=https://developer.download.nvidia.cn/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
python3 -m pip install --upgrade pip
python3 -m pip install numpy==1.24.4 	# 官方脚本给出的是1.26.1,但实际上Python3.8支持的最后一个numpy版本是1.24.4……
python3 -m pip install --no-cache $TORCH_INSTALL

这里安装numpy时,出现了找不到onnx依赖的错误,手动安装一下:pip install onnx

另外还报错路径没有添加到环境变量,也添加一下:

echo 'export PATH=~/.local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

方法二:离线安装

在这里(PyTorch for Jetson)下载官方构建好的wheel文件,然后将它的路径设为一个临时环境变量:

export TORCH_INSTALL=路径
# 路径改成你放置.whl文件的具体路径,例如/home/jetson/pytorch.whl,根据实际填写
python3 -m pip install --upgrade pip
python3 -m pip install numpy==1.26.1
python3 -m pip install --no-cache $TORCH_INSTALL

~安装特定版本PyTorch

对于一般情况,只需要安装最新版就可以了,可以跳过此部分。

安装特定版本的方法和上面两种方法大同小异,只要修改TORCH_INSTALL变量即可:

export https://developer.download.nvidia.com/compute/redist/jp/v$JP_VERSION/pytorch/$PYT_VERSION

JP_VERSION 为 JetPack 版本,例如 461 代表 4.6.1,50 代表 5.0

PYT_VERSION 为 PyTorch 已构建并发布的wheel版本,至于版本是否能兼容可以参考官网的Compability Matrix

验证PyTorch是否正确安装

终端使用python3进入python环境:

import torch
print(torch.__version__)

如果能正确看到安装的pytorch版本,就说明安装成功了,可以继续。

安装torchvision

这里需要特别注意,PyTorch版本需要和torchvision相对应,因此不能盲目安装最新版,访问PyTorch官方历史版本,看一下你上面安装的PyTorch版本对应的是哪个torchvision版本。

NVIDIA官方也提供了一个小列表帮助你找到对应的版本:

可以看到对应的是torchvision==0.16.1,但别高兴太早,在这小玩意儿上并不能直接使用pip安装torchvision,只能自己下载源代码构建(官方回复

官方提供的指令有一些错误,这里作简单翻译和修改:

错误出现在尝试使用git clone下载源代码的时候,截至目前仓库已经删除了0.16版本的分支源码,只能从release中下载SourceCode压缩包。

sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libopenblas-dev libavcodec-dev libavformat-dev libswscale-dev
wget https://github.com/pytorch/vision/archive/refs/tags/v<version>.tar.gz   # <version> 替换成你需要的torchvision版本
tar -xzvf v0.*.tar.gz
cd vision-*
export BUILD_VERSION=0.x.0  		# 0.x.0替换成你需要的torchvision版本
export MAKEFLAGS="-j6"              
# 这一条是后加的,为了让编译时使用更多的CPU核心,根据你的Jetson设备CPU核心数量而定,我这里是XavierNX为6核CPU
python3 setup.py install --user
cd ../  							# 尝试从构建文件夹加载torchvision会导致import错误

# 如果你还在使用 Python 2.7,需要额外执行下面这条指令, 
# 如果使用 torchvision v0.5.0+ 以及 Python 3.6 或更高版本,请忽略。
pip install 'pillow<7' 

如果你和我一样安装的是pytorch==2.1.0以及torchvision==0.16.1,那么直接执行:

sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libopenblas-dev libavcodec-dev libavformat-dev libswscale-dev
wget https://github.com/pytorch/vision/archive/refs/tags/v0.16.1.tar.gz
tar -xzvf v0.*.tar.gz
cd vision-*
export BUILD_VERSION=0.16.1
export MAKEFLAGS="-j6"              
# 这一条是后加的,为了让编译时使用更多的CPU核心,根据你的Jetson设备CPU核心数量而定,我这里是XavierNX为6核CPU
python3 setup.py install --user
cd ../

接下来就是枯燥又漫长的编译过程……如果闲得慌可以开个htop看看占用……XD

验证torchvision安装是否成功

使用cd ..退出torchvision源码目录,运行python3,然后输入:

import torch
import torchvision
print(torch.__version__)
print('CUDA available: ' + str(torch.cuda.is_available()))
print('cuDNN version: ' + str(torch.backends.cudnn.version()))
exit()

安装YOLOv8

YOLOv8的安装非常简单,只需要一行命令安装此库即可。

pip install ultralytics

安装YOLOv5

下载YOLOv5源码

使用git下载:

git clone https://github.com/ultralytics/YOLOv5.git

安装YOLOv5依赖

cd YOLOv5									# 进入文件夹
python3 -m pip install -r requirements.txt	# 安装依赖

出现一个报错,缺少testresources依赖,安装一下:python3 -m pip install testresources

测试YOLOv5能否运行

首次运行会下载一个YOLOv5s.pt模型,如果没有加速手段,建议手动下载放上去(YOLOv5根目录)

能运行成功说明你的环境配置和YOLOv5的下载都没问题,大功告成!