jetson nano +yolov4-tiny使用tensorRT优化模型做到实时检测

在写这篇博客前,我使用yolov5+deepstream完成了在jetson nano上的部署,部署完成后检测帧率很低,然后查阅各种资料和论文,发现直接使用pytorch模型转化并不会优化jetson nano底层算法,然后我使用各种转化方法,把能用的算法几乎都用了,还是做不到实时检测(可能还是模型的问题),也尝试了yolov3 ,yolov4 ,最终效果都不是很好。
然后我看到一篇博主分享的博客(https://blog.csdn.net/ZeyiRTangent),使用yolov4-tiny+tensorRT可以做到实时检测(目前yolov4-tiny+tensorRT是效果最好的组合),我写下这篇博客只是记录我使用yolov4-tiny+tensorRT检测时遇到的一些问题。感谢这位博主的分享(https://blog.csdn.net/weixin_54603153)


前言

这篇博客并不是我的原创,只是记录我的一些学习经历,并在其他博主的博客上做了一些补充。希望可以帮到大家。在使用deepstream部署时检测帧率大概只有5帧左右,使用yolov4-tiny+tensorRT可以做到40~50帧(在这里我只做到了25帧左右),做到实时检测时没有问题的,下面我们进入正文。

一、环境

具体所需的硬件环境和软件环境可以看我上一篇博客,里面详细记录了部署前的准备,在这里我不做过多赘述。
基本环境准备好后

还需要:

1.pycuda =2019.1.2
2.numpy=1.19.5
3.onnx=1.4.1

二、安装步骤

1.安装pycuda

在此我附上百度网盘链接:

链接:https://pan.baidu.com/s/1DL5sre_HhU9P9bSUPDRAKw
提取码:uwc4
下载之后执行一下命令进行安装

cd pycuda-2019.1.2/  
python3 configure.py --cuda-root=/usr/local/cuda-10.2 
sudo python3 setup.py install

2.安装numpy

首先我们先安装pip3

sudo apt-get install python3-pip 

然后安装Cython

pip3 install Cython

接下来我们安装numpy

pip3 install numpy

3.安装onnx=1.4.1

首先在nano上安装依赖

sudo apt-get install protobuf-compiler libprotoc-dev 

然后就可以安装onnx了(不要换源,我换源安装之后环境出错了)

pip3 install onnx==1.4.1

三、具体步骤

1.下载tensorrt_demos代码

(感谢这位博主的分享:https://blog.csdn.net/ZeyiRTangent)

https://github.com/jkjung-avt/tensorrt_demos

下载之后进入yolo文件夹下
在yolo文件夹下有一个download_yolo.sh 文件,里面包含了yolov3 和yolov4的各种模型和模型生成文件

运行downloda_yolo.sh文件

sh download_yolo.sh

然后就会下载相应的模型和生成模型文件(这里我使用的是yolov4-tiny和其模型生成文件)
下载完成后在yolo文件夹下会出现模型文件和模型生成文件

2.编译

此时不要直接生成运行yolo_toTonnx.py文件,会出现错误提示你没有进行编译
接下来我们回到上一级目录

cd ..

进入plugins文件夹进行编译

cd plugins
make

编译完成后就可以进行模型生成

3.生成onnx文件

执行yolo_to_onnx.py文件,我选用的是yolov4-tiny-416

python3 yolo_to_onnx.py -m yolov4-tiny-416

执行之后在yolo文件夹下就会生成一个.onnx文件

4.生成经过tensorRT优化后的模型文件(.trt文件)

执行

python3 onnx_to_tensorrt.py -m yolov4-tiny-416

执行之后在yolo文件夹下你可以看到.trt文件

5.调用usb摄像头进行目标检测

这里便是我要补充的地方,一些博主的博客里提到在utils/camera.py文件中有相应的声明
调用usb摄像头需要修改camera.py文件的某个部分

修改前
在这里插入图片描述
修改后
在这里插入图片描述
这里为什么要修改为False,在注释第二句话可以看到,如果设置False,我们打开使用cv2.VideoCapture()
机制的摄像头,修改后保存。

执行

python3 trt_yolo.py --usb 0 -m yolov4_tiny-416

接下来就可以看到检测结果了

基本上可以做到实时检测。

下面是一个博主检测的结果,检测帧率达到了38(我只做到了25)
在这里插入图片描述

需要配置好的tensorrt_demo文件可以在下面留下邮箱,我看到后会发到相应邮箱里。

总结

这里对文章进行总结:
这篇文章是我在部署yolov5后为了提升帧率写的一篇博客,在调用USB摄像头时,出现了一点小插曲,所以我写下这篇文章记录下来,后续我会在对yolov5进行优化。感谢这些博主的分享,在此附上链接
(https://blog.csdn.net/ZeyiRTangent)
(https://blog.csdn.net/weixin_54603153)

<p class="MsoNormal" style="line-height: 16.5pt; background: white;" align="left"><span lang="EN-US" style="font-family: 微软雅黑, sans-serif;">PyTorch</span><span style="font-family: 微软雅黑, sans-serif;">版的</span><span lang="EN-US" style="font-family: Arial, sans-serif;">YOLOv5</span><span style="font-family: 微软雅黑, sans-serif;">是高性能的实时目标检测方法。</span><span lang="EN-US" style="font-family: Arial, sans-serif;">Jetson Nano</span><span style="font-family: 微软雅黑, sans-serif;">是英伟达含有</span><span lang="EN-US" style="font-family: Arial, sans-serif;">GPU</span><span style="font-family: 微软雅黑, sans-serif;">的人工智能硬件。本课程讲述如何部署</span><span lang="EN-US" style="font-family: Arial, sans-serif;">YOLOv5</span><span style="font-family: 微软雅黑, sans-serif;">在</span><span lang="EN-US" style="font-family: Arial, sans-serif;">Jetson Nano</span><span style="font-family: 微软雅黑, sans-serif;">开发板</span><span style="font-family: 微软雅黑, sans-serif;">上。</span><span style="font-family: 微软雅黑, sans-serif; color: #000000;">部署完成后可进行图像、视频文件和摄像头视频的实时目标检测。</span><span style="color: #222226; font-family: 微软雅黑, sans-serif;">部署时使用</span><span lang="EN-US" style="color: #222226; font-family: 微软雅黑, sans-serif;">AI</span><span style="color: #222226; font-family: 微软雅黑, sans-serif;">视频处理加速引擎</span><span lang="EN-US" style="color: #222226; font-family: 微软雅黑, sans-serif;">TensorRT</span><span style="color: #222226; font-family: 微软雅黑, sans-serif;">和</span><span lang="EN-US" style="color: #222226; font-family: 微软雅黑, sans-serif;">DeepStream</span><span style="color: #222226; font-family: 微软雅黑, sans-serif;">。</span></p> <p class="MsoNormal" style="line-height: 16.5pt; background: white;" align="left"> </p> <p class="MsoNormal" style="line-height: 16.5pt; background: white;" align="left"><span style="font-family: 微软雅黑, sans-serif;">课程内容包括:原理篇(</span><span lang="EN-US" style="font-family: Arial, sans-serif;">DeepStream</span><span style="font-family: 微软雅黑, sans-serif;">介绍</span><span style="font-family: 微软雅黑, sans-serif;">、</span><span lang="EN-US" style="font-family: Arial, sans-serif;">TensorRT</span><span style="font-family: 微软雅黑, sans-serif;">介绍、</span><span style="font-family: Arial, sans-serif;"> <span lang="EN-US">tensorrtx</span></span><span style="font-family: 微软雅黑, sans-serif;">介绍)、实践篇(<span lang="EN-US">Nano</span>硬件搭建、烧录系统镜像、安装远程登录工具、安装和测试<span lang="EN-US">DeepStream</span>、安装<span lang="EN-US">yolov5</span>、生成<span lang="EN-US">yolov5s.wts</span>文件、生成<span lang="EN-US">yolov5s.engine</span>、使用<span lang="EN-US">DeepStream</span>部署<span lang="EN-US">yolov5、</span></span><span lang="EN-US" style="font-family: 微软雅黑, sans-serif;">Nano</span><span style="font-family: 微软雅黑, sans-serif;">部署测试)</span></p> <p><img src="https://img-bss.csdnimg.cn/202104061256598707.jpg" alt="课程介绍" /></p>
©️2022 CSDN 皮肤主题:黑客帝国 设计师:我叫白小胖 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值