Windows编译运行yolov9-bytetrack-tensorrt (C++)

2024-04-08 18:52

本文主要是介绍Windows编译运行yolov9-bytetrack-tensorrt (C++),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Windows编译运行yolov9-bytetrack-tensorrt(C++)

  • 1 基础环境
  • 2 编译yolov9-bytetrack-tensorrt
    • (1)下载yolov9-bytetrack-tensorrt源码
    • (2)修改CMakeLists.txt
    • (3)CMake编译
  • 3 yolov9模型转换成TensorRT模型
    • (1)下载yolov9
    • (2)下载预训练模型
    • (3)将模型转换成onnx格式
    • (4)将onnx模型转换成tensorrt格式
  • 4 执行程序
  • 参考文章

1 基础环境

TensorRT 8.6
CUDA 11.8
Eigen 3.3
OpenCV 4.8(CUDA 11.8编译)
Visual Studio 2017 C++17编译器
CMake 3.21.4
Windows 10

2 编译yolov9-bytetrack-tensorrt

(1)下载yolov9-bytetrack-tensorrt源码

项目地址spacewalk01/yolov9-bytetrack-tensorrt

(2)修改CMakeLists.txt

设置opencv、Eigen和tensorrt路径。

# Find Eigen library
#find_package(Eigen3 3.3 REQUIRED)
include_directories(D:/Librarys/eigen-3.3.3)# Find and include OpenCV
set(OpenCV_DIR "D:/Program Files/opencv/opencv-4.8.0/install")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})# Set TensorRT path if not set in environment variables
set(TENSORRT_DIR "D:/Librarys/TensorRT-8.6.1.6")

(3)CMake编译

使用VS2017编译器C++17,CUDA用v11.8。
在这里插入图片描述

注意:cuda默认会找环境变量中CUDA_PATH对应的版本,如果opencv是cuda编译的,该cuda版本要一致,避免出错。在这里插入图片描述

3 yolov9模型转换成TensorRT模型

(1)下载yolov9

创建conda环境,下载yolov9代码,并执行以下命令,详细参考前文yolov9训练自己的数据。

$ git clone https://github.com/WongKinYiu/yolov9.git
$ cd yolov9
$ conda create --name yolov9 python=3.8
$ pip install -r requirement.txt

(2)下载预训练模型

yolov9-c.pt

(3)将模型转换成onnx格式

a. 将TensorRT-YOLOv9目录下的 reparameterize.py放到yolov9目录下,在yolov9目录下执行以下命令,也可以直接官网下载转换好的模型yolov9-c-converted.pt。

python reparameterize.py yolov9-c.pt yolov9-c-converted.pt

b. 导出onnx模型,在yolov9目录下执行以下命令,生成yolov9-c-converted.onnx

python export.py --weights yolov9-c-converted.pt --include onnx

(4)将onnx模型转换成tensorrt格式

D:\Librarys\TensorRT-8.6.1.6\bin目录下执行以下命令:

trtexec.exe --onnx=yolov9-c-converted.onnx --explicitBatch --saveEngine=yolov9-c.engine --fp16

4 执行程序

显卡GTX1080,推理时间约50ms。
在这里插入图片描述

参考文章

spacewalk01/yolov9-bytetrack-tensorrt

这篇关于Windows编译运行yolov9-bytetrack-tensorrt (C++)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/886276

相关文章

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe