Melody-Zhou/tensorRT_Pro-Vision

This repository is forked from shouxieai/tensorRT_Pro, extending it to support a wide range of vision models with high-performance TensorRT C++ inference.

解决的问题

在 NVIDIA GPU 上部署多个视觉模型通常意味着需要为每个任务维护单独的项目,且 CPU 与 GPU 之间的数据传输会降低性能。该框架通过将 20 多种任务(检测、分类、分割、姿态、旋转框、深度、OCR、车道检测、多目标跟踪)集成到一个 C++ 可执行文件中,并让所有预处理和后处理都在 GPU 上运行,从而解决了这些问题。

工作原理

该项目基于 TensorRT C++ API 构建。所有模型共享一个异步推理框架;唯一的区别在于预处理和后处理。你只需将模型导出为 ONNX(支持动态 Batch),放入工作区文件夹,然后从工作区运行 ./pro 即可。框架会自动编译 TensorRT 引擎(FP32、FP16 或 INT8)并运行。预处理(缩放、归一化)和后处理(解码、NMS)均实现为 CUDA 核函数,因此数据始终保留在 GPU 上。它还包含针对特定模型所需的自定义 TensorRT 插件(如 LayerNorm、DCNv2 等)。添加新任务只需实现三个部分:Infer 接口、preprocess() 和 worker() 函数,以及一个后处理 CUDA 核函数,然后在 main.cpp 中注册该任务。

适用人群

需要以低延迟和高吞吐量在 NVIDIA GPU 上部署视觉模型的 C++ 开发人员和工程师,特别是当产品包含多种不同视觉任务时。你需要熟悉 CUDA、TensorRT 以及修改 Makefile 或 CMake 路径。对于希望从单一代码库快速基准测试或发布 YOLO 变体、OCR、车道检测、深度估计等功能的研究人员也非常有用。

亮点

  • 20+ 模型,单一可执行文件:通过名称切换任务,无需为每个任务维护项目。
  • 全 GPU 流水线:缩放、归一化、解码、NMS 和深度缩放均为 CUDA 核函数,避免了 CPU 与 GPU 之间的数据往返。
  • TensorRT 8.x/10.x 自适应:条件编译支持两种 API 版本,无需 protobuf。
  • 动态 Batch 和三种精度:支持 FP32、FP16、INT8,内置 Entropy 和 MinMax 校准器。
  • 模块化扩展:添加任务仅需 preprocess()、worker() 和一个后处理核函数。
  • 广泛的任务覆盖:检测(YOLOv3–v13, v26, DETR)、分类、分割、姿态、OBB、深度、OCR、车道线和 ByteTrack 跟踪。

相关

  • 项目
  • 项目
  • 项目
  • 项目