TensorRT来加速YOLO v5推理与检测

TensorRT来加速YOLO v5推理与检测

文章目录

  • TensorRT来加速YOLO v5推理与检测
  • TensorRT简介
  • 一、TensorRT安装
    • 1. 电脑基础环境
    • 2. 查看 cuda 版本
    • 3. 安装TensorRT
    • 4. 验证TensorRT
  • 二、YOLO v5模型导出函数
    • 1.onnx 模型导出(def export_onnx()函数)
    • 2.openvino模型导出(def export_openvino()函数)
    • 3.coreml模型导出(def export_coreml()函数)
    • 4.TensorRT模型导出(def export_engine()函数)
  • 三、YOLO v5使用TensorRT进行加速检测
    • 1. 模型导出
    • 2. 图片检测
    • 3. 使用yolov5s.pt 和 yolov5s.engine(tensorrt)进行检测
      • 3.1 使用yolov5s.pt, 推理时间: 5.49s
      • 3.2 使用 yolov5s.engine(tensorrt), 推理时间: 4.20s
  • 四、总结

TensorRT简介

TensorRT是一个高性能的深度学习推理(Inference)优化器,可以为深度学习应用提供低延迟、高吞吐率的部署推理。TensorRT可用于对超大规模数据中心、嵌入式平台或自动驾驶平台进行推理加速。TensorRT现已能支持TensorFlow、Caffe、Mxnet、Pytorch等几乎所有的深度学习框架,将TensorRT和NVIDIA的GPU结合起来,能在几乎所有的框架中进行快速和高效的部署推理。
TensorRT 是一个C++库,从 TensorRT 3 开始提供C++ API和Python API,主要用来针对 NVIDIA GPU进行 高性能推理(Inference)加速。
在这里插入图片描述
基本特性:

    用于高效实现已训练好的深度学习模型的推理过程的SDK

    内含推理优化器和运行时环境

    使DL模型能以更高吞吐量和更低的延迟运行

    有C++和python的API,完全等价可以混用

TensorRT主要做了以下几点来加快推理速度:

    算子融合

    量化

    动态张量显存
    
    内核自动调整

    多流执行

在这里插入图片描述

一、TensorRT安装

1. 电脑基础环境

  • 操作系统: win10
  • 显卡: 4060TI 16GB
  • pytorch 版本:1.13.0 使用 print(torch._ _version_ _) 查看 pytorch 版本
  • python: 3.8

2. 查看 cuda 版本

  • 激活 conda 中的一个环境, 并输入 nvcc -V 进行查看, 我的版本如下图所示
    在这里插入图片描述

3. 安装TensorRT

需要到nvidia官网去下载对应cuda版本的TensorRT安装包,我这里下载对应版本压缩包如下,下载解压即可。
在这里插入图片描述
下载好将压缩包进行解压,激活 conda 环境, 然后 cd 进入下面几个文件夹,安装 whl 文件。

  • 解压后的TensorRT-8.5.3.1\include 中头文件拷贝到 安装的cuda目录中 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include
  • 解压后的TensorRT-8.5.3.1\lib 中所有的lib文件拷贝到 安装的cuda目录中 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\lib\x64
  • 解压后的TensorRT-8.5.3.1\lib 中所有的dll文件拷贝到 安装的cuda目录中 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin
  • :\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin 路径添加到用户的 Path 环境变量中
    在这里插入图片描述
    在上面操作添加以后,重启电脑,此时环境变量生效。

4. 验证TensorRT

激活conda 环境,依次输入下面语句。

python
import tensorrt
print(tensorrt.__version__)

在这里插入图片描述
并运行下载解压后安装包里的一个实例的 sample.py 文件, 来检查 tensorrt 是否能正常使用。
直接在激活的环境下, cd 进入,比如我的文件目录, 直接cd
C:\Users\xiaoalei\Desktop\TensorRT-8.5.3.1\samples\python\network_api_pytorch_mnist

  • 主要看后面的一部分地址
    在这里插入图片描述
    -输入 python sample.py 运行
    在这里插入图片描述
  • 出现上面情况就是表示成功,(运行报错一般是安装包没有安装,直接 pip install 就行,我在安装提示只需安装 pycuda,直接 pip install pycuda)

二、YOLO v5模型导出函数

而在YOLOv5 6.0版本更新后,新增了一个export.py文件,支持大部分框架模型的导出,包括TensorRT。这里介绍部分模型导出函数

1.onnx 模型导出(def export_onnx()函数)

在这里插入图片描述

2.openvino模型导出(def export_openvino()函数)

在这里插入图片描述

3.coreml模型导出(def export_coreml()函数)

在这里插入图片描述

4.TensorRT模型导出(def export_engine()函数)

在这里插入图片描述

三、YOLO v5使用TensorRT进行加速检测

1. 模型导出

直接导出模型:(我这里对自己训练好的模型和权重文件进行导出)

  • 这里的--half表示半精度模型,使用半精度可以加快推理速度,但会损失一定精度,直接导出可以不加
 python export.py --weights runs/train/exp/weights/best.pt --data linhuo.yaml --include engine --device 0 --half

2. 图片检测

验证图片检测速度, 需要对 detect.py 进行修改,最后的程序入口进行修改
修改后如下:

if __name__ == '__main__':

    start_time = time.time()
    opt = parse_opt()
    main(opt)
    end_time = time.time()
    print("程序花费时间{}秒".format(end_time - start_time))

3. 使用yolov5s.pt 和 yolov5s.engine(tensorrt)进行检测

命令行语句:

3.1 使用yolov5s.pt, 推理时间: 5.49s

python detect.py --weights runs/train/exp/weights/best.pt

在这里插入图片描述

3.2 使用 yolov5s.engine(tensorrt), 推理时间: 4.20s

python detect.py --weights runs/train/exp/weights/best.engine

在这里插入图片描述

四、总结

TensorRT能加速YOLO v5推理与检测。
后续会补充视频推理检测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/102408.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【小吉送书—第一期】Kali Linux高级渗透测试

文章目录 🍔前言🛸读者对象🎈本书资源🎄彩蛋 🍔前言 对于企业网络安全建设工作的质量保障,业界普遍遵循PDCA(计划(Plan)、实施(Do)、检查&#x…

2023-09-02 LeetCode每日一题(最多可以摧毁的敌人城堡数目)

2023-09-02每日一题 一、题目编号 2511. 最多可以摧毁的敌人城堡数目二、题目链接 点击跳转到题目位置 三、题目描述 给你一个长度为 n ,下标从 0 开始的整数数组 forts ,表示一些城堡。forts[i] 可以是 -1 ,0 或者 1 ,其中&…

C语言:截断+整型提升+算数转换练习

详情关于整型提升、算数转换与截断见文章: 《C语言:整型提升》 《C语言:算数转换》 一、代码一 int main() { char a -1; signed char b -1; unsigned char c -1; printf("%d %d %d", a, b, c); return 0; } 求…

Level-based Foraging 多智能体游戏仿真环境

游戏场景测试 参考链接: https://kgithub.com/semitable/lb-foraging

Linux系统中u-boot启动流程分析(详解)

大家好,我是ST小智,今天给大家分享一下,u-boot的启动流程。 今天给大家全面的分析一下u-boot启动流程。整理这篇文章花费时间较长,中间很长时间未更新,希望这篇文章对大家有所帮助。 本章主要是详细的分析一下uboot的…

《Kubernetes部署篇:Ubuntu20.04基于containerd部署kubernetes1.24.17集群(多主多从)》

一、架构图 如下图所示: 二、环境信息 1、部署规划主机名K8S版本系统版本内核版本IP地址备注k8s-master-631.24.17Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.63master节点 + etcd节点k8s-master-641.24.17Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.64master节点 + …

Python语音识别处理详解

概要 人们对智能语音助手的需求不断提高,语音识别技术也随之迅速发展。在这篇文章中,我们将介绍如何使用Python的SpeechRecognition和pydub等库来实现语音识别和处理,从而打造属于自己的智能语音助手。 1. 什么是语音识别? 语音…

一文速学-让神经网络不再神秘,一天速学神经网络基础(五)-最优化

前言 思索了很久到底要不要出深度学习内容,毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新,很多坑都没有填满,而且现在深度学习的文章和学习课程都十分的多,我考虑了很久决定还是得出神经网络系列文章,…

打车系统网约车系统开发支持APP公众号H5小程序版本源码

一、操作流程 二、业务模式 三、用户端 用户注册登录:未注册的手机号将自动创建账号 通过好友的邀请链接进行注册,将会绑定上下级关系 也可以注册的时候输入好友的邀请码,也可以绑定关系 用户充值: 用户下单支付时,可以…

python技术面试题合集(二)

python技术面试题 1、简述django FBV和CBV FBV是基于函数编程,CBV是基于类编程,本质上也是FBV编程,在Djanog中使用CBV,则需要继承View类,在路由中指定as_view函数,返回的还是一个函数 在DRF中的使用的就是…

开开心心带你学习MySQL数据库之第三篇上

学校的项目组有必要加入吗? 看你的初心. ~~如果初心是通过这个经历能够提高自己的技术水平 ~~是可以考虑的 ~~如果初心是通过这个经历提高自己找工作的概率 ~~这个是不靠谱的,啥用没有 ~~如果初心是通过这个体验更美好的大学生活 ~~靠谱的 秋招,应届生,找工作是非常容易的!!! …

【Android】SDK安装及配置

一、下载SDK Tools https://www.androiddevtools.cn 以windows10系统为例,下载压缩版直接解压即可。 二、安装SDK Tools 解压后双击运行SDK Manager.exe 一般根据默认推荐安装即可。 如果无法打开SDK Manager,可以参考:https://blog.cs…

[笔记] 阿里云域名知识

文章目录 前言一、域名二、域名常见分类2.1 泛域名2.2 为什么要设置子域名 三、记录类型3.1 A- 将域名指向一个PV4地址3.2 CNAME- 将域名指向另外一个域名3.3 AAAA- 将域名指向一个PV6地址3.4 MX- 将域名指向邮件服务器地址3.5 SRV- 记录提供特定的服务的服务器使用场景 3.6 TX…

Docker进阶:mysql 主从复制、redis集群3主3从【扩缩容案例】

Docker进阶:mysql 主从复制、redis集群3主3从【扩缩容案例】 一、Docker常规软件安装1.1 docker 安装 tomcat(默认最新版)1.2 docker 指定安装 tomcat8.01.3 docker 安装 mysql 5.7(数据卷配置)1.4 演示--删除mysql容器…

eureka服务注册和服务发现

文章目录 问题实现以orderservice为例orderservice服务注册orderservice服务拉取 总结 问题 我们要在orderservice中根据查询到的userId来查询user,将user信息封装到查询到的order中。 一个微服务,既可以是服务提供者,又可以是服务消费者&a…

Python零基础超详细教程:字典(Dictionary)相关介绍使用

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! Python字典是另一种可变容器模型, 且可存储任意类型对象,如字符串、数字、元组等其他容器模型。 python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 一、创建字典 字典由键和对应值…

LNMP架构:搭建Discuz论坛

文章目录 1. 编译安装Nginx1.1 前置准备1.2 编译安装1.3 添加nginx系统服务 2.编译安装MySql2.1 前置准备2.2 编译安装2.3 修改mysql 配置文件2.4 设置路径环境变量2.5 初始化数据库2.6 添加musql系统服务2.7 修改MySql登录密码 3. 编译安装PHP3.1 前置准备3.2 编译安装3.3 复制…

IDEA打开一个项目时,idea左侧project模式下,不显示项目工程目录的解决方法

在IDEA打开一个一个已有的项目chapter3时,idea左侧project模式下,左侧也没有project按钮,如下问题截图:(ps:项目结构可以显示,但是src等目录不见) 在网上查了一些方法: 1、解决办法…

QT 界面相关操作

1> 创建自定义类时需要指定父类 2> 第一个界面的相关操作 #include "widget.h" #include<iostream> //printf #include<QDebug> //qDebuf #include<QIcon> //图标的头文件 using namespace std; //coutWidget::Widget(QWidget *…

外观模式:简化复杂子系统的访问与使用

文章目录 1. 简介2. 外观模式的基本结构3. 外观模式的实现步骤4. 外观模式的应用与实例4.1 图形界面库的外观模式应用4.2 文件压缩与解压缩的外观模式应用4.3 订单处理系统的外观模式应用 5. 外观模式的优缺点5.1 优点5.2 缺点 6. 总结 1. 简介 外观模式是一种结构型设计模式&…