英伟达Jetson xavier agx的GPU部署yolov5

1、基础环境列表

Jetpack 4.4
CUDA 10.2
python=3.6.9
这两个版本比较重要,原因是需要装torch要大于1.7版本的,而大于1.7版本的torch需要装Jetpack,
相关版本,可查看:https://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-9-0-now-available/72048
对应版本的.whl下载地址:https://elinux.org/Jetson_Zoo#PyTorch_.28Caffe2.29
查看方法可以通过jtop然后下面6INFO来看
jtop安装方式为
sudo -H pip install jetson-stats

 2、安装venv虚拟环境

在这里没有使用conda因为我的conda环境出错了,没有找出来问题,
如果没有问题可以看一下这篇博客:https://blog.csdn.net/qq_40691868/article/details/114379061
下面安装venv虚拟环境
$ sudo apt install python3-venv
在这里说一下venv的使用:
创建虚拟环境
  $ python3.6 -m venv yolov5venv

进入虚拟环境
  $ source yolov5venv/bin/activate

退出虚拟环境
  $ deactivate 

    除了venv和conda还有一种虚拟环境是Virtualenv,

 具体安装与使用方法参考:https://blog.csdn.net/u011119817/article/details/109622480

3、下载和配置yolov5

3.1、下载yolov5
  $ git clone -b v5.0 https://github.com/ultralytics/yolov5.git
  $ cd yolov5
3.2、环境配置
  激活虚拟环境
    $ source ~/yolov5venv/bin/activate
    开始安装相关包(首先安装Cython用来源码安装其他的包)
    $ pip install Cython
  
  首先安装matplotlib
    $ pip install matplotlib==3.2.2
    如果安装不成功可以升级一下pip
    $ pip install --upgrade pip
    如果还不成功就源码编译,首先去下载相关版本源码
    搜索matplotlib pypi然后进入,点击左边release history,找到3.2.2然后点击,然后点击左边Download files然后找到最下面,
    下载 matplotlib-3.2.2.tar.gz这个文件,然后解压该文件,进入该文件夹内
    执行下面命令,(--prefix目的是将matplotlib安装到yolov5venv/lib/python3.6/site-packages/文件夹下)
    $ python setup.py install --prefix=~/yolov5venv
    我们可以通过pip list查看是否安装上
    $ pip list
  
  torch和torchvision这两个安装比较复杂
    首先解释torch这个安装的.whl文件在前面已有下载路径,(需要VPN,推荐扩展Hoxx扩展)
    本文下载了torch1.7.0版本的.whl文件,进入下载好的该文件夹下
    $ pip install torch-1.7.0-cp36-cp36m-linux_aarch64.whl

  下面我们开始安装torch1.7.0对应的torchvision,其中torchvision版本为0.8.1,可以通过git下载
    $ git clone --branch v0.8.1 https://github.com/pytorch/vision.git torchvision-0.8.1
    $ cd torchvision-0.8.1
      编译它之前我们需要下载一个OpenBLAS
      $ git clone https://github.com/xianyi/OpenBLAS.git
      $ cd OpenBLAS/
      安装gfortran
      $ sudo apt install gfortran
      编译OpenBLAS
      $ make FC=gfortran
      安装OpenBLAS
      $ sudo make install
      软连接
      $ sudo ln -s /opt/OpenBLAS/lib/libopenblas.so  /usr/lib/libblas.so.3
      $ sudo ln -s /opt/OpenBLAS/lib/liblapack.so.3 /usr/lib/liblapack.so.3
      配置环境变量,在~/.bashrc文件中加入export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/OpenBLAS/lib
      $ sudo gedit ~/.bashrc
      $ source ~/.bashrc
      然后退出OpenBLAS文件夹,进入torchvision-0.8.1文件夹,
    输入下面命令,其中python是写python3.6,不然无法在pip list下面看到,也可以输入python然后 import torchvision,如果用python来装就会显示没有安装,其中--prefix是指定文件夹,本文安装后会在yolov5venv/lib/python3.6/site-packages下
    $ python3.6 setup.py install --prefix=~/yolov5venv
    同样,我们可以通过pip list查看是否已经安装了torchvision

  查看是否正确安装torch
    $ python
    >>import torch
    >>
    如果正常就会如上面所示,如果出现了Illegal instruction(core dumped)问题
    解决方式如下
    $ sudo gedit /etc/profile
    在文件后面加入
    export OPENBLAS_CORETPYE=ARMV8
    $ source /etc/profile
    这时可能退出了虚拟环境,然后再次source一下,然后再进入虚拟环境(记住上面的,可以要经常刷新一下,出现这个问题就刷新一下)
  然后就是安装cv相关的
    这里需要拷贝cv2.cpython-36m-aarch64-linux-gnu.so到~/yolov5venv/lib/python3.6/site-packages/文件夹下
    可以进入/usr/local/lib/python3.6/dist-packages文件夹下拷贝也可以通过命令
    $ cp /usr/local/lib/python3.6/dist-packages/cv2.cpython-36m-aarch64-linux-gnu.so ~/yolov5venv/lib/python3.6/site-packages/
    之后就可以通过pip安装其他包就可以了。

 4、运行yolov5

本文使用的是相机进行更新的,可以通过命令
$ ls /dev/vi*
查看是否有video0,然后运行下面命令
$ python3.6 detect.py --source 0 --weights weights/yolov5s.pt --conf 0.25

5、总结

本次的难点总结,其中遇到的问题也奇奇怪怪的,总之终于完成了这次yolov5的GPU版本运行任务
  1. jetpack和cuda和torch和torchvision版本对应关系
  2. opencv的安装
  3. python相关包的搜索下载,最后通过XXX pypi搜索来的最快
  4. 源码编译python的相关包,安装的时候通过--prefix=~/XXX选择安装路径
  5. torch安装,下载的.whl文件无法使用3.7的环境安装
  6. torchvision安装,使用python setup.py install命令无法找到,但是用python3.6可以
  7. /etc/profile文件中加入export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/OpenBLAS/lib
  8. 区分venv和virtual虚拟环境区别

6、参考链接

【Jetson-Nano】1.基础安装环境配置

https://blog.csdn.net/u011119817/article/details/109622480

【Jetson-Nano】2.Tensorflow和Pytorch的安装

https://blog.csdn.net/u011119817/article/details/109616474#t10

Jetson AGX Xavier配置yolov5虚拟环境

https://blog.csdn.net/qq_40691868/article/details/114379061

Jetson AGX Xavier安装Archiconda虚拟环境管理器与在虚拟环境中调用opencv

https://blog.csdn.net/qq_40691868/article/details/114362278

OpenBLAS安装

https://blog.csdn.net/mywmy/article/details/96993537

原文地址:https://www.cnblogs.com/stacso/p/15130329.html