Jetson Nano部署YOLOv5与Tensorrtx加速

一、烧录镜像

1、Jetson Nano烧写系统镜像

Jetson Nano是一款形状、外接口类似于树莓派的嵌入式主板,搭载了四核Cortex-A57处理器,GPU则是拥有128个NVIDIA CUDA核心的NVIDIA Maxwell架构显卡,内存为4GB的LPDDR4,存储则为16GB eMMC 5.1,支持4K 60Hz视频解码。

系统有很多AI开发板和加速器模块,但Nvidia拥有一大优势------它与桌面AI库直接兼容,不需要你将深度学习模型转换为任何特殊格式即可运行他们。

它使用几乎所有每个基于Python的深度学习框架都已使用的相同的CUDA库进行GPU加速。这意味着你可以采用现有的基于Python的深度学习程序,几乎无需修改就可以在Jetson Nano 2GB上运行它,并且仍然可以获得良好的性能(只要你的应用程序可以在2GB的RAM上运行)。

(一)准备安装

1.电源线(必备)

Jetson Nano中并不包括电源线,您需要自己配一根,具体的参数是5V⎓2A的MicroUSB电源线。可以使用树莓派电源5V⎓2.5A的MicroUSB线。

  1. SD卡 (必备)

Jetson Nano要求最低配置16G的SD卡,但是整个系统刷完SD卡就被用了大概13G,后期还要安装TensorFlow等一些机器学习框架,还有可能要安装样本数据,所以16G的卡是不够用的,我觉得最低32G卡。

  1. 无线网卡 (选配)

Jetson Nano搭载了千兆以太网卡,但是需要接键盘和鼠标网线很麻烦,

所以建议可以买个PCI无线网卡或者USB无线网卡(多占用一个USB口)。

(二)刷系统

Jetson Nano刷系统的方式与Jetson家族的TX系列不一样,直接把镜像写入SD文件即可。

1.下载镜像

英伟达官方地址

https://developer.nvidia.com/embedded/dlc/jetson-nano-dev-kit-sd-card-image

2 . 格式化SD卡

使用SD Card Formatter格式化SD卡

  1. 使用Etcher写入镜像,大概30分钟,镜像写入完毕。

也可以用Win32 Diskimg写入镜像

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

  1. 烧写完成后,将SD卡插入Jetson Nano,开机

  2. 完成一些设置,时区,语言,输入法什么的,就不截图了,看见下图,大功告成

2、Jetson Nano二次烧写系统镜像

本教程是已经烧录过镜像的SD卡,无法被电脑识别盘符导致无法重新烧录镜像的教程。一般是win7系统无法识别烧录过的Ubuntu系统盘符。win10可以识别到很多盘符,使用SDformat软件格式化。

1、确定读卡器是否识别到SD卡。

点击计算机右键选择"管理",选择磁盘管理,找到是否有可移动磁盘,大小为SD卡的大小。

可以使用分区助手删除SD卡所有分区,大概有10个左右,然后格式化磁盘,这样在用那两个软件就可以重新识别到盘符了,然后可以重新烧录镜像。(也可以用磁盘管理选择所有分区,注意不只是在下面删除分区,还有上面列表多出来的很小空间的分区都要删除,删除完后重新新建分区,格式化成fat32就可以正确识别到盘符了)

Jetson nano 系统初始化设置

插卡!开机!最好连接上屏幕。之后的很多命令需要用到root权限,我们需要开启root用户。

sudo passwd root

之后设置密码即可

开发板需要插上网线或者插上免驱动的无线网卡联网!!!

Jetson nano 系统更换源

Jetson Nano 烧录的镜像是国外的源,安装软件和升级软件包的速度非常慢,甚至还会常常出现网络错误,更换源的步骤如下:

①先备份原本的source.list文件。

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

②编辑source.list,并更换国内源。

sudo gedit /etc/apt/sources.list

③按 "i" 开始输入,删除所有内容,复制并更换源。(这里选清华源或中科大源其中一个,然后保存)

清华源

复制代码
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

中科大源

复制代码
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates main restricted
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main restricted
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security multiverse

④更新软件

更新软件

sudo apt-get update

sudo apt-get upgrade

二、NoMachine远程控制

其实就是面对多场景应用时,nano不可能待在同一个地方,要么在车上,在机器人上......我们扛着一

个大显示器到处跑肯定是不太现实的,当然,如果想要锻炼身体的同学另说

1.Windows下载NoMachine

首先需要在你的win10上下载NoMachine,官网下载地址,exe文件安装就行。https://www.nomachine.com/

2.Jetson Nano下载NoMachine

在NoMachine官网下载armv8版本的软件包到Jetson Nano

3.NoMachine配置

在客户端PC下载Nomachine软件,设置局域网ip为Nano所在地址

在Nano激活nomachine application服务(search your computer可以搜到,如下图)

服务激活后,右上角会有个!M标志

三、开始配置所需的环境,安装各种支持包

1、配置CUDA

Jetson nano内置好了CUDA,但需要配置环境变量才能使用,打开命令行添加环境变量即可,我这里是CUDA10.2如果不是使用我的镜像就需要根据自己的CUDA版本去填写路径了。

#打开终端,输入命令

复制代码
vi .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

2、安装pip3

复制代码
sudo apt-get update
sudo apt-get install python3-pip python3-dev -y

二次安装,安装成功后如下图所示


3、安装jtop

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

二次安装,安装成功后如下图所示

5、安装所需要的依赖环境

复制代码
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

二次安装,安装成功后如下图所示

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

二次安装,安装成功后如下图所示

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

8、U盘兼容

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

复制代码
sudo apt-get install exfat-utils

二次安装,安装成功后如下图所示

四、安装pytorch

Jetson nano上的Linux其实不是x86架构,而是类似手机的ARM架构,这也就导致它的很多包和普通的Linux上的不是通用的。也是踩过的坑之一,pytorch官网下载的包,在实际使用时无法调用开发板的显卡(这是个大问题,失去显卡的开发板算力暴跌!)。这里的PyTorch以及接下来的torchvision等包都需要安装Nvidia官网给出的版本。

1.下载PyTorch1.8

我已经下载好了,现成的安装包下载链接奉上:

安装包

链接:https://pan.baidu.com/s/1lx69c0e5TV3qROt4PbGsDQ?pwd=1234

提取码:1234

2.安装PyTorch1.8

把下载的东西用U盘拷到Jetson nano开发板上,建议放桌面上,好找。

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.安装torchvision 0.9.0

同样需要特殊的匹配Jetson nano的版本,步骤三中个人链接里包含了这个torchvision。把下载的包拷到开发板上,同样建议放桌面上。

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

3.检验一下是否成功安装

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

六、安装使YOLOv5成功运行需依赖的包

注意:下载过程如果因为网络原因失败的话可以在命令后加上 -i https://pypi.tuna.tsinghua.edu.cn/simple 来使用清华镜像源

1、

复制代码
sudo pip3 install matplotlib==3.2.2
sudo pip3 install --upgrade Cython	#更新一下这个包

2、numpy有些特殊,已经自带了,但是是apt-get安装的,所以先卸掉原来的,也方便之后包的管理

复制代码
sudo apt-get remove python-numpy
sudo pip3 install numpy==1.19.4
sudo pip3 install scipy==1.4.1.	# 这个包安装巨慢,耐心等待

3、这之后的一些包我在安装时都没有指定版本,这里的指令是根据之后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

4、根据YOLOv5官方给的所需的安装包清单,仔细对照,查漏补缺的给安装好。

安装命令输入格式:sudo pip3 install ...

复制代码
# base ----------------------------------------
matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.1.2
Pillow
PyYAML>=5.3.1
scipy>=1.4.1
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.41.0

# logging -------------------------------------
tensorboard>=2.4.1
wandb

# plotting ------------------------------------
seaborn>=0.11.0
pandas

# export --------------------------------------
coremltools>=4.1
onnx>=1.8.1
scikit-learn==0.19.2  # for coreml quantization

# extras --------------------------------------
thop  # FLOPS computation
pycocotools>=2.0  # COCO mAP

5、运行检测脚本

在源码的detect.py同目录下,打开终端,运行下面的命令。

效果还可以,启动模型要很久,预测效果还可以。之后就可以在自己的inference中的output中看到自己预测的图片了。

接着打开detecy.py检测脚本,修改一下检测资源参数,改为调用摄像头进行实时视频预测,大概10fps,应该说不算差,但是是有提升办法的。

复制代码
python3 detect.py --source /path/to/xxx.jpg --weights /path/to/best.pt --conf-thres 0.7

或者是:

复制代码
python3 detect.py
复制代码
python3 detect.py --source 0
相关推荐
智驱力人工智能3 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
工程师老罗3 小时前
YOLOv1 核心结构解析
yolo
Lun3866buzha3 小时前
YOLOv10-BiFPN融合:危险物体检测与识别的革新方案,从模型架构到实战部署全解析
yolo
Katecat996634 小时前
YOLOv8-MambaOut在电子元器件缺陷检测中的应用与实践_1
yolo
工程师老罗5 小时前
YOLOv1 核心知识点笔记
笔记·yolo
工程师老罗10 小时前
基于Pytorch的YOLOv1 的网络结构代码
人工智能·pytorch·yolo
学习3人组13 小时前
YOLO模型集成到Label Studio的MODEL服务
yolo
孤狼warrior13 小时前
YOLO目标检测 一千字解析yolo最初的摸样 模型下载,数据集构建及模型训练代码
人工智能·python·深度学习·算法·yolo·目标检测·目标跟踪
水中加点糖15 小时前
小白都能看懂的——车牌检测与识别(最新版YOLO26快速入门)
人工智能·yolo·目标检测·计算机视觉·ai·车牌识别·lprnet
前端摸鱼匠1 天前
YOLOv8 环境配置全攻略:Python、PyTorch 与 CUDA 的和谐共生
人工智能·pytorch·python·yolo·目标检测