英伟达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版本运行任务
- jetpack和cuda和torch和torchvision版本对应关系
- opencv的安装
- python相关包的搜索下载,最后通过XXX pypi搜索来的最快
- 源码编译python的相关包,安装的时候通过--prefix=~/XXX选择安装路径
- torch安装,下载的.whl文件无法使用3.7的环境安装
- torchvision安装,使用python setup.py install命令无法找到,但是用python3.6可以
- /etc/profile文件中加入export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/OpenBLAS/lib
- 区分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