当前位置: 首页 > news >正文

[C++][cmake]使用C++部署yolov12目标检测的tensorrt模型支持图片视频推理windows测试通过

最近悄悄出了yolov12框架,标志着目标检测又多了一个检测利器,于是尝试在windows下部署yolov12的tensorrt模型,并最终成功。

重要说明:安装环境视为最基础操作,博文不做环境具体步骤,可以百度查询对应安装步骤即可。

测试通过环境:

vs2019

windows 10 RTX2070 8G显存

cmake==3.30.1

cuda11.8.0+cudnn8.9.7

Tensorrt==8.6.1.6

opencv==4.9.0

anaconda3+python3.10

torch==2.5.1+cu124

部署过程:

部署最费时间是安装环境。首先确保自己电脑是win10或者win11并确保电脑有一块nvidia显卡。查看自己显卡就是打开任务管理器(win10是ctrl+alt+delete,win11是ctrl+shift+ESC),在性能里面查看,如下图

785b7ad428034221a4ff1a167855b167.png

如果看到GPU0和GPU1等等表示有显卡,但是需要看到NVIDIA字样才能表示有独立显卡。其他是AMD显卡或者核心显卡,这些都是不能用于cuda的,也就是电脑不支持tensorrt加速和cuda使用的。

首先需要大家安装好VS2019或者VS2022,还有如下环境,由于安装包很多需要去官方搜索下载,需要自己安装,其中版本可以有区别,但是如果快速复现这个项目,最好安装位一致版本这样更快复现出项目。

cmake==3.30.1

cuda11.8.0+cudnn8.9.7

Tensorrt==8.6.1.6

opencv==4.9.0

anaconda3+python3.10

torch==2.5.1+cu124

假设大家安装好上面的环境。下面具体怎么部署,首先去yolov12官方仓库下载yolo12模型,这样下载yolov12n.pt

然后将pt模型放进项目里面,切换自己安装好的yolov12环境里面并切换到项目目录,使用下面命令直接转换

yolo export model=yolov12n.pt format=onnx dynamic=False opset=12

得到onnx模型以后我们开始编译源码。

首先我们修改CMakeLists.txt文件,将源码里面opencv路径和tensorrt路径修改成自己路径

# Find and include OpenCV

set(OpenCV_DIR "D:\\lufiles\\opencv490\\build\\x64\\vc16\\lib")

# Set TensorRT path if not set in environment variables

set(TENSORRT_DIR "D:\\lufiles\\TensorRT-8.6.1.6")

然后执行

mkdir build

cd build

cmake ..

之后去build文件夹找到sln文件用vs打开它,然后选择x64 release,并选中ALL_BUILD右键单击选择生成

之后build\Release文件夹下面有个yolov12-tensorrt.exe生成。之后我们开始转换onnx模型到tensorrt模型,执行命令

trtexec --onnx=yolov12n.onnx --saveEngine=yolov12n.engine --fp16

稍等20多分钟后会自动生成yolov12n.engine文件.

下面我们开始测试图片

yolov12-tensorrt.exe yolov12n.engine "test.jpg"

然后测试视频

yolov12-tensorrt.exe yolov12n.engine "car.mp4"

特别注意:

  1. tensorrt模型依赖于硬件,所以不是通用的需要在电脑重新转换,否则可能无法使用;
  2. 如需要二次开发,需要读懂调用代码,需要有一定c++基础才行,否则无法进行二次开发。

相关文章:

  • LUCEDA IPKISS Tutorial 81:通过参数函数定义形状
  • Spring Cloud源码 - Eureka源码原理分析
  • 17142弹珠堆放
  • ROS的action通信——实现阶乘运算(三)
  • echarts记录(柱状、折线、环形饼图,双柱,日期组件封装)
  • 【洛谷入门赛】B4018 游戏与共同语言
  • spring MVC执行流程
  • xss-lab
  • python与C系列语言的差异总结(3)
  • 《论区块链技术及应用》审题技巧 - 系统架构设计师
  • smolagents学习笔记系列(五)Tools-in-depth-guide
  • 每日一题-设计内存分配器;详细分析思路以及多解法
  • 如何防止 Docker 注入了恶意脚本
  • C++学习之C概述、数据类型、进制转换与数据存储
  • IntelliJ创建Springboot项目
  • spark的一些指令
  • 链式二叉树
  • 在 Ansys Mechanical 中解决干涉拟合
  • <modal>修改取消按钮样式
  • 半导体芯片制造中 W CVD(钨化学气相沉积)
  • 中国建设银行官网招聘/长沙网站优化公司
  • 济南槐荫区做网站的/推广引流方法与渠道
  • 微信开发小程序步骤/关键词优化话术
  • 网站建设推广ppt/基本seo
  • 在域名做网站/视频剪辑培训
  • 天津网站建设推荐安徽秒搜科技/大片网站推广