TensorRT-YOLO:灵活易用的 YOLO 部署工具

TensorRT YOLO
TensorRT-YOLO 是一款专为 NVIDIA 设备设计的易用灵活、极致高效的YOLO系列推理部署工具。项目不仅集成了 TensorRT 插件以增强后处理效果,还使用了 CUDA 核函数以及 CUDA 图来加速推理。TensorRT-YOLO 提供了 C++ 和 Python 推理的支持,旨在提供开箱即用的部署体验。包括 目标检测、实例分割、图像分类、姿态识别、旋转目标检测、视频分析等任务场景,满足开发者多场景的部署需求。
![]() Detect |
![]() Segment |
![]() Pose |
![]() OBB |
主要特性
- 多样化的YOLO支持:全面兼容YOLOv3至YOLOv11以及PP-YOLOE和PP-YOLOE+,满足不同版本需求。
- 多场景应用:提供Detect、Segment、Classify、Pose、OBB等多样化场景的示例代码。
- 模型优化与推理加速:
- ONNX支持:支持ONNX模型的静态和动态导出,包括TensorRT自定义插件支持,简化模型部署流程。
- TensorRT集成:集成TensorRT插件,包括自定义插件,加速Detect, Segment, Pose, OBB等场景的后处理,提升推理效率。
- CUDA加速:利用CUDA核函数优化前处理,CUDA图技术加速推理流程,实现高性能计算。
- 语言支持:支持C++和Python(通过Pybind11映射,提升Python推理速度),满足不同编程语言需求。
- 部署便捷性:
- 动态库编译:提供动态库编译支持,方便调用和部署。
- 无第三方依赖:全部功能使用标准库实现,无需额外依赖,简化部署流程。
- 快速开发与部署:
- CLI工具:提供命令行界面(CLI)工具,实现快速模型导出和推理。
- 跨平台支持:支持Windows、Linux、ARM、x86等多种设备,适应不同硬件环境。
- Docker部署:支持Docker一键部署,简化环境配置和部署流程。
- TensorRT兼容性:兼容TensorRT 10.x版本,确保与最新技术兼容。
文档教程
- 安装文档
- 快速开始
- 使用示例
- API文档
- Python API文档(️ 未实现)
- C++ API文档(️ 未实现)
- 常见问题
- ️ 收集中 ...
- 模型支持列表
快速开始
前置依赖
- 推荐 CUDA 版本 >= 11.0.1 (CUDA 最低版本 11.0.1)
- 推荐 TensorRT 版本 >= 8.6.1 (TensorRT 最低版本 8.6.1)
- OS: Linux x86_64 (推荐) arm / Windows /
快速安装
- 参考快速编译安装文档
在进行推理之前,请参考CLI 导出模型文档,导出适用于该项目推理的ONNX模型并构建为TensorRT引擎。
Python SDK快速开始
Python CLI 推理示例
使用
--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文件夹,并生成可视化结果。
Python 推理示例
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)
C++ SDK快速开始
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;
}
更多部署案例请参考模型部署示例 .
️ 模型支持列表
![]() Detect |
![]() Segment |
![]() Pose |
![]() OBB |
符号说明: (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 |
请作者喝杯咖啡
开源不易,如果本项目有帮助到你的话,可以考虑请作者喝杯咖啡,你的支持是开发者持续维护的最大动力~

TensorRT-YOLO:灵活易用的 YOLO 部署工具的更多相关文章
- (第7篇)灵活易用易维护的hadoop数据仓库工具——Hive
摘要: Hive灵活易用且易于维护,十分适合数据仓库的统计分析,什么样的结构让它具备这些特性?我们如何才能灵活操作hive呢? 博主福利 给大家推荐一套hadoop视频课程 [百度hadoop核心架构 ...
- 设计与开发一款简单易用的Web报表工具(支持常用关系数据及hadoop、hbase等)
EasyReport是一个简单易用的Web报表工具(支持Hadoop,HBase及各种关系型数据库),它的主要功能是把SQL语句查询出的行列结构转换成HTML表格(Table),并支持表格的跨行(Ro ...
- 阿里云运维部署工具AppDeploy详细教程
AppDeploy是一个通过SSH实现的命令行工具,可完成应用部署和远程运维管理.当前工具实现为两个版本:普通版(伪代码描述语言)和Python版.Python版使用Python语法规则,可实现您的各 ...
- Syncd-开源自动化部署工具
官网地址:https://gitee.com/dreamans/syncd/issues syncd是一款开源的代码部署工具,它具有简单.高效.易用等特点,可以提高团队的工作效率. 目前只支持类Lin ...
- Gulp.js----比Grunt更易用的前端构建工具
Gulp.js----比Grunt更易用的前端构建工具 Grunt一直是前端构建工具,然而他也不是毫无缺陷的,gulp的作者 Eric Schoffstall 在他介绍 gulp.js 的 prese ...
- Capsule:开源的 JVM 应用部署工具
[编者按]本文作者 Ron Pressler 是 Parallel Universe 公司的创始人,拥有着丰富的高性能开发经验.通过这篇文章,Ron 向大家详细介绍了全新的开源 JVM 部署工具--C ...
- Openstack部署工具
Openstack发展很猛,很多朋友都很认同,2013年,会很好的解决OpenStack部署的问题,让安装,配置变得更加简单易用. 很多公司都投入人力去做这个,新浪也计划做一个Openstack的is ...
- CloudBase Framework丨第一个 Deno 部署工具是如何打造的?
云端一体化部署工具 CloudBase Framework (简称 CBF)自开源发布以来迭代迅速,不仅支持 Vue.React 等前端框架,也支持 Nuxt 等 SSR 框架,基于 Node 开发的 ...
- [.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS
[.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS 本篇要点:在进阶篇快要结束的时候说说源代码管理器,我们的开发,不是一个人可以完成的事,团队协作很重要,而且 ...
- OpenStack部署工具总结
目前感觉比较简单直观的部署工具有RDO.devstack.Fuel等: 1. RDO https://openstack.redhat.com/Quickstart REDHAT出品,支持Redhat ...
随机推荐
- 为什么科技企业都在建设API开放平台?
一.API开发者门户的兴起 随着数字化转型的推进,越来越多的企业开始依赖 API 来实现内部系统的连接与外部服务的集成.然而,企业在API管理方面面临着复杂且繁琐的挑战:API的调用关系混乱.难以追踪 ...
- P1762 偶数&杨辉三角
P1762 偶数&杨辉三角(天立OI) 解题思路 一.结论法 杨辉三角形结论 第\(n\)行有\(n\)个数. 每行奇数个数必为\(2^k\)(\(k\)不是行数) 当行数恰为\(2^k\)时 ...
- jmeter-模拟带参数的请求与上传文件
请求参数照着前端请求的样式填即可: header带content: header不带content_type: 总结:上传文件时headers里面不能带content_type参数
- RocketMQ 全链路灰度探索与实践
本文作者:肖京,Spring Cloud Alibaba PMC,阿里云智能技术专家. 01 全链路灰度背景介绍 发布新版本时,为了有效.谨慎地验证新版本代码逻辑的正确性,通常会采用灰度发布,从而达到 ...
- MongoDB聚合类操作
MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果.有点类似sql语句中的 count(*) 语法:db.tablename.aggregat ...
- php技术交流群
php技术交流群-656679284,为PHP广大爱好者提供技术交流,有问必答,相互学习相互进步!也欢迎大牛入群指导!
- STM32单片机 32.768Khz和8Khz晶振外部电容容值选取问题
一.前言 绘制STM32C8T6最小系统的晶振电路的时候,看到了并联在晶振两端的电容,就好奇具体的容值该怎么选取,故有了这篇博客. 二.外部晶振电路
- RK3568,字符设备框架:管理同主设备号、不同次设备号设备
字符设备框架:管理同主设备号.不同次设备号设备 以下代码针对迅为开发板RK3568,开发板系统是ubuntu20.04, 正文 以下是我写的字符设备框架,实现了管理同主设备号.不同次设备号的功能. 代 ...
- MySQL管理工具之Beekeeper Studio
简介 Beekeeper Studio 是一个跨平台的 SQL 编辑器和数据库管理客户端,可以在 Linux.Mac.Windows 上使用. Beekeeper Studio 社区版是免费开源的,支 ...
- Django之gunicorn部署
安装: pip install gunicorn 启动应用: gunicorn -w 3 -k gthread -e DJANGO_SETTINGS_MODULE=settings.prod Serv ...







