NVIDIA Jetson Xavier NX 部署 pytorch环境(YOLOv8/v5)
部分参考: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
如果在这里发现安装pip
、numpy
等很慢,请先去按照上方“配置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的下载都没问题,大功告成!
- 感谢你赐予我前进的力量