jetson nano 部署yolov5s

jetson nano 部署yolov5s

一、配置系统(列出来了步骤,详细内容网上很多)
下载系统
SD卡格式化
把下载的系统烧录进SD卡
插卡开机,进行一些初始化设计
我的系统是ubuntu 18.4 cuda 10.2 python是nano自带的3.6

二、使用官网的镜像,没有更换源,配置环境
1.更新系统和包

sudo apt-get update
sudo apt-get upgrade或sudo apt-get full-upgrade

可能报错:nvidia-l4t-bootloader的错误
解决办法:参照 jetson nano 部署yolov5s(从配置环境到推理)
2.安装pip3

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

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

sudo -H pip3 install jetson-stats
sudo jtop	

三、修改Nano板的显存
1.打开终端输入:

sudo gedit /etc/systemd/nvzramconfig.sh

2.修改nvzramconfig.sh文件:
在打开的文档中找到mem值,修改mem的值,如下:
找到的 mem = $((("${totalmem}"/2/"${NRDEVICES}")*1024))
我们修改的 mem = $((("${totalmem}"*2/"${NRDEVICES}")*1024))
把 / 修改为 *
3.重启:
reboot
4.终端输入:free -hsudo jtop
可查看到swap已经变为7.7G

四、配置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版本了
jetson nano 部署yolov5s_第1张图片

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

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

安装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

更新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

解决大容量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中

先在PC端下载torch,然后用U盘COPY到Nano中,再安装,见下

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

jetson nano 部署yolov5s_第2张图片

安装需要略漫长的等待…
2、然后对于torchvision这里没有现成的要编译

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

3、检查一下我们的这俩东西下载好没

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

4、破坑指南
可能的错误,主要是依赖包问题,我在安装时并未遇到,应该是之前手动安装了包。
①import torchvision 出错,错误如下
jetson nano 部署yolov5s_第3张图片

原因:缺少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
5.安装剩下支持yolov5的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的测试,去github下载yolov5源码。
依旧是传输到nano板子上,进入目录运行detect.py。
在这里插入图片描述
jetson nano 部署yolov5s_第4张图片
减小内存损耗
关闭用户图形界面。
sudo systemctl set-default multi-user.target
sudo reboot
开启用户图形界面。
sudo systemctl set-default graphical.target
sudo reboot

你可能感兴趣的