英伟达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
  打开requirements.txt,把里面的>+都换成==,为了防止pypi更新了,但是yolov5没有更新导致环境错误,然后把opencv-python>=4.1.1,torch>=1.7.0,torchvision>=0.8.1,这几个包注释掉,这几个需要单独安装,其他的可以直接使用下面命令安装
  $ source ~/yolov5venv/bin/activate
  $ pip install -r requirements.txt
  安装小技巧,如果有些包安装失败,可以使用下面方法安装,如果没有问题可跳过。
    首先安装相关包(首先安装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      
3.2、环境配置(主要是torch、torchvision和opencv的配置)
  激活虚拟环境
    $ source ~/yolov5venv/bin/activate
  安装torch1.7.0
    首先解释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
    安装torchvision0.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文件夹
    开始安装torchvision0.8.1 首先下载文件,然后编译安装
      $ git clone --branch v0.8.1 https://github.com/pytorch/vision.git torchvision-0.8.1
      $ cd 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_CORETYPE=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

posted @ 2021-08-11 21:26  stacso  阅读(2824)  评论(0编辑  收藏  举报