[English](README.en.md) | 简体中文
🚀TensorRT-YOLO 是一款专为 NVIDIA 设备设计的易用灵活、极致高效的YOLO系列推理部署工具。项目不仅集成了 TensorRT 插件以增强后处理效果,还使用了 CUDA 核函数以及 CUDA 图来加速推理。TensorRT-YOLO 提供了 C++ 和 Python 推理的支持,旨在提供📦开箱即用的部署体验。包括 目标检测、实例分割、姿态识别、旋转目标检测、视频分析等任务场景,满足开发者多场景的部署需求。
|
|
|
|
[!IMPORTANT] 在进行推理之前,请参考🔧 CLI 导出模型文档,导出适用于该项目推理的ONNX模型并构建为TensorRT引擎。
[!NOTE] 使用
--cudaGraph
选项可以显著提升推理速度,但需知此功能仅适用于静态模型。通过
-m, --mode
参数可以选择不同的模型类型,其中0
代表检测(Detect)、1
代表旋转边界框(OBB)、2
代表分割(Segment)、3
代表姿态估计(Pose)。
使用 tensorrt_yolo
库的 trtyolo
命令行工具进行推理。运行以下命令查看帮助信息:
trtyolo infer --help
运行以下命令进行推理:
trtyolo infer -e models/yolo11n.engine -m 0 -i images -o output -l labels.txt --cudaGraph
推理结果将保存至 output
文件夹,并生成可视化结果。
[!NOTE]
DeployDet
、DeployOBB
、DeploySeg
和DeployPose
分别对应于检测(Detect)、方向边界框(OBB)、分割(Segment)和姿态估计(Pose)模型。对于这些模型,
CG
版本利用 CUDA Graph 来进一步加速推理过程,但请注意,这一功能仅限于静态模型。
import cv2
from tensorrt_yolo.infer import DeployDet, generate_labels_with_colors, 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_with_colors("labels.txt")
vis_im = visualize(im, result, labels)
cv2.imwrite("vis_image.jpg", vis_im)
[!NOTE]
DeployDet
、DeployOBB
、DeploySeg
和DeployPose
分别对应于检测(Detect)、方向边界框(OBB)、分割(Segment)和姿态估计(Pose)模型。对于这些模型,
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+ | ✅ | ✅ |
OBB | ultralytics/ultralytics | ✅ | ✅ |
Pose | ultralytics/ultralytics | ✅ | ✅ |
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 | ✅ | ✅ |
开源不易,如果本项目有帮助到你的话,可以考虑请作者喝杯咖啡,你的支持是开发者持续维护的最大动力~
TensorRT-YOLO采用 GPL-3.0许可证,这个OSI 批准的开源许可证非常适合学生和爱好者,可以推动开放的协作和知识分享。请查看LICENSE 文件以了解更多细节。
感谢您选择使用 TensorRT-YOLO,我们鼓励开放的协作和知识分享,同时也希望您遵守开源许可的相关规定。
对于 TensorRT-YOLO 的错误报告和功能请求,请访问 GitHub Issues!