【摘要】本篇主要介绍在ARM架构下虚拟环境的配置,以及在虚拟环境中安装pytorch,最终部署yolov5进行实时推理,深度学习相关环境的配置涉及大量坑,只能遇坑填坑,可能还存在大量未知的BUG,不能囊括所有问题。
【本机配置】
- JetPack 4.6
- CUDA 10.2
一、虚拟环境配置
- Xavier采用的是ARM架构,无法下载安装 annoconda ,因此需要安装 miniforge 作为 annoconda 的替代品,选择aarch64的linux版本(下载地址)
- 使用
sh Miniforge-xxx-Linux-aarch64.sh
进行安装 - miniforge 使用指令和anconda完全一样
使用conda create -n yolov5 python=3.6 -y
指令创建yolov5环境
使用conda activate yolov5
激活 - 在创建环境时可能会出现报错
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
大概率是源的问题,可以换源尝试解决,可以多试试各种源,比如:
conda config --prepend channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
二、torch和torchvision安装
- 首先老生常谈的问题,注意CUDA版本,安装对应版本的torch和torchvision,否则后续bug无穷。本机CUDA版本为10.2,因此安装1.7.0的torch与0.8.1的torchvision
- 使用源码安装 torch ,根据对应的JetPack选择对应版本的torch,本机选择torch1.7(eLinux官网)
- 执行
pip install torch-1.7.0-cp36-cp36m-linux_aarch64.whl
安装 torch - 命令行执行 python
import torch
验证 torch是否安装成功,然后执行torch.cuda.is_available()
函数检查是否为GPU版本 - 在安装torch时可能会出现两个问题:
1)报错from torch._C import *ImportError: libopenblas.so.0: cannot open shared obj
,解决方案是安装 libopenblas-dev ,直接使用apt-get安装可能会出现无法定位包的问题,可以通过先安装相关其他包解决,详情见(链接);
2) 在导入 torch 时报错“非法指令 (核心已转储)”,是 numpy 版本的问题,可以通过降低numpy版本解决 - 使用源码安装 torchvision ,注意版本
git clone -b v0.8.1 https://github.com/pytorch/vision.git vision-0.8.1
,然后执行sudo /home/xxx/xxx/envs/yolov5/bin/python3.6 setup.py install
- 安装其他依赖包,可以根据 requirement.txt 进行安装,主要有:
Cython matplotlib numpy Pillow PyYAML scipy tensorboard tqdm seaborn pandas thop pycocotools
- opencv 的安装,由于xavier在安装官方SDK时内置了opencv,因此只需将
/usr/lib/python3.6/dist-packages/cv2/python-3.6
路径下的 cv2.cpython-36m-aarch64-linux-gnu.so 文件,复制到路径/home/xxx/xxx/envs/yolov5/lib/python3.6
文件夹下即可
三、YOLO V5运行实时推理
- 下载yolov5源码(v4.0)
- 下载权重文件,放入weights中
- 运行推理,自动调用摄像头
python detect.py --source 0 --weights weights/yolov5s.pt --conf 0.25