[C++]使用C++部署yolov9的tensorrt模型进行目标检测

news/2024/7/10 0:10:21 标签: 目标检测, 人工智能, 计算机视觉

部署YOLOv9的TensorRT模型进行目标检测是一个涉及多个步骤的过程,主要包括准备环境、模型转换、编写代码和模型推理。

首先,确保你的开发环境已安装了NVIDIA的TensorRT。TensorRT是一个用于高效推理的SDK,它能对TensorFlow、PyTorch等框架训练的模型进行优化,从而加速模型在NVIDIA GPU上的运行速度。

接下来,你需要将YOLOv9的模型转换为TensorRT模型。这一步涉及使用TensorRT的API来解析原始的YOLOv9模型,并将其转换为TensorRT可以识别的格式。转换过程中,TensorRT会进行一系列的优化,包括层融合、精度校准等,以提高推理速度。

在模型转换完成后,你可以开始编写C++代码来加载并运行TensorRT模型。你需要使用TensorRT提供的C++ API来加载模型,并创建执行上下文。然后,你可以将输入数据(例如,来自摄像头的实时视频流或图像文件)传递给模型进行推理。

在模型推理过程中,TensorRT会执行一系列的计算操作,最终输出目标检测的结果。这些结果通常包括目标物体的类别、置信度以及边界框的坐标。你可以将这些结果显示在原始图像上,或者使用其他方式进行处理,如发送到另一个系统进行后续分析。

总之,使用C++部署YOLOv9的TensorRT模型进行目标检测是一个复杂但高效的过程。通过TensorRT的优化和加速,你可以在NVIDIA GPU上实现快速、准确的目标检测。这对于实时监控系统、自动驾驶等领域具有重要的应用价值。

安装步骤

  1. 下载p yolov9 and download yolov9-c.pt 模型.
  2. 转到onnx模型:
  • 首先需要修改 utils/general.py 在yolov9官方地址 教程.
  • 导出模型
python export.py --weights yolov9-c.pt --include onnx
  1. 转换到tensorrt模型:
trtexec.exe --onnx=yolov9-c.onnx --explicitBatch --saveEngine=yolov9-c.engine --fp16
  1. 在CMakeLists.txt设置 opencv和 tensorrt 路径:
# Find and include OpenCV
set(OpenCV_DIR "your path to OpenCV")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

# Set TensorRT path if not set in environment variables
set(TENSORRT_DIR "your path to TensorRT")
  1. 编译:
mkdir build
cd build
cmake ..
cmake --build . --config Release

7.使用:

预测图片

yolov9-tensorrt.exe yolov9-c.engine test.jpg

预测文件夹

yolov9-tensorrt.exe yolov9-c.engine data

预测视频

yolov9-tensorrt.exe yolov9-c.engine test.mp4 # the video path

测试环境

  • TensorRT 8.4.2.4
  • CUDA 11.7+cudnn8.8.0
  • Windows 10

【演示视频】

使用C++部署yolov9的tensorrt模型进行目标检测_哔哩哔哩_bilibili测试环境TensorRT 8.4.2.4CUDA 11.7+cudnn8.8.0Windows 10, 视频播放量 1、弹幕量 0、点赞数 2、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:又一篇王炸论文登场!目标检测之YOLO V9来了!,yolov9+bytetrack+pyqt5实现目标追踪结果演示,YOLOv9华强买瓜,Yolov9教程来了!赶快学习吧!,将yolov9封装成类几句代码实现目标检测任务,YOLOv8检测界面-PyQt5实现,【yolov8-03】五分钟学会yolov8做目标检测,C#环境下部署YOLOv8模型,目标检测,超级简单,用C#部署yolov8的tensorrt模型进行目标检测winform最快检测速度,使用C#部署openvino-yolov5s模型icon-default.png?t=N7T8https://www.bilibili.com/video/BV1Ly421B7rK/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee

【部署代码下载】 

https://download.csdn.net/download/FL1623863129/88874459


http://www.niftyadmin.cn/n/5393691.html

相关文章

测试C#使用ViewFaceCore实现图片中的人脸遮挡

基于ViewFaceCore和DlibDotNet都能实现人脸识别,准备做个遮挡图片中人脸的程序,由于暂时不清楚DlibDotNet返回的人脸尺寸与像素的转换关系,最终决定使用ViewFaceCore实现图片中的人脸遮挡。   新建Winform项目,在Nuget包管理器中…

MySQL——基础内容

目录 第01章_数据库概述 关系型数据库(RDBMS)——表、关系模型 非关系型数据库(非RDBMS) 表、记录、字段 表的关联关系 一对一关联 一对多关系 多对多 自我引用 第02章_MySQL环境搭建 登录命令 常用命令 show databases; create database use 数据库名 show tables 第03章…

Vue+SpringBoot打造高校实验室管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实验管理模块2.4 实验设备模块2.5 实验订单模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示五、样例代码5.1 查询实验室设备5.2 实验放号5.3 实验预定 六、免责说明 一、摘…

kafka生产者2

1.数据可靠 • 0:生产者发送过来的数据,不需要等数据落盘应答。 风险:leader挂了之后,follower还没有收到消息。。。。 • 1:生产者发送过来的数据,Leader收到数据后应答。 风险:leader应答…

R语言【FNN】——knn.dist():k近邻距离

Package FNN version 1.1.3.2 Description 快速k近邻距离搜索算法。 Usage knn.dist(data, k10, algorithmc("kd_tree", "cover_tree", "CR", "brute"))knnx.dist(data, query, k10, algorithmc("kd_tree", "cover_t…

Python及Pydev调试程序传递参数方法的实践

在Python中,可以使用sys.argv来获取命令行参数。下面是一个示例的Python脚本,展示了如何通过命令行传递参数并打印输出: import sys# 判断是否有传入参数 if len(sys.argv) > 1:# 获取第二个参数(索引为1)param s…

c++ Qt 网络连接

1、基础概念 1.1 TCP/UDP TCP 是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、 数据无失序、数据无重复到达的通信) 适用情况: 1.SN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议 2、适合于对传输质量要求较…

typecho 给文章创建目录树

受益于 shortcode 短代码插件和泽泽短代码中目录树的显示样式&#xff0c;形成了自己实现添加文章目录的思路&#xff1a; 一、文章目录树的结构 <div id"toc"><div class"toc-left"><div class"toc-btn" type"button&quo…