YOLOv11 C++ TensorRT

引用

YOLOv11 C++ TensorRT项目是一个用C++实现并使用NVIDIA TensorRT进行优化的高性能对象检测解决方案。该项目利用 YOLOv11 模型提供快速准确的对象检测,并利用 TensorRT 最大限度地提高推理效率和性能。

📢 更新

主要特点:

模型转换:将 ONNX 模型转换为 TensorRT 引擎文件以加速推理。

视频推理:有效地对视频文件进行对象检测。

图像推理:对单个图像执行对象检测。

高效率:针对使用 NVIDIA GPU 的实时物体检测进行了优化。

使用 CUDA 进行预处理:支持 CUDA 的预处理,可实现更快的输入处理。

YOLOv11 模型的基准推理时间

📂 项目结构

YOLOv11-TensorRT/

├── CMakeLists.txt # Build configuration for the project

├── include/ # Header files

├── src/

│ ├── main.cpp # Main entry point for the application

│ ├── yolov11.cpp # YOLOv11 implementation

│ └── preprocess.cu # CUDA preprocessing code

├── assets/ # Images and benchmarks for README

└── build/ # Compiled binaries

🛠️ 设置

先决条件

CMake(版本 3.18 或更高版本)

TensorRT(V8.6.1.6:用于使用 YOLOv11 进行优化推理。)

CUDA 工具包(V11.7:用于 GPU 加速)

OpenCV(V4.10.0:用于图像和视频处理)

NVIDIA GPU(计算能力 7.5 或更高)

安装

cd YOLOv11-TensorRT

更新 CMakeLists.txt 中的 TensorRT 和 OpenCV 路径:

set(TENSORRT_PATH "F:/Program Files/TensorRT-8.6.1.6") # Adjust this to your path

构建项目:

mkdir build

cd build

cmake ..

make -j$(nproc)

🚀 使用方法

将 Yolov11 转换为 ONNX 模型

from ultralytics import YOLO

Load the YOLO model

model = YOLO("yolo11s.pt")

#Export the model to ONNX format

export_path = model.export(format="onnx")

将 ONNX 模型转换为 TensorRT 引擎

要将 ONNX 模型转换为 TensorRT 引擎文件,请使用以下命令:

./YOLOv11TRT convert path_to_your_model.onnx path_to_your_engine.engine.

path_to_your_model.onnx:ONNX 模型文件的路径。

path_to_your_engine.engine:TensorRT 引擎文件的保存路径。

对视频进行推理

要对视频运行推理,请使用以下命令:

./YOLOv11TRT infer_video path_to_your_video.mp4 path_to_your_engine.engine

path_to_your_video.mp4:输入视频文件的路径。

path_to_your_engine.engine:TensorRT 引擎文件的路径。

对视频进行推理

对图像运行推理 要在图像上运行推理,请使用以下命令:

./YOLOv11TRT infer_image path_to_your_image.jpg path_to_your_engine.engine

path_to_your_image.jpg:输入图像文件的路径。

path_to_your_engine.engine:TensorRT 引擎文件的路径。

⚙️ 配置

CMake 配置

在 CMakeLists.txt 中,如果 TensorRT 和 OpenCV 安装在非默认位置,请更新它们的路径:

设置TensorRT安装路径

#Define the path to TensorRT installation

set(TENSORRT_PATH "F:/Program Files/TensorRT-8.6.1.6") # Update this to the actual path for TensorRT

确保该路径指向安装 TensorRT 的目录。

故障排除

找不到 nvinfer.lib:确保 TensorRT 已正确安装且 nvinfer.lib 位于指定路径中。更新 CMakeLists.txt 以包含 TensorRT 库的正确路径。

链接器错误:验证所有依赖项(OpenCV、CUDA、TensorRT)是否正确安装,以及它们的路径是否在 CMakeLists.txt 中正确设置。

运行时错误:确保您的系统具有正确的 CUDA 驱动程序,并且 TensorRT 运行时库可访问。将 TensorRT 的 bin 目录添加到您的系统 PATH。

相关推荐
滨HI02 小时前
C++ opencv简化轮廓
开发语言·c++·opencv
醉方休3 小时前
Webpack loader 的执行机制
前端·webpack·rust
学习路上_write3 小时前
FREERTOS_互斥量_创建和使用
c语言·开发语言·c++·stm32·单片机·嵌入式硬件
Coding茶水间3 小时前
基于深度学习的路面坑洞检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
图像处理·人工智能·深度学习·yolo·目标检测·计算机视觉
闻缺陷则喜何志丹4 小时前
【SOSDP模板 容斥原理 逆向思考】3757. 有效子序列的数量|分数未知
c++·算法·力扣·容斥原理·sosdp·逆向思考
BestOrNothing_20154 小时前
一篇搞懂 C++ 重载:函数重载 + 运算符重载,从入门到会用(含 ++、<<、== 实战)
c++·函数重载·运算符重载·operator·前置后置++·重载与重写
2501_941144425 小时前
Python + C++ 异构微服务设计与优化
c++·python·微服务
程序猿编码5 小时前
PRINCE算法的密码生成器:原理与设计思路(C/C++代码实现)
c语言·网络·c++·算法·安全·prince
charlie1145141916 小时前
深入理解C/C++的编译链接技术6——A2:动态库设计基础之ABI设计接口
c语言·开发语言·c++·学习·动态库·函数
Cx330❀6 小时前
C++ STL set 完全指南:从基础用法到实战技巧
开发语言·数据结构·c++·算法·leetcode·面试