前言

因为一次竞赛接触了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://developer.nvidia.com/embedded/dlc/jetson-nano-dev-kit-sd-card-image

2.使用SD Card Formatter格式化TF卡
这个软件网上搜一下比较容易的

3.使用Etcher写入镜像
附上下载地址:

https://www.balena.io/etcher/

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://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
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://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

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://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-9-0-now-available/72048

个人下载链接:

#BaiDu
https://pan.baidu.com/s/1Nfm9w1DfE2k_cZQ1zTykMQ
提取码:zpsa
#CSND
https://download.csdn.net/download/IamYZD/21027946
(第一次上传资源,应该是设置了免费了...

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://github.com/pytorch/vision torchvision

上一步没成功的话不要紧,步骤【三】中我的个人链接里包含了这个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://pan.baidu.com/s/1UGJX7d2sSx04whjbQb3RTA
提取码:q0f3
#CSDN
还在审核中...(2021.08.21.00.47)

至于如何使用yolov5这篇文章里暂且不做说明了,但是推荐一个B站up主的讲解

https://www.bilibili.com/video/BV1tf4y1t7ru?p=4

六、安装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://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

七、安装Pycharm

#这个不是必须的,但是我为了调试代码方便就安装了
#但是要注意的是jetson nano在跑这个原版yolov5时内存是很吃紧的,最终运行还是建议用命令行来跑
1.安装JDK(显然jetson nano没有自带这个)
#想不到吧,Pycharm用JAVA写的…

sudo apt install openjdk-11-jdk

2.安装PyCharm
之后的步骤参考这位博主的博客就可以了

https://blog.csdn.net/zhuanshu666/article/details/73554885

最后

经过以上配置,不出意外的话各位的jetson nano上已经可以正常跑yolov5了
在源码的detect.py同目录下

python3 detect.py

主要重心还是在于帮助大家完成jetson nano上的配置问题,如果对于yolov5代码的本身有问题,可以参考一个第【五】步那位B站up主的讲解

后续&延伸

受限于Jetson nano的性能,yolov5的s模型也只有1秒9帧这样的识别速度,应该说不算差,但是是有提升办法的
这里也给出传送门
1.安装pycuda

https://blog.csdn.net/weixin_44501699/article/details/106470671

2.TensorRT加速

源代码下载地址:
链接:https://pan.baidu.com/s/1SFWCmEHe6cn_uVfig_bJDQ
提取码:x97q
https://blog.csdn.net/ailaier/article/details/116270962
#文章里面提到的的DeepStream我没有配置成功...
https://blog.csdn.net/hahasl555/article/details/116500763
# 这位的的代码是有些小问题的,但是他的评论区给出了解决办法————
auto yolo = addYoLoLayer(network, weightMap, det0, det1, det2);
改为
auto yolo = addYoLoLayer(network, weightMap, "model.33", std::vector<IConvolutionLayer*>{det0, det1, det2, det3});

之后有时间可能也会写一篇关于tensorRT加速的博客(也可能不会吧,其实网上也已经存在相当的文献了,我po出来的这几个应该已经足够了…)

感谢大家看到了最后一行

Jetson nano部署Yolov5 ——从烧录到运行 1:1复刻全过程相关推荐

  1. Jetson Nano部署YOLOv5与Tensorrtx加速——(自己走一遍全过程记录)

    说在前面 搞了一下Jetson nano和YOLOv5,网上的资料大多重复也有许多的坑,在配置过程中摸爬滚打了好几天,出坑后决定写下这份教程供自己备忘. 事先声明,这篇文章的许多内容本身并不是原创,而 ...

  2. Jetson nano部署Yolov5目标检测 + Tensor RT加速(超级详细版)

            一.准备工具   二.烧录         三.搭配环境         四.试跑Yolov5         五.tensorRT部署yolov5 前言: 在工作或学习中我们需要进行 ...

  3. jetson nano 部署yolov5s

    jetson nano 部署yolov5s 一.配置系统(列出来了步骤,详细内容网上很多) 下载系统 SD卡格式化 把下载的系统烧录进SD卡 插卡开机,进行一些初始化设计 我的系统是ubuntu 18 ...

  4. Jetson nano部署YOLOv7

    目录 前言 一.YOLOv7模型训练 1. 项目的克隆和必要的环境依赖 1.1 项目的克隆 1.2 项目代码结构整体介绍 1.3 环境安装 2. 数据集和预训练权重的准备 2.1 数据集 2.2 预训 ...

  5. Jetson nano部署YOLOv8

    目录 前言 一.YOLOv8模型训练 1. 项目的克隆和必要的环境依赖 1.1 项目的克隆 1.2 项目代码结构整体介绍 1.3 环境安装 2. 数据集和预训练权重的准备 2.1 数据集 2.2 预训 ...

  6. 基于jetson nano和yolov5 的 车行人检测(一)

    毕业设计ing,但中途要出去一波.做个记录,备忘. 基于jetson nano和yolov5 的 车行人检测. 目前已经做的工作: 1.数据集的制作,原本是用的老师给的自己拍的一些数据(含夜间),但效 ...

  7. Jetson Nano 部署(5):: Jetson Nono YOLOv5实战部署流程

    文章目录 1. 烧入系统镜像 1) 下载系统镜像 2) 格式化 SD 卡 3) 使用 Etcher 写入镜像 4) 使用 SD卡开机 2. 远程登录工具安装 1)安装和使用远程登录工具PuTTY 2) ...

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

    前言 前几天完成了在树莓派上部署yolov5s,但是效果实在不好,大概0.3的fps,在老师的支持下又买了一块jetson nano的板子,开始折腾. 以下是拿到板子装过系统,从更换源到实现yolov ...

  9. Jetson Nano配置YOLOv5并实现FPS=25

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 一.版本说明 JetPack 4.6--2021.8 yolov5-v6.0版本 使用的为yolov5的yolov5n.pt,并利用tensorr ...

最新文章

  1. DFS Codeforces Round #299 (Div. 2) B. Tavas and SaDDas
  2. python的编程模式-Python设计模式之状态模式原理与用法详解
  3. Bean的依赖注入的数据类型
  4. Excel表格内容导出到页面
  5. c语言行列坐标是先行后j,C语言学习之行列操作
  6. linux中央服务器,如何在Linux上搭建一个Git中央仓库
  7. RocketMQ入门到入土(四)producer生产消息源码剖析
  8. android项目中有哪几种依赖关系,Android Studio项目中三种依赖的添加方式
  9. urllib2 request 模拟伪装浏览器
  10. mysql 索引 insert_mysql优化:定期删数据 + 批量insert + 字符串加索引为什么很傻
  11. 用concat批量生成MySQL查询语句
  12. springboot2.0处理自定义异常始终返回json
  13. 一个很好的makefile例子(经典)
  14. FF14 界面 字变得很小 一种适用于高分辨率笔记本或屏幕下FF14窗口或无边框模式的性能优化方法
  15. 分享一个互联网职业教育免费视频、资料、机构综合类资源平台!
  16. 主引导记录(MBR)的反汇编分析
  17. 原来我是个自由主义者
  18. 蓝牙耳机延迟受什么影响?有没有办法能完全解决延迟?
  19. icp许可证到底是什么?企业一定要办理吗?
  20. USB转TTL 下载线 线序定义

热门文章

  1. “实现能力”与“设计能力”
  2. SlySoft.AnyDVD.HD.v6.4.6.2.Multilingual.WinAll.Incl.Keygen.and.Patch-BRD
  3. 2007年中国互联网网站市场表现研究报告
  4. 宝藏又小众的鸟壁纸素材网站分享
  5. ISO/TS22163:2017 铁路认证是什么?
  6. OPTIX使用little tips
  7. sql文件太大无法导入问题的解决
  8. css3四个花瓣,css3实现花瓣loading效果(keyframes+animation+transform)
  9. XCTF_MOBILE17_Android2.0
  10. hander标签,footer标签,aside标签