news 2026/9/25 5:05:35

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 安装工具链和opencv
      • 1.2 安装Nvidia相关库
        • 1.2.1 安装Nvidia显卡驱动
        • 1.2.2 安装 cuda11.3
        • 1.2.3 安装 cudnn8.2
        • 1.2.4 下载 tensorrt8.4.2.4
        • 1.2.5 下载仓库TensorRT-Alpha并设置
      • 二、从yolov7源码中导出onnx文件
      • 三、利用tensorrt编译onnx模型
      • 四、编译执行yolov7-tensorrt工程
      • 五、结束语

ubuntu下yolov7 tensorrt模型部署

  • Yolov7是一款由英国萨里大学人工智能中心(AIMS)和Visual Geometry Group(VGG)联合开发的深度学习算法,旨在实现准确、高效和可靠的目标检测。以下是关于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有一定的合作关系。YOLO(You 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 安装工具链和opencv

sudoapt-getupdatesudoapt-getinstallbuild-essentialsudoapt-getinstallgitsudoapt-getinstallgdbsudoapt-getinstallcmake
sudoapt-getinstalllibopencv-dev# pkg-config --modversion opencv

1.2 安装Nvidia相关库

注:Nvidia相关网站需要注册账号。

1.2.1 安装Nvidia显卡驱动

ubuntu-drivers devicessudoadd-apt-repository ppa:graphics-drivers/ppasudoaptupdatesudoaptinstallnvidia-driver-470-server# for ubuntu18.04nvidia-smi

1.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.run

cuda的安装过程中,需要你在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-V

bash窗口打印如下信息表示cuda11.3安装正常

nvcc: NVIDIA(R)Cuda compiler driver<br>Copyright(c)2005-2021 NVIDIA Corporation<br>Built on Sun_Mar_21_19:15:46_PDT_2021<br>Cuda compilation tools, release11.3, V11.3.58<br>Build cuda_11.3.r11.3/compiler.29745058_0<br>

1.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/sudochmoda+r /usr/local/cuda/include/cudnn.hsudochmoda+r /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# 快速验证一下tensorrt+cuda+cudnn是否安装正常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_mnist

bash窗口打印类似如下图的手写数字识别表明cuda+cudnn+tensorrt安装正常

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/yolov7

cdtensorrt-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--onnx=yolov7-tiny.onnx--saveEngine=yolov7-tiny.trt--buildOnly--minShapes=images:1x3x640x640--optShapes=images:4x3x640x640--maxShapes=images:8x3x640x640../../../../TensorRT-8.4.2.4/bin/trtexec--onnx=yolov7.onnx--saveEngine=yolov7.trt--buildOnly--minShapes=images:1x3x640x640--optShapes=images:4x3x640x640--maxShapes=images:8x3x640x640../../../../TensorRT-8.4.2.4/bin/trtexec--onnx=yolov7x.onnx--saveEngine=yolov7x.trt--buildOnly--minShapes=images:1x3x640x640--optShapes=images:4x3x640x640--maxShapes=images:8x3x640x640# 1280../../../../TensorRT-8.4.2.4/bin/trtexec--onnx=yolov7-w6.onnx--saveEngine=yolov7-w6.trt--buildOnly--minShapes=images:1x3x1280x1280--optShapes=images:4x3x1280x1280--maxShapes=images: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--size=640--batch_size=1--img=../../data/6406401.jpg--show--savePath./app_yolov7--model=../../data/yolov7/yolov7-w6.trt--size=1280--batch_size=1--img=../../data/6406401.jpg--show--savePath=../# infer video./app_yolov7--model=../../data/yolov7/yolov7-tiny.trt--size=640--batch_size=8--video=../../data/people.mp4--show# infer camera./app_yolov7--model=../../data/yolov7/yolov7-tiny.trt--size=640--batch_size=4--cam_id=0--show

五、结束语

都看到这里了,觉得可以请点赞收藏,有条件的去仓库点个star,仓库:https://github.com/FeiYull/TensorRT-Alpha/tree/legacy


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/25 5:05:16

Atlas 300V 24G AI推理加速卡部署YOLO完整指南

最近在折腾目标检测的推理加速&#xff0c;不少朋友跑来问我同一个问题&#xff1a;“atlas 300v 24g 是运算加速卡吗”。这个问题也把我拉回了去年第一次接触 Atlas 的场景。我的回答很干脆&#xff1a;它是AI推理加速卡&#xff0c;不是传统意义上的显卡&#xff0c;也不是训…

作者头像 李华
网站建设 2026/9/25 5:04:58

【Python深度学习】LSTM网络使用Batch Size

在深度学习中,Batch Size(批量大小)是控制数据处理批次的重要参数。特别是使用 Keras 构建神经网络时,Batch Size 是决定模型性能、训练速度和预测精度的关键因素。它决定了模型在执行每次权重更新之前所需处理的样本数量,直接影响模型的学习效率和资源消耗。 本文将结合…

作者头像 李华
网站建设 2026/9/25 5:04:57

AgentScope 2.0:企业级多Agent协同与RAG服务化实践

1. 这不是又一个“AI Agent框架”——AgentScope到底在解决什么真问题&#xff1f;最近在几个技术群里&#xff0c;总有人甩出一句&#xff1a;“推荐一个牛逼的AgentScope系统”&#xff0c;然后附上个GitHub链接就撤了。我一开始也以为是另一个披着Agent外衣的LLM调用封装库&…

作者头像 李华
网站建设 2026/9/25 5:04:25

500元AI工牌拆解:主控成本不到10元,ESP32-C3如何撑起智能硬件?

/* 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 5:02:39

Spartan-3E复现实战:ISE 14.7工程、ModelSim仿真与ChipScope调试指南

/* 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 5:02:37

征途源码服务端客户端数据库联调实战:从编译到协议对齐

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

作者头像 李华