[cmake]基于C++实现yolov5-seg实例分割tensorrt模型部署

张开发
2026/4/20 11:45:41 15 分钟阅读

分享文章

[cmake]基于C++实现yolov5-seg实例分割tensorrt模型部署
YOLOv5-Seg-TensorRT项目概述本项目实现了基于YOLOv5分割模型的TensorRT加速推理支持目标检测和实例分割功能。通过TensorRT的优化能够高效处理图像和视频输入实时输出检测结果和分割掩码。算法原理1. 模型架构基于YOLOv5目标检测模型扩展了实例分割功能使用TensorRT进行模型加速支持FP16精度输入尺寸640x640输出包括目标检测结果和分割掩码2. 工作流程预处理调整图像大小并保持宽高比填充图像至640x640尺寸转换为CHW格式并归一化推理使用TensorRT引擎执行模型推理输出两个结果检测结果和分割原型后处理解析检测结果过滤低置信度目标应用非最大抑制NMS生成分割掩码并调整至原始图像尺寸可视化绘制边界框和类别标签应用分割掩码并与原图混合安装环境必需依赖Visual Studio 2019CMake 3.30.1OpenCV 4.9.0TensorRT 8.6.1.6CUDA 11.8.0cuDNN 8.9.7环境配置安装CUDA和cuDNN安装TensorRT并设置环境变量安装OpenCV并配置路径配置CMake以指向正确的依赖路径运行步骤1. 构建项目mkdirbuildcdbuild cmake..cmake--build.--configRelease2. 准备模型不可以直接使用提供的yolov5s-seg.engine模型文件需要自己电脑重新转换因为tensorrt模型依赖于硬件不同硬件模型适配不一样或使用ONNX模型文件程序会自动转换为engine格式3. 运行推理命令行参数yolov5-seg-tensorrt.exeengine_pathimage/video_path示例# 处理单张图像yolov5-seg-tensorrt.exe models/yolov5s-seg.engine images/bus.jpg# 处理视频yolov5-seg-tensorrt.exe models/yolov5s-seg.engine videos/input.mp44. 查看结果处理图像时结果会保存为原始文件名_output.jpg处理视频时结果会保存为output.mp4注意事项环境配置确保CUDA、TensorRT和OpenCV的版本与项目要求一致模型文件确保模型文件路径正确支持.onnx和.engine格式输入格式支持的图像格式jpg、jpeg、png输入格式支持的视频格式mp4、avi、m4v、mpeg、mov、mkv、webm性能优化首次运行会进行模型预热之后的推理速度会更快内存要求确保GPU有足够的内存来加载模型和处理输入文件结构与作用├── src/ │ ├── YOLOv5Seg.cpp # YOLOv5分割模型实现 │ ├── YOLOv5Seg.h # YOLOv5分割模型头文件 │ ├── common.h # 通用工具函数 │ ├── cuda_utils.h # CUDA相关工具函数 │ ├── logging.h # 日志处理 │ └── macros.h # 宏定义 ├── main.cpp # 主入口文件 ├── CMakeLists.txt # 构建配置文件 ├── models/ # 模型文件目录 │ └── yolov5s-seg.onnx # ONNX格式模型 ├── images/ # 测试图像目录 │ ├── bus.jpg # 测试图像1 │ └── zidane.jpg # 测试图像2 └── build/ # 构建输出目录文件作用详解main.cpp主入口文件处理命令行参数加载模型和输入文件执行预处理、推理和后处理保存和显示结果src/YOLOv5Seg.h定义YOLOv5Seg类和相关数据结构声明模型初始化、预处理、推理和后处理方法src/YOLOv5Seg.cpp实现YOLOv5Seg类的所有方法处理模型加载、预处理、推理和后处理实现分割掩码的生成和处理src/common.h通用工具函数如文件路径处理等src/cuda_utils.hCUDA相关工具函数如内存分配和释放src/logging.h日志处理功能src/macros.h宏定义和常量CMakeLists.txt项目构建配置文件定义依赖项和编译选项性能指标推理速度取决于GPU性能在支持的环境下可实现实时处理准确率基于YOLOv5模型保持了原始模型的检测和分割精度内存占用模型大小适中适合在大多数现代GPU上运行扩展与定制模型替换可以使用不同版本的YOLOv5分割模型只需将ONNX文件替换到models目录参数调整可以在YOLOv5Seg.h中调整置信度阈值、NMS阈值等参数功能扩展可以添加批量处理、多GPU支持等功能故障排除模型加载失败检查模型文件路径是否正确确保模型格式正确推理错误检查CUDA和TensorRT版本是否兼容内存不足减小输入尺寸或使用更小的模型性能问题确保启用了FP16精度使用合适的GPU

更多文章