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

TenstoRT加速YOLOv11——C++端加速

前言

本文介绍C++语言下使用TenstoRT加速YOLOv11推理

一.资料下载

1.camke下载

https://cmake.org/download/

2.tensorrtx-master下载

https://link.gitcode.com/i/e6e98255605d4185b43a58662eb49fb6?uuid_tt_dd=11_80042856162-1735808112822-061453&isLogin=1&from_id=151696398

3.dirent.h 下载

https://link.gitcode.com/i/d3c3033a0c0d19740cfee7ee482bace9?uuid_tt_dd=11_80042856162-1735808112822-061453&isLogin=1&from_id=142399431

4.opencv下载

自行下载

二.部署

我们打开tensorrtx-master中的YOLOv11文件夹


我们看到CMakeLists这个文件
我将我的贴出来,请仔细阅读根据自己的设备,下载地址进行修改:

cmake_minimum_required(VERSION 3.10)project(yolov11)
# 设置CUDA编译器标志,允许不支持的编译器
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -allow-unsupported-compiler")
add_definitions(-std=c++11)
add_definitions(-DAPI_EXPORTS)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)set(CMAKE_CUDA_COMPILER "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.4/bin/nvcc.exe") #这里去CUDA文件夹中找到自己的nvcc文件路径
set(CMAKE_CUDA_ARCHITECTURES 89) #这里代表显卡的系列,我是40就是89
enable_language(CUDA)include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/plugin)# include and link dirs of cuda and tensorrt, you need adapt them if yours are different
if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")message("embed_platform on")include_directories(/usr/local/cuda/targets/aarch64-linux/include)link_directories(/usr/local/cuda/targets/aarch64-linux/lib)
else()message("embed_platform off")# cuda 注意这里都改成自己CUDA的路径include_directories("C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.4/include")link_directories("C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.4/lib/x64")# tensorrt    注意这里都改成自己tensorrt的路径include_directories("E:/tenstort/TensorRT-10.3.0.26/include")link_directories("E:/tenstort/TensorRT-10.3.0.26/lib")
endif()add_library(myplugins SHARED ${PROJECT_SOURCE_DIR}/plugin/yololayer.cu)
set_target_properties(myplugins PROPERTIES CUDA_SEPARABLE_COMPILATION ON) # 分离编译
target_link_libraries(myplugins nvinfer cudart)find_package(OpenCV)
include_directories(${OpenCV_INCLUDE_DIRS})file(GLOB_RECURSE SRCS ${PROJECT_SOURCE_DIR}/src/*.cpp ${PROJECT_SOURCE_DIR}/src/*.cu)add_executable(yolo11_det ${PROJECT_SOURCE_DIR}/yolo11_det.cpp ${SRCS})
target_link_libraries(yolo11_det nvinfer)
target_link_libraries(yolo11_det cudart)
target_link_libraries(yolo11_det myplugins)
target_link_libraries(yolo11_det ${OpenCV_LIBS})add_executable(yolo11_cls ${PROJECT_SOURCE_DIR}/yolo11_cls.cpp ${SRCS})
target_link_libraries(yolo11_cls nvinfer)
target_link_libraries(yolo11_cls cudart)
target_link_libraries(yolo11_cls myplugins)
target_link_libraries(yolo11_cls ${OpenCV_LIBS})add_executable(yolo11_seg ${PROJECT_SOURCE_DIR}/yolo11_seg.cpp ${SRCS})
target_link_libraries(yolo11_seg nvinfer)
target_link_libraries(yolo11_seg cudart)
target_link_libraries(yolo11_seg myplugins)
target_link_libraries(yolo11_seg ${OpenCV_LIBS})add_executable(yolo11_pose ${PROJECT_SOURCE_DIR}/yolo11_pose.cpp ${SRCS})
target_link_libraries(yolo11_pose nvinfer)
target_link_libraries(yolo11_pose cudart)
target_link_libraries(yolo11_pose myplugins)
target_link_libraries(yolo11_pose ${OpenCV_LIBS})add_executable(yolo11_obb ${PROJECT_SOURCE_DIR}/yolo11_obb.cpp ${SRCS})
target_link_libraries(yolo11_obb nvinfer)
target_link_libraries(yolo11_obb cudart)
target_link_libraries(yolo11_obb myplugins)
target_link_libraries(yolo11_obb ${OpenCV_LIBS})

加入opencv的地址,我们要在环境变量中加入opencv的地址如下:

加入之后我们进入camke编译的步骤
如果你是第一次编译c++,没有使用过mingw,你可以直接打开


修改地址点击Configure即可开始编译
如果你使用过mingw,请按下面方法编译
1.清理环境:打开一个 全新的普通命令行窗口(CMD 或 PowerShell)
2.清除冲突变量:在新窗口中输入并执行:

set CC=
set CXX=
set RC=

3.激活纯正 MSVC 环境:在同一个窗口中,运行 Visual Studio 的开发人员命令提示符脚本:

"D:\Microsoft Visual Studio\Community\VC\Auxiliary\Build\vcvars64.bat"

4.导航到您的构建目录

cd/d E:\tenstort\tensorrtx-master\yolo11\build2           (在yolo11中自己创建一个确保文件夹中没有任何文件)

6.开始编译

cmake ..


等待编译成功

成功后用VS2022打开这个文件

这个就是检测的文件,我们看到还有分割,姿态识别等,拿检测举例
这里理论上camke成功后直接运行就行了,但是这里应该会有几个共性问题,主要是因为tenstort版本问题,这套代码是基于8.X版本写的,如果你用的是10.X就会有问题。
1.代码因为版本不适配,这个问题一般的大模型都可以解决改好。
2.函数名称改变

在这里改过来就可以了。
3.不同设备可能遇到各种问题,如果解决不了可以放评论区大家一起看看。

三.运行

首先,我们需要将pt转换为wts

用pycharm打开它,终端输入,会在与pt同级下得到.wts

用VS2022编译成功后的文件就在这里了,将待检测的图片和.wts文件复制过来。

鼠标右击,打开终端输入

.\yolo11_det.exe -s yolo11n.wts yolo11n.engine n

再输入

.\yolo11_det.exe -d yolo11n.engine ../images [c/g] #c是CPU,G是GPU

这样就成功啦!看看结果

http://www.dtcms.com/a/394513.html

相关文章:

  • 面试技巧第三篇:嵌入式操作系统基础考点:任务、调度和中断
  • 简单使用Vanna
  • 【面板数据】各省环境保护支出统计数据集(2007-2023年)
  • 无需格式转换!FileOptimizer将文件体积压至极致的软件
  • 【论文速递】2025年第17周(Apr-20-26)(Robotics/Embodied AI/LLM)
  • Spring Framework 入门:传统 XML 配置启动方式详解
  • 构建AI智能体:四十、K-Means++与RAG的融合创新:智能聚类与检索增强生成的深度应用
  • Python 中,判断元素是否存在于列表(list)和判断键是否存在于字典(dict)
  • 如何在 Windows 上恢复已删除/未保存的 PowerPoint 文件 - 4 种快速方法
  • 【含文档+PPT+源码】基于过滤协同算法的城市旅游网站的设计与实现
  • week 2
  • Core Animation基础
  • OpenVLC解析
  • 【AI论文】ScaleCUA:借助跨平台数据扩展开源计算机使用代理(系统/工具)规模
  • NW951NW916美光固态闪存NW926NW927
  • Python 如何优雅处理 100GB 数据集——实战案例
  • 快速学习Python(有其他语言基础)
  • 全网首发! Nvidia Jetson Thor 128GB DK 刷机与测评(六)常用功能测评 pi0、pi0.5 环境部署
  • git环境操作指南
  • 【C语言数据结构】题目解析:第1章课后习题
  • 数字魔方,完成二阶、三阶、四阶、五阶复原提示
  • 电子元器件-二级管终篇:基本原理,元件作用与应用场景、参数/数据手册详解,类型介绍/实战
  • AIGC技术深度解析:生成式AI的革命性突破与产业应用实战
  • 数据结构(C语言篇):(十九)归并排序和非比较排序
  • MySQL 字符串拼接
  • 安全运维-Nginx
  • 【Linux命令从入门到精通系列指南】reboot 命令详解:安全重启与关机的终极控制指南
  • LuaC API开发环境搭建保姆级教程
  • cmake安装踩坑笔记
  • 一文详解回归分析的探索、分析、检验阶段,以Stata和SPSS为例