NVIDIA AGX Xavier环境配置
简介
最近有在Xavier上部署算法的需求,熟悉了一下基础环境配置过程,由于踩了不少坑才最后跑出来一个opencv实时跟踪的demo,故此记录一下。
Anaconda环境配置
对于深度学习而言,环境的隔离还是很重要的,其中Anaconda是本人最常使用的虚拟环境管理器,由于Xavier是基于ARM架构的,常用的Anaconda方法并不适用,这里参考kev的教程,下面简述一下安装过程。
首先,下载安装shell脚本,使用下述命令。
wget https://github.com/Archiconda/build-tools/releases/download/0.2.3/Archiconda3-0.2.3-Linux-aarch64.sh
下载之后,使用下述命令进行Anaconda的安装,
bash Archiconda3-0.2.3-Linux-aarch64.sh
在kev的教程中使用sudo权限进行安装,这样后续的环境创建等有关的conda命令都需要sudo权限,所以我这里直接以用户权限进行安装。安装过程主要是协议的接受、安装目录的选择(默认家目录)、是否建立conda命令的环境变量(更新~/.bashrc文件),都同意即可。
此时输入conda -V
命令查看安装情况会找不到命令,需要重开终端或者source ~/.bashrc
更新环境变量。
关于Anaconda的使用与其他平台一致(可以参考我的博客),创建环境等命令都是相同的。国内源修改使用下述命令即可,前两条命令是添加两个清华源,最后一条命令是设置安装包时源可见。使用国内源会大大加快环境创建和包安装的速度。
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
常用包安装
关于包的安装kev也给出了相关的教程,需要注意的是,由于Xavier基于ARM架构,直接pip安装的软件可能下载后无法安装,参照kev的教程安装常用包是比较合理的选择。
下面重点提两个包的安装,分别是PyTorch和opencv-python。
PyTorch的安装就需要手动下载合适的版本的whl文件,如PyTorch1.4(兼容CUDA10.2)的下载地址如下。具体的不同版本下载地址,这里给出链接。
https://nvidia.box.com/shared/static/c3d7vm4gcs9m728j6o5vjay2jdedqb55.whl
下载后使用pip install *.whl
命令安装即可,*
代表文件名。我个人安装的CUDA10.0所以选择的torch1.3.0,安装在虚拟环境下,安装后测试可用性如下图。
在Xavier不能通过pip install opencv-python
,因为没有相关的发行版。需要先手动编译安装opencv,再在相关的Python环境的site-packages目录下添加文件。
源码安装opencv的参考链接如下,该链接是一个一键安装的shell脚本,也可以自己按照源码安装的思路下载opencv源码进行安装。
安装后默认会建立Python2的opencv-python的链接,这其实没什么用,一方面Python2已经逐渐不被维护,另一方面即使建立了Python3的链接也不会建立到虚拟环境的Python环境中,所以这里需要手动操作。
操作代码如下,其中源文件在系统的Python目录的dist-packages目录下(系统Python不同则可能和下述代码命令不同),目标文件夹为当前Python环境的site-packages目录下。
sudo cp /usr/lib/python3.6/dist-packages/cv2/python-3.6/cv2.cpython-36m-aarch64-linux-gnu.so /home/nvidia/archiconda3/envs/torch/lib/python3.6/site-packages
当前虚拟环境的site-packages目录通过激活环境后which python
命令查看,把最后的/bin/python
替换为/lib/python3.6/site-packages
即可。
使用下述代码进行测试,结果如下。
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
cv2.imshow('cam', frame)
if cv2.waitKey(10) == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
补充说明
本文主要介绍Xavier上环境的基本配置,关于一些特殊的包的安装(如scipy)使用pip进行编译安装时会失败,这里直接使用conda安装对应包即可。