前言
因为一次竞赛接触了jetson nano和yolov5,网上的资料大多重复也有许多的坑,在配置过程中摸爬滚打了好几天,出坑后决定写下这份教程供大家参考
事先声明,这篇文章的许多内容本身并不是原创,而是将配置过程中的文献进行了搜集整理,但是所有步骤都1:1复刻我的配置过程,包括其中的出错和解决途径,但是每个人的设备和网络上的包都是不断更新的,不能保证写下这篇文章之后的版本在兼容性上没有问题,总之提前祝大家好运!
参考来源:
https://blog.csdn.net/weixin_45454706/article/details/110346822?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EsearchFromBaidu%7Edefault-2.pc_relevant_baidujshouduan&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EsearchFromBaidu%7Edefault-2.pc_relevant_baidujshouduan
https://blog.csdn.net/beckhans/article/details/89136269
一、 烧录
1.下载镜像 英伟达官方地址:
https:
2.使用SD Card Formatter格式化TF卡 这个软件网上搜一下比较容易的 3.使用Etcher写入镜像 附上下载地址:
https:
4.插卡!开机!
5.开启root用户 之后的很多命令需要用到root权限,我们需要开启root用户
sudo passwd root
之后设置密码即可
#我的这个镜像里面是自带ubuntu18.04,python3.6的,虽然yolov5官方的requirements.txt里面要求了python3.8等等,但其实3.6也是能跑的
二、配置
开发板需要插上网线联网!!! 如果出现错误建议先检查命令是否有输入错误! 如果报错的话建议sudo apt-get update然后再重新尝试一下
1.备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo gedit /etc/apt/sources.list
2.删除所有内容,更换成下面的
deb http:
deb http:
deb http:
deb http:
deb-src http:
deb-src http:
deb-src http:
deb-src http:
3.配置CUDA jetson nano内置好了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
4.查看是否配置成功
nvcc -V
5.安装pip3
sudo apt-get update
sudo apt-get install python3-pip python3-dev -y
6.安装jtop (选装) 安装jtop库这个可以监控自己的设备cpugpu工作状态
sudo -H pip3 install jetson-stats
sudo jtop #运行jtop(第一次可能不行,第二次就好了) 按【q】退出
7.配置需要用到的库
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
8.安装所需要的依赖环境
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
9.安装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
10.更新CMake 这一步是必须的,因为arm架构的很多东西都要从源码编译
wget http:
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
11.U盘兼容 之后的步骤可能需要使用U盘把文件拷入开发板,但是对于大容量设备可能会出现无法挂载,一条安装命令解决
sudo apt-get install exfat-utils
三、安装pytorch
jetson nano上的linux其实不是x86架构而是类似手机的ARM架构,这也就导致它的很多包和普通的linux上的不是通用的。也是我踩过的坑之一,pytorch官网下载的包,在实际使用时无法调用开发板的显卡(这是个大问题,失去显卡的开发板算力暴跌!)。这里的pytorch以及接下来的torchvision等包都需要安装Nvidia官网给出的版本 1.下载pytorch1.8 Nvidia官方链接:(好像是外网…)
https:
个人下载链接:
#BaiDu
https:
提取码:zpsa
#CSND
https:
(第一次上传资源,应该是设置了免费了...)
2.安装pytorch1.8 把下载的包拷到开发板上,建议放桌面上,安装完就可以删了 sudo pip3 install # 直接把.whl拖到命令窗口中,让它自动填充文件位置 安装需要略漫长的等待…
四、安装torchvision 0.9.0版本
pytorch和torchvision版本是需要对应的!
1.提前打上我们需要的依赖(是我踩过的大坑没错了) sudo apt-get install libopenmpi2 sudo apt-get install libopenblas-dev sudo apt-get install libjpeg-dev zlib1g-dev
2.安装 #同样需要特殊的匹配jetson nano的版本 #下载地址是外网…
git clone --branch v0.7.0 https:
上一步没成功的话不要紧,步骤【三】中我的个人链接里包含了这个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编译
五、下载yolov5-5.0源代码
Github上搜索yolov5第一个就是了,上外网有困难的这里也上传了5.0的版本,我在weights文件夹下预置了s、m、l、x四个尺寸的模型
#BaiDu
https:
提取码:q0f3
#CSDN
还在审核中...(2021.08.21.00.47)
至于如何使用yolov5这篇文章里暂且不做说明了,但是推荐一个B站up主的讲解
https:
六、安装yolov5需要的包
#下载过程如果因为网络原因失败的话可以在命令后加上 -i https://pypi.tuna.tsinghua.edu.cn/simple 来使用清华镜像源
sudo pip3 install matplotlib==3.2.2
sudo pip3 install --upgrade Cython #更新一下这个包
#numpy有些特殊,已经自带了,但是是apt-get安装的,所以先卸掉原来的,也方便之后包的管理
sudo apt-get remove python-numpy
sudo pip3 install numpy==1.19.4
sudo pip3 install scipy==1.4.1. # 这个包安装巨慢,耐心等待
#这之后的一些包我在安装时都没有指定版本,这里的指令是根据之后pip3 list补上的
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:
sudo pip3 install --upgrade PyYAML # 我升级到了5.4.1 也可以sudo pip3 install PyYAML==5.4.1
sudo pip3 install thop
sudo pip3 install pycocotools
七、安装Pycharm
#这个不是必须的,但是我为了调试代码方便就安装了 #但是要注意的是jetson nano在跑这个原版yolov5时内存是很吃紧的,最终运行还是建议用命令行来跑 1.安装JDK(显然jetson nano没有自带这个) #想不到吧,Pycharm用JAVA写的…
sudo apt install openjdk-11-jdk
2.安装PyCharm 之后的步骤参考这位博主的博客就可以了
https:
最后
经过以上配置,不出意外的话各位的jetson nano上已经可以正常跑yolov5了 在源码的detect.py同目录下
python3 detect.py
主要重心还是在于帮助大家完成jetson nano上的配置问题,如果对于yolov5代码的本身有问题,可以参考一个第【五】步那位B站up主的讲解
后续&延伸
受限于Jetson nano的性能,yolov5的s模型也只有1秒9帧这样的识别速度,应该说不算差,但是是有提升办法的 这里也给出传送门 1.安装pycuda
https:
2.TensorRT加速
源代码下载地址:
链接:https:
提取码:x97q
https:
#文章里面提到的的DeepStream我没有配置成功...
https:
# 这位的的代码是有些小问题的,但是他的评论区给出了解决办法————
auto yolo = addYoLoLayer(network, weightMap, det0, det1, det2);
改为
auto yolo = addYoLoLayer(network, weightMap, "model.33", std::vector<IConvolutionLayer*>{det0, det1, det2, det3});
之后有时间可能也会写一篇关于tensorRT加速的博客(也可能不会吧,其实网上也已经存在相当的文献了,我po出来的这几个应该已经足够了…)
感谢大家看到了最后一行 😄
|