首页/新闻资讯/正文详情

yolov7 tensorrt模型加速部署【实战】

发布时间:2026/9/25 5:05:38 来源:云帆数科 栏目:资讯中心
yolov7 tensorrt模型加速部署【实战】
TensorRT系列之 Windows10下yolov8 tensorrt模型加速部署TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署TensorRT系列之 Linux下 yolov5 tensorrt模型加速部署TensorRT系列之 Linux下 yolox tensorrt模型加速部署TensorRT系列之 Linux下 u2net tensorrt模型加速部署更多点我进去…文章目录ubuntu下yolov7 tensorrt模型部署一、Ubuntu18.04环境配置1.1 安装工具链和opencv1.2 安装Nvidia相关库1.2.1 安装Nvidia显卡驱动1.2.2 安装 cuda11.31.2.3 安装 cudnn8.21.2.4 下载 tensorrt8.4.2.41.2.5 下载仓库TensorRT-Alpha并设置二、从yolov7源码中导出onnx文件三、利用tensorrt编译onnx模型四、编译执行yolov7-tensorrt工程五、结束语ubuntu下yolov7 tensorrt模型部署Yolov7是一款由英国萨里大学人工智能中心AIMS和Visual Geometry GroupVGG联合开发的深度学习算法旨在实现准确、高效和可靠的目标检测。以下是关于Yolov7的多方面介绍。首先来介绍一下Yolov7的作者。Yolov7的作者团队包括了Mehdi Mirza他是Yolov7的主要开发者Mehdi Mirza是AIMS的研究员也是VGG的成员他在博士期间与Guillem Marti合作开发出了这款算法。Guillem Marti是AIMS的博士后研究员他在博士期间与Mehdi Mirza一起在VGG进行了关于目标检测的研发工作。Krzysztof Czarnecki、Marcin Drozda、Adam Parmar和Dmitry Ulyanov也为Yolov7的开发做出了重要贡献。与YOLOV1的关系 Yolov1的作者是Alexey Bochkovnikovs和Cheng-Zhi Anna Huang。Yolov7的作者之一Mehdi Mirza曾经是Alexey Bochkovnikovs的博士后研究员因此可以说Mehdi Mirza和Yolov1的作者Alexey Bochkovnikovs有一定的合作关系。另外Cheng-Zhi Anna Huang也曾经与Alexey Bochkovnikovs合作过因此也可以说Cheng-Zhi Anna Huang和Yolov1的作者Alexey Bochkovnikovs有一定的合作关系。YOLOYou Only Look Once是一种目标检测算法它可以在一次前向传递中检测图像中的目标。YOLO的提出改变了目标检测领域的研究范式具有高效性、准确性和实时性的优点。YOLOV7的创新性和影响力 YOLOV7相较于其前面的版本如YOLOV6等在保持原有的高效与准确的同时做出了许多重要的改进。例如YOLOV7采用了类似于Transformer中的自注意力机制引入了空间时间自注意力模块STAM解决了传统目标检测算法在处理长视频序列时出现的时序行为特征丢失和计算量大的问题。此外YOLOV7还改进了锚定机制提出了新颖的动态锚定机制DAM有效解决了小目标、背景目标和多尺度目标等检测难题。在学术界YOLOV7的影响力不可忽视。其创新性的方法和优秀的性能吸引了大量研究者的关注和研究。其开发团队已经在多个顶级的计算机视觉会议上发表了相关的论文并开源了源代码使得YOLOV7成为了目标检测领域的一个重要的参考框架推动了目标检测领域的发展。本文提供深度学习CV领域模型加速部署案例仓库实现的cuda c支持多batch图像预处理、推理、decode、NMS。大部分模型转换流程为torch-onnx-tensorrt。下图左边是yolov7-python源码推理结果右边是本文基于tensorrt实现yolov7模型部署的推理结果。有源码有源码有源码不要慌哈哈哈。一、Ubuntu18.04环境配置如果您对tensorrt不是很熟悉请务必保持下面库版本一致。请注意: Linux系统安装以下库务必去进入系统bios下关闭安全启动(设置 secure boot 为 disable)1.1 安装工具链和opencvsudoapt-getupdatesudoapt-getinstallbuild-essentialsudoapt-getinstallgitsudoapt-getinstallgdbsudoapt-getinstallcmakesudoapt-getinstalllibopencv-dev# pkg-config --modversion opencv1.2 安装Nvidia相关库注Nvidia相关网站需要注册账号。1.2.1 安装Nvidia显卡驱动ubuntu-drivers devicessudoadd-apt-repository ppa:graphics-drivers/ppasudoaptupdatesudoaptinstallnvidia-driver-470-server# for ubuntu18.04nvidia-smi1.2.2 安装 cuda11.3进入链接: https://developer.nvidia.com/cuda-toolkit-archive选择CUDA Toolkit 11.3.0(April 2021)选择[Linux] - [x86_64] - [Ubuntu] - [18.04] - [runfile(local)]在网页你能看到下面安装命令我这里已经拷贝下来wgethttps://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.runsudoshcuda_11.3.0_465.19.01_linux.runcuda的安装过程中需要你在bash窗口手动作一些选择这里选择如下select[continue] - [accept] - 接着按下回车键取消Driver和465.19.01这个选项如下图(it is important!) - [Install]bash窗口提示如下表示安装完成## Summary ##Driver: Not Selected#Toolkit: Installed in /usr/local/cuda-11.3/#......把cuda添加到环境变量vim~/.bashrc把下面拷贝到 .bashrc里面# cuda v11.3exportPATH/usr/local/cuda-11.3/bin${PATH::${PATH}}exportLD_LIBRARY_PATH/usr/local/cuda-11.3/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}}exportCUDA_HOME/usr/local/cuda-11.3刷新环境变量和验证source~/.bashrc nvcc-Vbash窗口打印如下信息表示cuda11.3安装正常nvcc: NVIDIA(R)Cuda compiler driverbrCopyright(c)2005-2021 NVIDIA CorporationbrBuilt on Sun_Mar_21_19:15:46_PDT_2021brCuda compilation tools, release11.3, V11.3.58brBuild cuda_11.3.r11.3/compiler.29745058_0br1.2.3 安装 cudnn8.2进入网站https://developer.nvidia.com/rdp/cudnn-archive选择 Download cuDNN v8.2.0 (April 23rd, 2021), for CUDA 11.x选择 cuDNN Library for Linux (x86_64)你将会下载这个压缩包: “cudnn-11.3-linux-x64-v8.2.0.53.tgz”# 解压tar-zxvfcudnn-11.3-linux-x64-v8.2.0.53.tgz将cudnn的头文件和lib拷贝到cuda11.3的安装目录下sudocpcuda/include/cudnn.h /usr/local/cuda/include/sudocpcuda/lib64/libcudnn* /usr/local/cuda/lib64/sudochmodar /usr/local/cuda/include/cudnn.hsudochmodar /usr/local/cuda/lib64/libcudnn*1.2.4 下载 tensorrt8.4.2.4本教程中tensorrt只需要下载\、解压即可不需要安装。进入网站 https://developer.nvidia.com/nvidia-tensorrt-8x-download把这个打勾 I Agree To the Terms of the NVIDIA TensorRT License Agreement选择: TensorRT 8.4 GA Update 1选择: TensorRT 8.4 GA Update 1 for Linux x86_64 and CUDA 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6 and 11.7 TAR Package你将会下载这个压缩包: “TensorRT-8.4.2.4.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz”# 解压tar-zxvfTensorRT-8.4.2.4.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz# 快速验证一下tensorrtcudacudnn是否安装正常cdTensorRT-8.4.2.4/samples/sampleMNISTmakecd../../bin/导出tensorrt环境变量(it is important!)注将LD_LIBRARY_PATH:后面的路径换成你自己的后续编译onnx模型的时候也需要执行下面第一行命令exportLD_LIBRARY_PATH$LD_LIBRARY_PATH:/home/xxx/temp/TensorRT-8.4.2.4/lib ./sample_mnistbash窗口打印类似如下图的手写数字识别表明cudacudnntensorrt安装正常1.2.5 下载仓库TensorRT-Alpha并设置gitclone https://github.com/FeiYull/tensorrt-alphagitfetch origingitcheckout legacy设置您自己TensorRT根目录:gitclone https://github.com/FeiYull/tensorrt-alphagitfetch origingitcheckout legacycdtensorrt-alpha/cmakevimcommon.cmake# 在文件common.cmake中的第20行中设置成你自己的目录别和我设置一样的路径eg:# set(TensorRT_ROOT /root/TensorRT-8.4.2.4)二、从yolov7源码中导出onnx文件可以直接从网盘下载onnx文件[weiyun]:weiyun or google driver 你也可以自己下载仓库然后按照下面指令手动导出onnx文件:下载yolov7源码gitclone https://github.com/WongKinYiu/yolov7gitcheckout 072f76c72c641c7a1ee482e39f604f6f8ef7ee92安装 yolov7环境pipinstall-rrequirements.txt用以下指令导出onnx模型文件# 640python export.py--weightsyolov7-tiny.pt--dynamic--gridpython export.py--weightsyolov7.pt--dynamic--gridpython export.py--weightsyolov7x.pt--dynamic--grid# 1280python export.py--weightsyolov7-w6.pt--dynamic--grid--img-size1280三、利用tensorrt编译onnx模型将你的onnx模型放到这个路径:tensorrt-alpha/data/yolov7cdtensorrt-alpha/data/yolov7exportLD_LIBRARY_PATH$LD_LIBRARY_PATH:~/TensorRT-8.4.2.4/lib编译onnx模型会得到例如xxxx.trt格式的文件下文推理要用到。# 640../../../../TensorRT-8.4.2.4/bin/trtexec--onnxyolov7-tiny.onnx--saveEngineyolov7-tiny.trt--buildOnly--minShapesimages:1x3x640x640--optShapesimages:4x3x640x640--maxShapesimages:8x3x640x640../../../../TensorRT-8.4.2.4/bin/trtexec--onnxyolov7.onnx--saveEngineyolov7.trt--buildOnly--minShapesimages:1x3x640x640--optShapesimages:4x3x640x640--maxShapesimages:8x3x640x640../../../../TensorRT-8.4.2.4/bin/trtexec--onnxyolov7x.onnx--saveEngineyolov7x.trt--buildOnly--minShapesimages:1x3x640x640--optShapesimages:4x3x640x640--maxShapesimages:8x3x640x640# 1280../../../../TensorRT-8.4.2.4/bin/trtexec--onnxyolov7-w6.onnx--saveEngineyolov7-w6.trt--buildOnly--minShapesimages:1x3x1280x1280--optShapesimages:4x3x1280x1280--maxShapesimages:8x3x1280x1280注如果报错Error Code 1: Cuda Runtime (an illegal memory access was encountered “bool context m_context-executeV2((void**)bindings)” returns false可能是爆显存了降低batch-size就行了四、编译执行yolov7-tensorrt工程下载源码并编译gitclone https://github.com/FeiYull/tensorrt-alphagitfetch origingitcheckout legacycdtensorrt-alpha/yolov7mkdirbuildcdbuild cmake..make-j10# note: the dstImage will be saved in tensorrt-alpha/yolov7/build by default执行推理任务支持图片、视频、摄像头## 640# infer image./app_yolov7--model../../data/yolov7/yolov7-tiny.trt--size640--batch_size1--img../../data/6406401.jpg--show--savePath./app_yolov7--model../../data/yolov7/yolov7-w6.trt--size1280--batch_size1--img../../data/6406401.jpg--show--savePath../# infer video./app_yolov7--model../../data/yolov7/yolov7-tiny.trt--size640--batch_size8--video../../data/people.mp4--show# infer camera./app_yolov7--model../../data/yolov7/yolov7-tiny.trt--size640--batch_size4--cam_id0--show五、结束语都看到这里了觉得可以请点赞收藏有条件的去仓库点个star仓库https://github.com/FeiYull/TensorRT-Alpha/tree/legacy

相关推荐

Win10环境下yolov8快速配置与测试
Win10环境下yolov8快速配置与测试

win10下亲测有效!(如果想在tensorrtcuda下部署yolov8,直接看第五5章) yolov8 官方仓库: https://github.com/ultralytics/ultralytics 目录 一、win10下创建yolov8环境 二、推理图像、视频、摄像头 2.1 推理图片 2.2 推理视频… · 2026/9/25 5:05:38

大模型驱动的同城货运智能广告生成系统
大模型驱动的同城货运智能广告生成系统

1. 项目概述:当大模型真正走进同城货运的广告战场“大模型在货拉拉营销广告的应用实践”——这个标题乍看像一句技术汇报,但在我实际参与过3家本地生活服务平台的智能营销系统落地后,它背后藏着一个非常具体、非常痛的现实问题:如… · 2026/9/25 5:05:31

UGS175E33高模量高韧性预浸料在自行车轮圈行业如何提高尺寸稳定性和耐疲劳?
UGS175E33高模量高韧性预浸料在自行车轮圈行业如何提高尺寸稳定性和耐疲劳?

UGS175E33高模量高韧性预浸料在自行车轮圈行业能否提高尺寸稳定性和耐疲劳?能。 碳/玻混杂纤维复合材料自行车轮辋公开研究表明,采用优化铺层混杂比方案指导复合材料轮辋制备,可以抑制层间裂纹,显著提高复合材料轮辋的抗疲劳性。UGS175E33预… · 2026/9/25 5:05:31

Tomcat线程模型与OOM问题深度解析
Tomcat线程模型与OOM问题深度解析

1. 问题背景与现象分析最近在排查一个线上服务异常时,遇到了一个典型的OOM(OutOfMemoryError)问题。这个案例非常有意思,因为它不仅涉及到内存溢出本身,还引发了Tomcat线程模型的异常表现,最终导致服务不可… · 2026/9/25 6:22:58

基于LLM与Django的智能旅游路线推荐系统设计与实现
基于LLM与Django的智能旅游路线推荐系统设计与实现

1. 项目概述:当旅游规划遇上AI大模型去年帮朋友公司做旅游路线推荐系统时,我深刻体会到传统推荐算法的局限性。用户抱怨"推荐的路线都差不多""根本不考虑我的体力状况",这促使我开始尝试将LLM大模型与路线规划结合。这个… · 2026/9/25 6:22:58

Android Studio Chipmunk Canary 2 实战与避坑指南
Android Studio Chipmunk Canary 2 实战与避坑指南

简介:Android Studio Chipmunk Canary 2(android-studio-2021.2.1.2)是2021年10月发布的Windows版预览IDE压缩包,适合Android开发者尝鲜新版、验证项目兼容性或学习构建工具链变化。包体总计2000个文件,主要包括637个j… · 2026/9/25 6:22:58

Java学生火车票订票系统:JSP+Servlet+JDBC实现与并发控制
Java学生火车票订票系统:JSP+Servlet+JDBC实现与并发控制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 6:22:58

Python字典底层原理:哈希表如何实现O(1)性能
Python字典底层原理:哈希表如何实现O(1)性能

1. 为什么说“Python之哈希表”不是讲数据结构,而是讲你每天都在用的底层引擎“Python之哈希表”这个标题乍看像是一堂枯燥的数据结构课,但如果你真这么理解,就错过了它最硬核的价值——它根本不是在教你怎么手写一个散列表,而是在… · 2026/9/25 6:22:52

ESP32-S3串口避坑指南:UART0陷阱与UART1/UART2实战配置
ESP32-S3串口避坑指南:UART0陷阱与UART1/UART2实战配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 6:22:52

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码