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 ...
随机推荐
- python中模块的概念以及常用模块
模块的概念:为了减少常用代码重复输入,同时方便多人协作,python中定义了模块一词. 模块是一些函数的集合.在python中可以使用import导入某一模块的单个或者所有功能. python中的模块 ...
- 现代化 React UI 库:Material-UI 详解!
随着 React 在前端开发中的流行,越来越多的 UI 框架和库开始涌现,以帮助开发者更高效地构建现代化.响应式的用户界面.其中,Material-UI 是基于 Google Material Des ...
- KubeSphere 社区征稿说明
KubeSphere 社区一直致力于云原生技术的布道工作.通过组织线下 Meetup,线上的定期技术直播,KubeSphere 社区输出了颇多精彩的技术分享内容.此外,社区还产出了多篇优质的技术文章, ...
- 4年经验来面试20K的测试岗,连基础都不会,还不如招应届生。
公司前段时间缺人,也面了不少测试,结果竟然没有一个合适的.一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在10-20k,面试的人很多,但平均水平很让人失望.看简历很多都是3.4年工作经验,但面 ...
- Docker 自定义镜像Dockerfile使用详细教程
认识 Dockerfile 文件 Dockerfile 用于构建 Docker 镜像,Dockerfile 文件是由一行行命令语句 组成,基于这些命令即可以构建一个镜像 比如下面就是一个Dockefi ...
- Ubuntu使用dpkg查看与修改architecture的用法
dpkg是Debian的包管理器,因为Ubuntu是Debian的变体,在Ubuntu下也有这个工具. 两个常用的命令是: dpkg -i package-file和dpkg -r package 分 ...
- 开源 - Ideal库 - 常用枚举扩展方法(二)
书接上回,今天继续和大家享一些关于枚举操作相关的常用扩展方法. 今天主要分享通过枚举值转换成枚举.枚举名称以及枚举描述相关实现. 我们首先修改一下上一篇定义用来测试的正常枚举,新增一个枚举项,代码如下 ...
- rabbitmq消息中间件的初步探索
在上次学xattr的时候用它简单实现一个中间件,我去了解了一下rabbitmq这个消息中间件,感觉理论上还是挺好用的,给一般并发量的系统用足够了. 首先安装这个服务. sudo apt search ...
- 迁移到 Eclipse: Eclipse 对 IntelliJ IDEAA 评估开发指南
为何考虑 Eclipse 以及它与 IntelliJ IDEA 有什么不同 Eclipse 是一个免费的.正日益流行起来的 Java 集成开发环境,最新版本的 Eclipse 中提供了很多特性,这些特 ...
- Ubuntu使程序脱离终端运行
应用场景: 远程登陆Linux服务器运行模型训练代码,如果关闭本地终端则服务器代码中断运行!目标操作:在本地终端运行服务器代码,当关闭终端时代码能够继续在服务器上运行,且再次打开终端连接服务器时能找回 ...







