本文详细记录jetson nano基于ultralytics部署yolov8环境。

首先如果你不是jetson nano而是jetson的其它硬件,可以参照官网给出的教程进行配置(国内代理进去会比较慢)

首先烧录镜像、软件包更新等等参照此教程(重点在2. Jetson Nano环境配置,1、3作用不大):Jetson Nano 从入门到实战(案例:Opencv配置、人脸检测、二维码检测)_jetson nano 从入门到实战(案例:opencv配置、人脸检测、二维码检测)-CSDN博客https://blog.csdn.net/qianbin3200896/article/details/103760640?spm=1001.2014.3001.5506

部署前的准备

如何给jetson nano联网

1、jetson nano上的有线网口,直接将网线接上就可联网
2、可以使用无线网卡,去各大平台搜就行,一定要买支持Linux系统的无线网卡

如何给jetson nano传输文件

1、u盘。
2、WinSCP,下载:官网 , 网盘:https://pan.baidu.com/s/1bu5KWzNYSCM1CE8YXw6mfw?pwd=mz45 
下载安装进入后,会看到如下界面:

点击上述圈红的New Tab 

在jetson nano的终端里输入ifconfig
找到jetson nano的IP地址

返回WinSCP,对应填写hostname,name,password

链接成功后在右边就可以看到jetson nano的文件结构,接着就可以将你想传输的文件复制粘贴至jetson nano里。首先在jetson nano创建ultralytics文件夹,把接下来需要的文件全部拖进来
依赖文件:链接: https://pan.baidu.com/s/1CtMmKRTx3m63OUw7TNBdtw?pwd=qmgr 提取码: qmgr 
--来自百度网盘超级会员v4的分享
文件下载链接:


接着点击设——>外观,然后添加图片,将背景替换成小猫壁纸



部署环境

安装python

由于系统自带的python版本为3.6.9,而yolov8所能支持的最低版本的python为3.8,且3.8为很稳定的python版本,所以我们需要安装3.8版本的python(安装时常较长,10min左右)

sudo apt update
sudo apt install -y build-essential checkinstall
sudo apt install -y libreadline-gplv2-dev libncursesw5-dev libssl-dev \
  libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev \
  zlib1g-dev wget

sudo mv Desktop/ultralytics/Python-3.8.18.tgz /usr/src/ #将已经下载好的python3.8预编译包移动至系统中
cd /usr/src/
sudo tar xzf Python-3.8.18.tgz #解压
cd Python-3.8.18

# 编译和安装
sudo ./configure --enable-optimizations
sudo make -j4  # 如果你 Jetson Nano 是 4 核,使用 -j4
sudo make altinstall  # 使用 altinstall 避免覆盖系统默认 python

创建虚拟环境 

接着创建一个python虚拟环境,将系统环境与所配置的环境分隔开来(创建conda环境也是一样的,不过在jetson nano中是利用在这里我就不赘述了)
 

#创建虚拟环境
python3 -m venv myenv_yolo
#激活虚拟环境
source myenv_yolo/bin/activate

#激活环境后,环境内应该是很“干净的”,没有任何包
pip list #查看当前环境的包

 系统提示pip版本较低,根据提示指令进行更新

pip install --upgrade pip

安装核心python包 

 接下来正式进入yolo的环境配置

#安装 YOLOv8(Ultralytics 推出的目标检测框架) 的核心 Python 包。
pip install ultralytics

安装完成后输入pip list查看所安装的python包

安装适配的torch与torchvision

这里直接安装的torch与torchvision版本无法适配jetson nano的cuda环境,cuda10.2所适配的版本为torch1.10以及torchvision0.11.1,详情见:部署时遇到的天坑-CSDN博客

下载已经安装好了的torch以及torchvision预编译包

#卸载不可用的torch以及torchvision包
pip uninstall torch torchvision

#下载适配的pytorch, torchvision预编译包
cd Desktop/ultralytics/pytorch.rar/pytorch
pip install *.whl


 下载已经安装好了的tensorRT预编译包(为利用tensorRT加速准备)

cd Desktop/ultralytics/tensorRTONNX/tensorRT+ONNX
pip install *.whl

检查当前的gpu是否可用,输出True代表可用,否则不可用

python3.8
import torch
# 检查是否有可用GPU
print("PyTorch GPU可用:", torch.cuda.is_available())  

若在导入torch报缺少相关包的错误,只需要根据错误安装相应的python编译包即可(这都是小问题)

我这里是缺少libopenmpi-dev(如果还是缺少其他python包,将错误粘贴给chatgpt,根据chatgpt提示解决问题即可)
或者是某个包的版本较低或较高等等,python包出错是最好解决的,不要着急

#下载前可以先更新一下系统软件包
sudo apt update
sudo apt upgrade
sudo apt install libopenmpi-dev

 

 到这里部署就已经全部完成

接下来实现实时检测

cd Desktop/ultralytics
python3.8 real_detection.py#代码也可以自己编写,具体代码含义可问AI

输出:

 每张图片的推理时间为160ms,差不多5、6帧这样

使用 TensorRT加速,这会生成 yolov8n.engine 文件,然后你可以用 TensorRT 直接加载并推理,极大加快速度。(如果报错,原因之一可能是之前的四个.whl预编译包没下载好)

yolo export model=yolov8n.pt format=engine#此代码需要在模型的同级目录下运行

运行完毕在同级目录中会找到上述.engine文件,接着更换python文件中的模型根目录即可

# 加载预训练的 YOLOv8n 模型
model = YOLO("./yolov8n.engine")

70ms,大概15帧这样子。这里指的是推理时间,加上图像灰度处理,输出结果,显示到屏幕上等等,总时间应该在100ms左右(导致显示帧率在10帧左右),不过jetson nano推理模型后就可以立马跟32通信,无需输出结果等等这些冗余的时间,所以响应帧率是可以在15帧的,基本上足够用了

模型训练

最后将自己训练好的模型传输进jetson nano后并转换成.engine模型即可,模型训练参考:
roboflow使用教程-CSDN博客
没yolo基础的看这个,可以快速速成
【【大作业-18】手把手教你用YOLOv8训练自己的数据集(原理解析+代码实践)】https://www.bilibili.com/video/BV1KHp2eREFZ?vd_source=c885d5b32bdd6c1bdaba2c0eb1e388b8

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐