一、准备工具
二、烧录
三、搭配环境
四、试跑Yolov5
五、tensorRT部署yolov5
前言:
在工作或学习中我们需要进行部署,下面这篇文章是我亲自部署jetson nano之后做出的总结,包括自己遇到一些报错和踩坑,希望对你们有所帮助 : )
一、准备工具
- 读卡器
- SD卡
- 小螺丝刀
- 网线(更改语言需要网络)
二、烧录
烧录镜像就是要把SD卡里的东西给完全清除,好比我们电脑重装系统一样,把SD卡格式化。
插上读卡器后会自动识别U盘,我的电脑会识别很多,弹出很多个U盘选项,这个是正常现象,只格式化一个就可以了。
1. 在本地的电脑上下载烧录的镜像,可以去官网自行下载,下载的时候需要看好版本,不然会出问题,我下载的版本是4.4.1,下载的网址如下:
JetPack SDK 4.4.1 archive | NVIDIA Developer
2. 下载好之后进行解压:
3. 然后我们需要下载烧录SD卡的工具,网址如下:
Get Started With Jetson Nano Developer Kit | NVIDIA Developer
下载完之后是一个.exe可执行文件,运行安装就可以了。
4. 开始烧录镜像
运行上面下载好的Etcher之后是这样的,选择完镜像之后会自动识别SD卡,让后点击flash
这个是正在烧录的界面,会自动烧录2遍(大约20分钟左右)
5.烧录完成,弹出读卡器,插卡开机。
6.开机之后,简单设置一下(密码、地区、时间),然后会就是和我们本地电脑Ubuntu界面差不多。
三、搭配环境
1. 配置CUDA
首先打开终端(ctrl+alt+t),输入以下命令:
sudo gedit ~/.bashrc
输入密码后进入文档:
鼠标滚轮滚到文档最下面,输入下面命令,然后按ctrl+s保存:
export CUDA_HOME=/usr/local/cuda-10.2
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.2/bin:$PATH
验证CUDA是否安装配置成功 :
nvcc -V
出现这个就证明配置成功了。
*报错*
我输出之后会出现读取异常,或者不允许保存的提示,然后运行nvcc -V的时候显示命令不可执行,这个多输入几次或者关闭终端再输入几次命令
2. 配置conda
jetson nanoB01的架构是aarch64,与windows和liunx不同不同,所以不能安装Anaconda,可以安装一个替代它的archiconda。
在终端输入以下下载命令:
wget https://github.com/Archiconda/build-tools/releases/download/0.2.3/Archiconda3-0.2.3-Linux-aarch64.sh
下载成功。
* 报错*
遇到下载一半或者下载到99%之后报错的问题。
这个问题是因为堆栈小的原因,改一下堆栈大小就可以了。
先查一以下自己的系统堆栈大小,用这个命令:
ulimit -a
stack size是堆栈的大小,我原来是8192,需要改成102400
直接用代码 ulimit -s 102400 修改,改完之后:
下载好之后运行这个命令:
bash Archiconda3-0.2.3-Linux-aarch64.sh
接下来就是傻瓜式的安装:
安装完之后配置环境变量:
sudo gedit ~/.bashrc
在最初打开的文档里的最后一行加上这个命令:
export PATH=~/archiconda3/bin:$PATH
查看conda的版本号:
conda -V
3. 创建你自己的虚拟环境:
conda create -n xxx(虚拟环境名) python=3.6 #创建一个python3.6的虚拟环境
conda activate xxx #进入虚拟环境
conda deactivate #(退出虚拟环境)
4. 换源
首先需要备份一下sources.list文件,执行后终端没有响应
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
进入sources.list内部
sudo gedit /etc/apt/sources.list
进入之后,ctrl+a删除所有内容,之后将以下内容复制进去保存退出。
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
然后更新软件列表,保存到本地:
sudo apt-get update
更新软件:
sudo apt-get upgrade
升级所有的安装包,并解决依赖关系
sudo apt-get dist-upgrade
5. 安装pip
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
更新pip到最新版本
pip3 install --upgrade pip #如果pip已是最新,可不执行
6. 下载torch和torchvision
nano上安装需要去英伟达官网下载所需版本,我这里是1.8.0,网址如下:
PyTorch for Jetson - version 1.10 now available - Jetson Nano - NVIDIA Developer Forums
下载好后,这里推荐一个工具(MobaXterm)用于连接板子进行互传,当然你也可以直接下载到U盘,用U盘实现互传。
具体操作可以看这个博主的博客:MobaXterm(终端工具)下载&安装&使用教程_蜗牛也不慢......的博客-CSDN博客
连接成功后把可以在本地下载的东西解压后,传过去,建议传到home目录下。
7. 安装torch
在torchvision文件夹的目录下右键,进入终端,然后进入你创建的虚拟环境,输入以下命令:
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
pip install torch-1.8.0-cp36-cp36m-linux_aarch64.whl
如果遇到网络问题下载不了,就在第二个命令下载后面加上清华下载镜像:
-i https://pypi.tuna.tsinghua.edu.cn/simple
安装torch时,一定要安装numpy,不然的话显示你安装torch成功,但是你conda list是找不到的。
sudo apt install python3-numpy
测试torch是否安装成功:
import torch
print(torch.__version__)
*报错*
在测试torch是否安装成功时报错:非法指令(核心已转储)。
export OPENBLAS_CORETYPE=ARMV8
8. 安装torchvision,逐个执行以下命令(如果执行第三个命令报错,继续执行第四第五行命令,如果不报错就直接cd ..)
cd torchvision
export BUILD_VERSION=0.9.0
sudo python setup.py install
python setup.py build
python setup.py install
cd .. #(中间有个空格)
*报错*
在测试时如果报错PIL,就安装pillow,命令如下(在第二步如果报权限错误,就在开头加sudo,或在结尾加--user)
sudo apt-get install libjpeg8 libjpeg62-dev libfreetype6 libfreetype6-dev
python3 -m pip install -i https://mirrors.aliyun.com/pypi/simple pillow
到这里为止环境就全部搭建完毕了,下面开始部署Yolo5。
四、试跑Yolov5
1. 去官网上下载需要的版本,我这里下载的是5.0版本,下载的时候要把对应的权重也要下载。网址如下:
ultralytics/yolov5 at v5.0 (github.com)
在这里选择版本:
权重网址如下:
Releases · ultralytics/yolov5 (github.com)
2. 下载完或者使用工具将yolo5和权重文件拖到主目录之后,使用cd进入yolo5文件目录下,在终端下载依赖项:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
*报错*
遇到下面的问题是因为numpy版本过高导致的,降低以下版本就可以了。
把版本降低到1.19.4:
pip install numpy==1.19.4 -i https://pypi.tuna.tsinghua.edu.cn/simple
解决完报错之后,在运行上面的命令,会自动下载需要的安装包,其他的都是很快的,但是到opencv的时候需要花费很长很长很长很长的时间......,当安装opencv时会出现Building wheel for opencv-python (pyroject.toml)... 这种情况正常现象,是opencv在编译,继续等就可以了,我编译了2个多小时...
3. 经过N长时间的等待,安装好所有依赖包后,将权重文件拖到yolov5文件夹根目录下,在yolov5的根目录下打开终端,执行以下命令:
python3 detect.py --weights yolov5s.pt
测试一下是没问题的,接下来我们开始部署yolov5。
五、tensorRT部署yolov5
1. tensorRT官网下载yolov5,网址如下,确定下载是v5.0版本:
mirrors / wang-xinyu / tensorrtx · GitCode