【jetson nano】jetson nano环境配置+yolov5部署+tensorRT加速模型

这篇具有很好参考价值的文章主要介绍了【jetson nano】jetson nano环境配置+yolov5部署+tensorRT加速模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

jetson nano环境配置+yolov5部署+tensorRT加速模型

断断续续地前后花了一个多星期配置环境以及部署模型,期间也报了无数错误,参考了很多文档,求助了身边的朋友,因此尽可能详细的记录一下这个过程。

致谢

此处感谢Xnhyacinth在配置过程中对我的帮助哈哈哈꒰ঌ( ⌯’ '⌯)໒꒱

主机和jetson nano环境

我主机上的环境是python3.9,cuda11.6
jetson nano环境jetpack4.6,cuda10.2,python3.6(conda)
【jetson nano】jetson nano环境配置+yolov5部署+tensorRT加速模型

jetson系统开机烧录、系统设置、换源

先熟悉各个接口及其功能,具体可参考NVIDIA官方文档(见下文)先组装好买来的风扇,准备好无线网卡,我用的是即插即用的usb版本的无线网卡,JD上有卖,组装时发现jetson nano开发板上有一个跳线帽,那里默认是没有短接的,这样的话只能连接电脑电源,必须先把跳线帽短接才能连接直流电源。
NVIDIA jetson nano官网
刚开始的烧录,sd卡格式化以及相关工作都是对照这个来的,基本没什么问题。完成之后就可以得到一个Ubuntu18.04的系统,然后如果有无线网卡可以直接连接WiFi,我后面一般都是通过xshell连接开发板,直接在主机操作,除了需要查看图片或者视频的时候才接屏幕。
这个阶段我还部分参考了以下文档,在此做一个记录不赘述了。
Nvidia Jetson Nano介绍与使用指南
Jetson Nano 从入门到实战(案例:Opencv配置、人脸检测、二维码检测)这篇文章我主要参考了2.4.1到2.4.3的部分,配置了一些系统环境并换源,因为不换源下载东西速度可能比较慢,具体如何换源的网上资料很多,可以自行查阅。

python环境配置

刚开始我没有用虚拟环境,自带的环境里是python2.7,先下载3.6,又在环境里装了torch,花了好几天所有环境全部装完到最后跑yolov5的时候还是报错,然后请教了其他人,让我安装conda的虚拟环境,于是从头再来,重新装conda环境。前面的坑我就不说了,我们直接安装conda环境。建议卡在这里的也可以直接使用conda环境,确实方便很多。

conda环境

安装conda环境前我们要一直意识到一个问题,jetson nano是aarch64架构的,因此Jetson Nano开发板无法成功安装Anaconda。下载所有环境配置或者网上搜攻略都要加上jetson nano或者arm64位架构。conda环境同样如此,miniconda和anconda都不支持jetson nano,我们需要下载archiconda(Archiconda是用于64位ARM平台的Conda发行版),命令和使用方式和前两者都一样,所以也很方便。下载地址如下。
下载地址
安装完成之后按照在Windows系统上一样创建环境,(可以搜索如何用conda创建环境,我这里装的是python3.6)创建完成后激活环境(我给环境取名为yolov5)

#激活环境
conda activate yolov5

然后我们需要先安装很多包,很多很多。。我参考的是下面这个链接。建议这篇文章的第七步之前都可以按照作者写的走一遍,特别是下载一些包和cmake那段,一条一条命令复制过去安装,不然后面安装环境的时候会发现很多包下载不成功。
Jetson Nano部署YOLOv5与Tensorrtx加速——(自己走一遍全过程记录)

yolov5环境

然后接下来可以直接把你的yolo代码传到开发板上(我用的xftp),也可以先用官方的代码测试一下,先把环境跑一遍。我这里是先用官方代码跑了一遍再放的自己的代码。
先在jetson nano上安装一个git,然后直接

git clone https://github.com/ultralytics/yolov5.git

应该默认的是v7.0,反正是测试无关紧要。git下来之后,cd到yolov5主目录下,直接

pip install -r requirements.txt

应该有一部分下载不成功,先别着急,可以试着看看里面有哪些包需要安装,一个一个安装,尽量选低一些版本,实在不行手动下载安装包到本地然后安装,有找不到的包可以去pypi.org搜索下载,注意选择历史版本,然后选合适的python版本和系统版本,关键词“linux”“cp36”“arrch64”。
【jetson nano】jetson nano环境配置+yolov5部署+tensorRT加速模型

matplotlib和opencv-python

我当时遇到的情况是有两个包安装不上,耽搁了一天,一个是matplotlib,一个是opencv-python。第二个包我甚至参考了很多网上的编译安装opencv的教程,用c++编译安装的方式折腾了很久,实际上不需要,只要参考Jetson Nano部署YOLOv5与Tensorrtx加速——(自己走一遍全过程记录)并把作者的那些环境配置安装完之后就解决了。
全部环境安装完成之后直接命令行切到主目录然后输入python detect.py执行,如果下载速度很慢可以提前去yolov5官方仓库把yolov5s.pt下载到主目录,没有报错就会在run/detect/exp目录下生成两张图片,这就成功了。

tensorRT加速

tensorRT本质上就是把模型压缩,变得更快,因为jetson nano算力不够所以需要加速。官方仓库在这里我参考的仓库里面的README.md文档,按照他的指令转化成wts以及engine格式的模型文件。
另外还包括以下几篇文章的tensor加速部分。但是以下文章的该部分仅供参考,要确保自己的yolo以及各项版本和你下载的tensorRT一致(实际上很有可能不一致,也就是说即使生成了engine文件也用不了)。
Jetson nano上部署自己的Yolov5模型(TensorRT加速)onnx模型转engine文件
Jetson Nano部署YOLOv5与Tensorrtx加速——(自己走一遍全过程记录)
之所以说仅供参考是因为

1. 里面的部分内容与实际情况不一致
比如修改训练好的模型数量,默认是80我们不需要修改,但如果是自己训练的模型就需要修改,修改地址并非他们所说的tensorrtx/yolov5/yololayer.h,而是应该参考官方文档README里面的这样一句话:

 cd [PATH-TO-TENSORRTX]/yolov5/
 # Update kNumClass in src/config.h if your model is trained on custom dataset

上面的注释中提到了如果要修改分类数量应该在src/config.h文件中更新kNumClass变量
【jetson nano】jetson nano环境配置+yolov5部署+tensorRT加速模型
但是还是有可能报错,TensorRT生成engine文件异常([TRT] Network::addScale::434, condition: shift.count > 0 ?)(这是可能出现的问题之一,我还遇到了其他的错误,比如生成了engine文件却不能适配等),如果用下面的方法就不会出现这个问题。

2. 其实并不需要用上述方法,如果你是跑yolo模型
实际上yolov5主目录里有export.py,可以直接调用tensorRT包实现把模型从xx.pt到xx.engine的转换,非常方便,不需要其他操作。并且jetson nano有自带的tensorRT包,我们只需要和我们的conda环境里的包的安装目录建立软连接即可。具体方法见下节

Jetson Nano的conda 虚拟环境中使用TensorRT

建立软链接

TensorRT的系统安装路径为:/usr/lib/python3.6/dist-packages/tensorrt/(这个是大家都一样不变的)
执行以下命令,建立虚拟环境(自己的虚拟环境)对应的软链接(注意自己的archiconda的安装目录,这是本人目录仅供参考/home/alen123/archiconda3/envs/yolov5/lib/python3.6/site-packages

sudo ln -s /usr/lib/python3.6/dist-packages/tensorrt* /home/alen123/archiconda3/envs/yolov5/lib/python3.6/site-packages

查看版本

>>> python
>>> import tensorrt
>>> tensorrt.__version__

运行export.py和detect.py

完成上步工作之后,tensorRT已经作为一个包可以直接调用了,然后直接在终端执行以下代码:

python export.py --weights yolov5.pt --include engine -- device 0 

可能会报错,告诉你部分包未安装,这时候别着急安装,先cat requirements.txt,查找对应的包,以onnx为例,找到requirements.txt里面onnx对应的版本,直接在命令行下载文件要求的最低版本,默认应该是被注释掉了,在Export里面,我的是

# onnx>=1.9.0  # ONNX export

所以直接

pip install onnx==1.9.0

其他包同样如此。
重新执行

python export.py --weights yolov5.pt --include engine -- device 0 

会生成一个engine文件。如果想要在开发板上跑时有更快的速度可以加--half,降低精度的,同时可以显著提高速度,我跑自己的模型时没用tensorRT加速速度是>100ms每帧。加速后,但加--half前速度大约是50ms每帧,加了--half之后是30ms每帧。

python export.py --weights yolov5.pt --include engine --half -- device 0

然后就会生成一个xx.engine文件,再执行detect.py,可以在文件里改,如果懒得改也可以直接命令行改模型:

python detect.py --weights yolov5.engine

这样就大功告成了,如果换成自己训练好的模型也是一样的,注意模型名字,数据路径什么的变化。

其他错误

其实一遍下来还有很多其他琐碎的错误,但有些在调试过程中解决了就没有全记录下来,接下来想到可能会慢慢补充。

KeyError: ‘names’

  File "detect.py", line 368, in <module>
    main(opt)
  File "detect.py", line 262, in main
    run(**vars(opt))
  File "/home/alen123/archiconda3/envs/yolov5/lib/python3.6/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
  File "detect.py", line 98, in run
    model = DetectMultiBackend(weights, device=device, dnn=dnn, data=data, fp16=half)
  File "/home/alen123/yolov5-7.0/models/common.py", line 500, in __init__
    names = yaml_load(data)['names'] if data else {i: f'class{i}' for i in range(999)}
KeyError: 'names'

在跑自己的模型时遇到的,原因是数据的yaml文件里面没有模型类别名字,在自己训练的模型的yaml文件最后加上即可。我的模型只有开关两类,所以我要加上下面的内容。

names:
  0: open
  1: closed

总结

花了3个小时写的,内容有点仓促,可能会慢慢补充,大家可以和我交流,如有错误之处恳请指正。总得来说在业界jetson nano的配置和使用都比较完善,资料也比较齐全,所以费点时间都可以在网上找到,谨以此文做一个备份和记录供大家参考。

其他可能有用的参考文章

Nvidia Jetson nano 安装Archiconda、gpu版torch、踩坑记录
win10 yolov5转换Tensorrt的engine模型全流程安装运行解读(使用TRT的PythonApi)

图片展示

【jetson nano】jetson nano环境配置+yolov5部署+tensorRT加速模型
【jetson nano】jetson nano环境配置+yolov5部署+tensorRT加速模型文章来源地址https://www.toymoban.com/news/detail-410941.html

到了这里,关于【jetson nano】jetson nano环境配置+yolov5部署+tensorRT加速模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • yolov5 部署jetson nano(通用) 保姆级教学

    官网的官方镜像下载地址:https://developer.nvidia.com/embedded/downloads 不一定能下载的下来,所以我提供了百度云链接下载,下载地址如下: 链接:https://pan.baidu.com/s/1njWhDqNquyUqnDRCp31y8w 提取码:6qqh 1.需要下载两个烧录的配置软件,这里推荐下面两个软件,一个软件是格式化SD卡(

    2024年02月04日
    浏览(44)
  • Jetson Nano配置YOLOv5并实现FPS=25

    JetPack 4.6——2021.8 yolov5-v6.0版本 使用的为yolov5的yolov5n.pt,并利用tensorrtx进行加速推理,在调用摄像头实时检测可以达到FPS=25。 在打开的文档的末尾添加如下: 保持并退出,终端执行 1.打开终端输入: 2.修改nvzramconfig.sh文件 3.重启Jetson Nano 4.终端中输入: 可查看到swap已经变为

    2024年02月13日
    浏览(32)
  • 【目标检测】YOLOv5推理加速实验:TensorRT加速

    前两篇博文分别讨论了YOLOv5检测算法的两种加速思路:采用多进程或批量检测,不过效果均收效甚微。本问将讨论使用TensorRT加速以及半精度推理/模型量化等优化策略对检测加速的实际影响。 测试图片分辨率:13400x9528 GPU:RTX4090 Cuda:11.7 YOLOv5版本:最新版(v7.0+) 检测策略:将

    2024年02月05日
    浏览(53)
  • 使用图传设备实现yolov5的远程监控与控制(YOLOv5检测+jetson nano+无人机+无线图传+vnc)

    目前想把模型加速部署好的jetson nano,放在自制无人机上,飞至高空用于检测,而且地面可以监控检测效果。 我想的检测方案: 1、使用socket,手动建立一个发射端,一个接收端,这个配置只需要导入socket库,写好ip和端口号就可以了,再打开多线程,速度也应该挺快,但是需

    2024年01月19日
    浏览(44)
  • 亲测可用-jetson nano b01上配置cuda加速的opencv

    前面的文章已经写过如何安装镜像及基础配置 亲测可用-jetson nano B01镜像安装及配置 jetson nano的官方镜像中自带opencv,但是不支持显卡加速 输入命令 按下数字7查看INFO界面,可以看到 所以默认自带的是不支持cuda加速(GPU)的,没有办法充分发挥jetson上GPU的性能 卸载自带的op

    2024年02月03日
    浏览(43)
  • Jetson nano系统安装和环境部署

    使用sdk-manager安装CUDA,这个安装可前面安装JetPack系统操作类似,然后将板子上Micro USB通过数据线和电脑链接。如下图: 这一步就不用接跳线了!选中红框的所有文件,开始下载安装。 安装完成后会自动添加路径,这点不错,如果没有自动添加则要手动添加。手动添加方式:

    2024年02月15日
    浏览(39)
  • [CV学习笔记]tensorrt加速篇之yolov5seg 实例分割

    1. 前言 yolov5-7.0版本继续更新了实例分割的代码,其分割的精度与速度令人惊讶,本文将yolov5-seg进行tensorrt加速,并利用矩阵的方法对进行部分后处理. 实例分割原理:yolact yolov5seg-cpp实现代码:Yolov5-instance-seg-tensorrt cpp矩阵实现:algorithm-cpp 本文测试代码:https://github.com/Rex-LK/tenso

    2024年02月02日
    浏览(80)
  • 【AI】在NVIDIA Jetson Orin Nano上使用tensorrtx部署yolov8

    本人下载的yolov8n.pt yolov8n-cls.pt:用于分类 yolov8n-pose.pt:用于姿势识别 yolov8n-seg.pt:用于对象分割 yolov8n-v8loader.pt:专用于人员检测器??? yolov8n.pt:用于对象检测 1)测试图片

    2024年02月06日
    浏览(47)
  • 深度学习技巧应用32-在YOLOv5模型上使用TensorRT进行加速的应用技巧

    大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用32-在YOLOv5模型上使用TensorRT进行加速的应用技巧,TensorRT是NVIDIA公司提供的一个深度学习推理(inference)优化器和运行时库。它专门为生产环境下的高性能深度学习推理提供优化支持。TensorRT可以加速深度学习模型在

    2024年02月02日
    浏览(44)
  • 【TensorRT】TensorRT 部署Yolov5模型(C++)

      该项目代码在本人GitHub代码仓库开源,本人GitHub主页为:GitHub   项目代码:   NVIDIA TensorRT™ 是用于高性能深度学习推理的 SDK,可为深度学习推理应用提供低延迟和高吞吐量。详细安装方式参考以下博客: NVIDIA TensorRT 安装 (Windows C++)   经典的一个TensorRT部署模型步骤为

    2023年04月26日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包