🚀TensorRT-YOLO 是一款专为 NVIDIA 设备设计的易用灵活、极致高效的YOLO系列推理部署工具。项目不仅集成了 TensorRT 插件以增强后处理效果,还使用了 CUDA 核函数以及 CUDA 图来加速推理。TensorRT-YOLO 提供了 C++ 和 Python 推理的支持,旨在提供📦开箱即用的部署体验。包括 目标检测、实例分割、图像分类、姿态识别、旋转目标检测、视频分析等任务场景,满足开发者多场景的部署需求。
🚀TensorRT-YOLO 是一款专为 NVIDIA 设备设计的易用灵活、极致高效的YOLO系列推理部署工具。项目不仅集成了 TensorRT 插件以增强后处理效果,还使用了 CUDA 核函数以及 CUDA 图来加速推理。TensorRT-YOLO 提供了 C++ 和 Python 推理的支持,旨在提供📦开箱即用的部署体验。包括 目标检测、实例分割、图像分类、姿态识别、旋转目标检测、视频分析等任务场景,满足开发者多场景的部署需求。
|
|
|
|
项目地址:TensorRT-YOLO GitHub:https://github.com/laugh12321/TensorRT-YOLO
在进行推理之前,请参考🔧 CLI 导出模型文档,导出适用于该项目推理的ONNX模型并构建为TensorRT引擎。
使用
--cudaGraph
选项可以显著提升推理速度,但需知此功能仅适用于静态模型。通过
-m, --mode
参数可以选择不同的模型类型,其中0
代表检测(Detect)、1
代表旋转边界框(OBB)、2
代表分割(Segment)、3
代表姿态估计(Pose)、4
代表图像分类(Classify)。
使用 tensorrt_yolo
库的 trtyolo
命令行工具进行推理。运行以下命令查看帮助信息:
trtyolo infer --help
运行以下命令进行推理:
trtyolo infer -e models/yolo11n.engine -m 0 -i images -o output -l labels.txt --cudaGraph
推理结果将保存至 output
文件夹,并生成可视化结果。
DeployDet
、DeployOBB
、DeploySeg
、DeployPose
和DeployCls
分别对应于检测(Detect)、方向边界框(OBB)、分割(Segment)、姿态估计(Pose)和图像分类(Classify)模型。对于这些模型,
CG
版本利用 CUDA Graph 来进一步加速推理过程,但请注意,这一功能仅限于静态模型。
import cv2 from tensorrt_yolo.infer import DeployDet, generate_labels, visualize # 初始化模型 model = DeployDet("yolo11n-with-plugin.engine") # 加载图片 im = cv2.imread("test_image.jpg") # 模型预测 result = model.predict(cv2.cvtColor(im, cv2.COLOR_BGR2RGB)) print(f"==> detect result: {result}") # 可视化 labels = generate_labels("labels.txt") vis_im = visualize(im, result, labels) cv2.imwrite("vis_image.jpg", vis_im)
DeployDet
、DeployOBB
、DeploySeg
、DeployPose
和DeployCls
分别对应于检测(Detect)、方向边界框(OBB)、分割(Segment)、姿态估计(Pose)和图像分类(Classify)模型。对于这些模型,
CG
版本利用 CUDA Graph 来进一步加速推理过程,但请注意,这一功能仅限于静态模型。
#include <opencv2/opencv.hpp> // 为了方便调用,模块除使用 CUDA、TensorRT 其余均使用标准库实现 #include "deploy/vision/inference.hpp" #include "deploy/vision/result.hpp" int main() { // 初始化模型 auto model = deploy::DeployDet("yolo11n-with-plugin.engine"); // 加载图片 cv::Mat cvim = cv::imread("test_image.jpg"); cv::cvtColor(cvim, cvim, cv::COLOR_BGR2RGB); deploy::Image im(cvim.data, cvim.cols, cvim.rows); // 模型预测 deploy::DetResult result = model.predict(im); // 可视化(代码省略) // ... return 0; }
更多部署案例请参考模型部署示例 .
|
|
|
|
符号说明: (1) ✅ : 已经支持; (2) ❔: 正在进行中; (3) ❎ : 暂不支持; (4) 🟢 : 导出自行实现,即可推理.
任务场景 | 模型 | CLI 导出 | 推理部署 |
---|---|---|---|
Detect | ultralytics/yolov3 | ✅ | ✅ |
Detect | ultralytics/yolov5 | ✅ | ✅ |
Detect | meituan/YOLOv6 | ❎ 参考官方导出教程 | ✅ |
Detect | WongKinYiu/yolov7 | ❎ 参考官方导出教程 | ✅ |
Detect | WongKinYiu/yolov9 | ❎ 参考官方导出教程 | ✅ |
Detect | THU-MIG/yolov10 | ✅ | ✅ |
Detect | ultralytics/ultralytics | ✅ | ✅ |
Detect | PaddleDetection/PP-YOLOE+ | ✅ | ✅ |
Segment | ultralytics/yolov3 | ✅ | ✅ |
Segment | ultralytics/yolov5 | ✅ | ✅ |
Segment | meituan/YOLOv6-seg | ❎ 参考tensorrt_yolo/export/head.py 自行实现 | 🟢 |
Segment | WongKinYiu/yolov7 | ❎ 参考tensorrt_yolo/export/head.py 自行实现 | 🟢 |
Segment | WongKinYiu/yolov9 | ❎ 参考tensorrt_yolo/export/head.py 自行实现 | 🟢 |
Segment | ultralytics/ultralytics | ✅ | ✅ |
Classify | ultralytics/yolov3 | ✅ | ✅ |
Classify | ultralytics/yolov5 | ✅ | ✅ |
Classify | ultralytics/ultralytics | ✅ | ✅ |
Pose | ultralytics/ultralytics | ✅ | ✅ |
OBB | ultralytics/ultralytics | ✅ | ✅ |
开源不易,如果本项目有帮助到你的话,可以考虑请作者喝杯咖啡,你的支持是开发者持续维护的最大动力~