YOLOv8 TensorRT C++部署实战详解:从XMake构建到推理流水线

YOLOv8 TensorRT C++部署实战详解:从XMake构建到推理流水线

本项目已上传到GitHub https://github.com/Bayesianovich/yolov8-fire-smoke-detection,欢迎star⭐ ⭐ ⭐

项目概述

本项目是一个基于YOLOv8和TensorRT的高性能火灾烟雾检测系统,使用C++实现,具有以下特点:

  • 实时检测性能:利用TensorRT GPU加速,实现高性能推理
  • 智能双条件触发:只有同时检测到火和烟时才触发警报
  • 现代化构建系统:使用XMake替代CMake,配置更简洁
  • 内存高效管理:零拷贝内存管理和CUDA流异步处理

技术架构

核心组件

项目结构
├── main.cpp                    # 主应用程序
├── include/
│   └── yolov8_trt_demo.h      # 检测器头文件
├── src/
│   └── yolov8_trt_demo.cpp    # 检测器实现
├── xmake.lua                  # XMake构建配置
├── classes.txt                # 类别标签文件
└── firesmokev1.engine         # TensorRT引擎文件

关键依赖库

  • TensorRT 8.6+: GPU推理加速引擎
  • CUDA 12.1+: GPU并行计算平台
  • cuDNN 8.9+: 深度学习GPU加速库
  • OpenCV 4.8+: 计算机视觉处理库

XMake构建系统深度解析

为什么选择XMake而非CMake?

XMake相比CMake具有以下优势:

  1. 语法简洁:基于Lua的配置语言,学习成本更低
  2. 自动依赖管理:内置包管理系统
  3. 跨平台支持:统一的配置文件支持多平台
  4. 构建速度:增量编译和并行构建优化

XMake配置文件详解

1. 项目基础配置
-- 项目基本信息
set_project("yolov8_demo")
set_version("1.0.0")
set_languages("c++17")

-- 构建模式配置
add_rules("mode.debug", "mode.release")
2. 路径变量管理
-- 集中管理依赖库路径
local tensorrt_root = "F:/TensorRT-8.6.1.6"        
local cudnn_root = "F:/cudnn_64-8.9.0.131"         
local cuda_root = "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1"  
local opencv_root = "F:/opencv_cpu_install"        
3. 目标配置
target("yolov8_demo")
    set_kind("binary")
    
    -- 源文件配置
    add_files("main.cpp", "src/yolov8_trt_demo.cpp")
    
    -- 头文件包含
    add_includedirs(
        "include",
        tensorrt_root .. "/include",
        cudnn_root .. "/include",
        cuda_root .. "/include",
        opencv_root .. "/include"
    )
    
    -- 库文件链接
    add_linkdirs(
        tensorrt_root .. "/lib",
        cudnn_root .. "/lib/x64",
        cuda_root .. "/lib/x64",
        opencv_root .. "/lib"
    )
4. 依赖库链接
-- TensorRT核心库
add_links(
    "nvinfer",          -- 推理引擎
    "nvinfer_plugin",   -- 插件支持
    "nvonnxparser",     -- ONNX解析
    "nvparsers"         -- 其他格式解析
)

-- CUDA运行时库
add_links("cudart", "cublas", "curand")

-- cuDNN深度学习库
add_links("cudnn")

-- OpenCV模块(版本相关)
add_links(
    "opencv_core480",
    "opencv_imgproc480", 
    "opencv_imgcodecs480",
    "opencv_highgui480",
    "opencv_videoio480",
    "opencv_video480",
    "opencv_dnn480"
)
5. 自动化构建后处理
after_build(function (target)
    local targetdir = target:targetdir()
    
    -- 自动复制必要的DLL文件
    os.trycp(opencv_root .. "/bin/opencv_*.dll", targetdir)
    os.trycp(tensorrt_root .. "/lib/*.dll", targetdir)
    os.trycp(cuda_root .. "/bin/cudart64*.dll", targetdir)
    os.trycp(cudnn_root .. "/bin/*.dll", targetdir)
    
    -- 复制项目资源文件
    os.trycp("*.engine", targetdir)
    os.trycp("classes.txt", targetdir)
end)

常用构建命令

# 构建发布版本(推荐)
xmake build

# 构建调试版本
xmake config --mode=debug
xmake build

# 清理构建文件
xmake clean

# 清理TensorRT引擎文件
xmake clean-engines

# 运行程序
xmake run yolov8_demo

# 显示项目信息
xmake info

YOLOv8 TensorRT检测器实现解析

核心类结构

class 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值