最近研究中需要使用NVIDIA Jetson AGX Xavier人工智能开发组件。由于也是第一次接触相关硬件设备,遇到了很多困难。在这里记录整个Jetson AGX Xavier组件的学习过程(其中很多内容网上有比较详细的教程,我就直接引用参考的相关资源,感谢这些文章作者的付出),希望能够帮助到有同样需求的人。
在学习笔记2中我们为NVIDIA Jetson AGX Xavier安装了系统和一些基本组件,本篇继续进行运行代码所需要的环境搭建。
1 miniforge安装及创建虚拟环境
出于个人习惯决定先安装conda以建立虚拟环境(本步非必须)。由于开发组件系统是ARM架构(aarch64)的,无法使用anaconda。这里参考博主 布衣小张 的文章[1],安装了miniforge并进行换源。miniforge具有和anaconda相似的功能和指令。安装完成后,可以执行以下指令创建虚拟环境,进入及退出虚拟环境。
conda create -n envname python=3.6 //创建虚拟环境,envname为自定义的环境名
conda activate envname //进入虚拟环境
conda deactivate //退出虚拟环境
由于后续NVIDIA官方似乎只提供了pytorch在python3.6下的aarch64编译版本安装文件,所以我在虚拟环境中安装的是python 3.6。如果可以找到对应更高版本的pytorch,安装相应版本python即可。本文后续操作均在虚拟环境中进行。
2 pytorch安装
官方网站NVIDIA Jetson Zoo提供了pytorch的arrch64编译版本及安装教程。
首先结合python和JetPack版本从Jetson Zoo下载相应whl文件。我的JetPack是4.5.1,因此下载了pytorch 1.6.0。(从jetson zoo下载似乎需要梯子)
下载完成后,在whl文件处打开终端,并执行以下指令安装pytorch。安装torch的同时会自动安装numpy和future。
sudo apt-get install libopenblas-base libopenmpi-dev python3-pip
pip3 install Cython
pip3 install numpy torch-1.6.0-cp36-cp36m-linux_aarch64.whl
安装完成后,在虚拟环境中执行下列指令以确保python能正确调用pytorch。
python //进入python
import torch
torch.__version__ //若安装成功且能正常调用,此处能输出安装的pytorch版本
quit() //退出python
我在初次执行以上代码时报错:Illegal instruction (core dumped)。查阅资料发现若安装的是numpy 1.19.5则会出现以上错误,而安装pytorch时自动安装的numpy即1.19.5。Github上讨论给出了一些不同解决方法,我选择了比较简单的一种:卸载numpy 1.19.5,重新安装numpy1.19.4即可解决。
conda remove numpy
pip install numpy==1.19.4
3 torchvision 安装
根据torch版本选择相应版本的torchvision下载安装即可。下图给出部分对应关系,详细对应关系见pypi网站。
我的pytorch是1.6.0,因此安装torchvision0.7.0。
git clone -b v0.7.0 https://github.com/pytorch/vision
cd vision
sudo python3 setup.py install
我在初次执行以上指令时报错:fatal error: libavcodec/avcodec.h: No such file or directory。参考博主 点亮~黑夜 的文章[2],通过修改setup.py文件,注释掉if has ffmpeg
改为if False
,从而解决问题。
该图片来自 <https://blog.csdn.net/weixin_41010198/article/details/109862917>
安装完成后,在虚拟环境中执行下列指令以确保python能正确调用torchvisin。
python //进入python
import torchvision
torchvision.__version__ //若安装成功且能正常调用,此处能输出安装的torchvision版本
quit() //退出python
4 cv2安装
实际上,在按照学习笔记2进行NVIDIA Jetson AGX Xavier开发组件刷机时已经自动安装了OpenCV,只需要将python虚拟环境链接到OpenCV库即可。
首先在终端执行以下指令查找编译好的cv2库文件的路径。
sudo find / -iname "*cv2*"
// 得到路径 /usr/lib/python3.6/dist-packages/cv2/python-3.6/cv2.cython-36m-aarch64-linux-gnu.so
之后进入虚拟环境的site-packages文件夹下,并链接到查找到的cv2库文件路径即可。
cd /home/miniforge-pypy3/envs/virtual/lib/python3.6/site-packages //其中virtual是我建立的虚拟环境名
ln -s /usr/lib/python3.6/dist-packages/cv2/python-3.6/cv2.cython-36m-aarch64-linux-gnu.so cv2.so
安装完成后,在虚拟环境中执行下列指令以确保python能正确调用cv2。
python //进入python
import cv2
cv2.__version__ //若安装成功且能正常调用,此处能输出安装的从v版本
quit() //退出python