jetson nano 部署yolov5s(从配置环境到推理)

前言

前几天完成了在树莓派上部署yolov5s,但是效果实在不好,大概0.3的fps,在老师的支持下又买了一块jetson nano的板子,开始折腾。

以下是拿到板子装过系统,从更换源到实现yolov5部署的一个完整过程。

参考

https://blog.csdn.net/IamYZD/article/details/119618950

https://blog.csdn.net/u012254599/article/details/99291834

https://blog.csdn.net/weixin_45454706/article/details/110346822

一、配置系统(列出来了步骤,详细内容网上很多)

下载系统

SD卡格式化

把下载的系统烧录进SD卡

插卡开机,进行一些初始化设计

我的系统是ubuntu 18.4   cuda 10.2   python是nano自带的3.6

二、更换国内源

我是已经用板子连上了wifi

1.备份

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo gedit /etc/apt/sources.list

2.删除打开的文本内所以东西,写入如下源

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

3.配置cuda

我们下载完系统,是自带cuda的,但需要配置环境变量才能使用,打开命令行添加环境变量即可,我这里是cuda10.2如果不是使用我的镜像就需要根据自己的cuda版本去填写路径了

输入命令

gedit ~/.bashrc

在最下面添加,并保存

export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_ROOT=/usr/local/cuda

输入命令进行应用

source ~/.bashrc

可以在终端输入nvcc - V ,就可以成功看到自己的cuda版本了

三、配置环境

1.更新系统和包

sudo apt-get update

sudo apt-get upgrade

2.安装pip3

sudo apt-get install python3-pip python3-dev -y

3.安装jtop,可以在终端查看自己电脑cpu和gpu情况

sudo -H pip3 install jetson-stats
sudo jtop		#运行jtop(第一次可能不行,第二次就好了)  按【q】退出

4.配置所需要的库(配置就完了,少配置了后面安装包会出错)

sudo apt-get install build-essential make cmake cmake-curses-gui -y
sudo apt-get install git g++ pkg-config curl -y
sudo apt-get install libatlas-base-dev gfortran libcanberra-gtk-module libcanberra-gtk3-module -y
sudo apt-get install libhdf5-serial-dev hdf5-tools -y
sudo apt-get install nano locate screen -y
sudo apt-get install libfreetype6-dev -y
sudo apt-get install protobuf-compiler libprotobuf-dev openssl -y
sudo apt-get install libssl-dev libcurl4-openssl-dev -y
sudo apt-get install cython3 -y
sudo apt-get install gfortran -y
sudo apt-get install libjpeg-dev -y
sudo apt-get install libopenmpi2 -y
sudo apt-get install libopenblas-dev -y
sudo apt-get install libjpeg-dev zlib1g-dev -y

5.安装opencv所需要的支持包

sudo apt-get install build-essential -y
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev -y
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev -y
sudo apt-get install libxvidcore-dev libx264-dev -y
sudo apt-get install libatlas-base-dev gfortran -y
sudo apt-get install ffmpeg -y

6.更新cmke,这一步是必须的,因为arm架构的很多东西都要从源码编译

wget http://www.cmake.org/files/v3.13/cmake-3.13.0.tar.gz
tar xpvf cmake-3.13.0.tar.gz cmake-3.13.0/  #解压
cd cmake-3.13.0/
./bootstrap --system-curl	# 漫长的等待,做一套眼保健操...
make -j4 #编译  同样是漫长的等待...
echo 'export PATH=~/cmake-3.13.0/bin/:$PATH' >> ~/.bashrc
source ~/.bashrc #更新.bashrc

7.U盘兼容,之后的步骤可能需要使用U盘把文件拷入开发板,但是对于大容量设备可能会出现无法挂载,一条安装命令解决

sudo apt-get install exfat-utils

四、配置yolov5所需环境

1.安装torch和torchvision

我所配置的是1.8的torch和0.9的torchvision

文件我已经上传在下面链接,其中torch是编译好的直接安装就行了,torchvision需要我们编译一下

链接:https://pan.baidu.com/s/1cGS-gYdnEvT-9M0ve3hacg 
提取码:01F6 

下载好之后把里面的torch和torchvision文件夹弄到nano中

先下载torch

sudo pip3 install 把torch.whl拖到终端中

然后对于torchvision这里没有现成的要编译

cd torchvision	# 进入到这个包的目录下
export BUILD_VERSION=0.9.0
sudo python3 setup.py install		# 安装(估计要20分钟不止吧)

2.检查一下我们的这俩东西下载好没

python3
import torch
import torchvision
print(torch.cuda.is_available())	# 这一步如果输出True那么就成功了!
quit()	# 最后退出python编译

3.这里遇到了两个错误

①我在这里import torchvision 出错,错误如下

jetson nano 部署yolov5s(从配置环境到推理)_第1张图片

原因:缺少pillow包

解决方法:sudo pip3 install pillow

②but我安装pillow报错

Command"/usr/bin/python3-u-c"importsetuptools,tokenize;__file__='/tmp/pip-build-pj404zn8/pillow/setup.py';f=getattr(tokenize,'open',open)(__file__);code=f.read().replace('\r\n','\n');f.close();exec(compile(code,__file__,'exec'))"install--record/tmp/pip-ch8hv_jb-record/install-record.txt--single-version-externally-managed--compile"failedwitherrorcode1in/tmp/pip-build-pj404zn8/pillow/

安装pillow时报错,

原因:缺少支持包

解决方法:安装支持包sudo apt-get install libjpeg-dev

4.安装剩下requirement.txt中所需要的包

sudo pip3 install matplotlib==3.2.2
sudo pip3 install --upgrade Cython	#更新一下这个包
sudo apt-get remove python-numpy
sudo pip3 install numpy==1.19.4
sudo pip3 install scipy==1.4.1.	# 这个包安装巨慢,耐心等待
sudo pip3 install tqdm==4.61.2
sudo pip3 install seaborn==0.11.1
sudo pip3 install scikit-build==0.11.1	# 安装opencv需要这个包
sudo pip3 install opencv-python==4.5.3.56	# 不出意外也是一个相当漫长的过程
sudo pip3 install tensorboard==2.5.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo pip3 install --upgrade PyYAML	# 我升级到了5.4.1 也可以sudo pip3 install PyYAML==5.4.1
sudo pip3 install thop
sudo pip3 install pycocotools

安装以上包的时候有的会很慢,不要以为是卡着了,其实实在努力安装中,耐心等待

五、推理

进入我们yolov5源码文件夹下

sudo python3 detect.py

进行推理

六、总结

经过我们以上的步骤,就可以成功实现部署

yolov5s未加优化的情况下在jetson nano上的推理速度大概就是9-10fps

接下来我会进行tensorrt模型转换,等转换完成了再记录一下

附加:增加Swap交换空间

依次输入以下命令,可以使交换空间增加4G,解决一些耗尽内存的程序出错。

sudo fallocate -l 4G /var/swapfile

sudo chmod 600 /var/swapfile

sudo mkswap /var/swapfile

sudo swapon /var/swapfile

sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab'

①错误:打开调用摄像头的绿屏

解决方法:  更改调用参数

sudo python3 detect.py
改为
sudo python3 detect.py  --source 1

②错误:

配置环境中,在进行更新时报错:nvidia-l4t-bootloader的错误

Setting up nvidia-l4t-bootloader (32.4.4-20201027211359) ...
3448-300---1--jetson-nano-qspi-sd-mmcblk0p1
Starting bootloader post-install procedure.
ERROR. Procedure for bootloader update FAILED.
Cannot install package. Exiting...
dpkg: error processing package nvidia-l4t-bootloader (--configure):
 installed nvidia-l4t-bootloader package post-installation script subprocess returned error exit status 1
Processing triggers for libc-bin (2.27-3ubuntu1.3) ...
Errors were encountered while processing:
 nvidia-l4t-bootloader
E: Sub-process /usr/bin/dpkg returned an error code (1)

解决方法:

$ sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/
$ sudo mkdir /var/lib/dpkg/info/
$ sudo apt-get update
$ sudo apt-get -f install
$ sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old/
$ sudo rm -rf /var/lib/dpkg/info
$ sudo mv /var/lib/dpkg/info_old/ /var/lib/dpkg/info/

输入上述命令之后,在执行 sudo apt-get update 和 sudo apt-get upgrade 就不会有问题了。

你可能感兴趣的:(linux)