吃饱了撑的搞了个nano来玩玩,记录一下配置torch=1.8.0,torchvision =0.9.0和yolov5的过程,遇到的报错以及解决方法
先把项目git下来
git clone https://github.com/ultralytics/yolov5.git
如果git不下来可以把https改成git,下面所有git命令都适用
git clone git://github.com/ultralytics/yolov5.git
下载成功后看一下环境要求requirements.txt
# pip install -r requirements.txt
# base ----------------------------------------
matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.1.2
Pillow
PyYAML>=5.3.1
scipy>=1.4.1
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.41.0
# logging -------------------------------------
tensorboard>=2.4.1
# wandb
# plotting ------------------------------------
seaborn>=0.11.0
pandas
# export --------------------------------------
# coremltools>=4.1
# onnx>=1.8.1
# scikit-learn==0.19.2 # for coreml quantization
# extras --------------------------------------
thop # FLOPS computation
pycocotools>=2.0 # COCO mAP
torch,torchvision后面单独装,所以可以先装一些其他的库
pip3 install matplotlib pillow pyyaml tensorboard tqdm scipy
sudo apt-get install python3-matplotlib
Nvidia官网上给出了用于Jetson系列的torch环境安装包以及安装方法,跟着命令走就行,这方面遇到问题的话可以先找找下面到issue,十分有用。地址在这:https://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-8-0-now-available/72048
这里列有不同torch版本的安装包,选择对应版本下载就行,yolov5的requitments.txt里写的torch>=1.7.0,我就选择安装1.8.0版本的torch
安装命令如下:
wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.8.0-cp36-cp36m-linux_aarch64.whl
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
pip3 install Cython
pip3 install numpy torch-1.8.0-cp36-cp36m-linux_aarch64.whl
有可能这个whl下载很慢,可以先下好然后直接pip install
百度云连接:
链接:https://pan.baidu.com/s/1X-DhFmItE59KN5nVb36gwQ
提取码:eb3b
下载这个torch-1.8.0-cp36-cp36m-linux_aarch64.whl
在第一次安装的时候torch和numpy已经安装成功,但是import numpy和import torch的时候都会出现非法指令(核心已转储)
的错误,这个问题找了半天没发现解决办法,最后还是在官网的issue里找到的,作者这么回答:
在导入前输入下面命令即可正常import
export OPENBLAS_CORETYPE=ARMV8
还是在那个网址找到对应版本的torchvision,对应关系如下:
使用命令:
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision # see below for version of torchvision to download
cd torchvision
export BUILD_VERSION=0.9.0 # where 0.x.0 is the torchvision version
python3 setup.py install --user
cd ../ # attempting to load torchvision from build dir will result in import error
pip install 'pillow<7' # always needed for Python 2.7, not needed torchvision v0.5.0+ with Python 3.6
如果是python3.6,最后两条可以不用管
下面打开python检查一下torch和torchvision有没有安装好
在编译过程中我首先遇到了fatal error: cuda.h:没有那个文件或目录
这个报错,虽然直接输入nvcc -V会显示CUDA的版本,但是很奇怪找不到cuda.h,所以使用如下命令添加环境变量
vim ~/.bashrc
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_ROOT=/usr/local/cuda
参考博客上面三行已经够来,但我的还是会报错fatal error,于是又添加下面两行
export PATH=$PATH:/usr/local/cuda-10.2/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.2/lib64
保存之后运行
source ~/.bashrc
这样就没问题了
在之前安装torch1.6.0和torchvision0.7.0时,遇到了fatal error: libavcodec/avcodec.h:没有那个文件或目录 \avformat.h(40) : fatal error C1083: 无法打开包括文件:“libavcodec/avcodec.h”: No such file or directory
的报错,这里参考这位博主的解决办法在Jetson Xavier NX上安装torchvision编译报错:fatal error: libavcodec/avcodec.h: No such file or directory
具体操作就是更改torchvision的setup.py源码,找到if has ffmpeg 改为if False即可
首先下载权重文件,然后运行下面命令检测图片
python detect.py --source data/images/ --weights weights/yolov5s.pt
python detect.py --source 0 --weights weights/yolov5s.pt