TensorRT YOLO

TensorRT-YOLO 是一款专为 NVIDIA 设备设计的易用灵活极致高效YOLO系列推理部署工具。项目不仅集成了 TensorRT 插件以增强后处理效果,还使用了 CUDA 核函数以及 CUDA 图来加速推理。TensorRT-YOLO 提供了 C++ 和 Python 推理的支持,旨在提供开箱即用的部署体验。包括 目标检测实例分割图像分类姿态识别旋转目标检测视频分析等任务场景,满足开发者多场景的部署需求。


Detect

Segment

Pose

OBB

主要特性

  • 多样化的YOLO支持:全面兼容YOLOv3至YOLOv11以及PP-YOLOE和PP-YOLOE+,满足不同版本需求。
  • 多场景应用:提供DetectSegmentClassifyPoseOBB等多样化场景的示例代码。
  • 模型优化与推理加速
    • 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版本,确保与最新技术兼容。

文档教程

快速开始

前置依赖

  • 推荐 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)。

  1. 使用 tensorrt_yolo 库的 trtyolo 命令行工具进行推理。运行以下命令查看帮助信息:

    trtyolo infer --help
  2. 运行以下命令进行推理:

    trtyolo infer -e models/yolo11n.engine -m 0 -i images -o output -l labels.txt --cudaGraph

    推理结果将保存至 output 文件夹,并生成可视化结果。

Python 推理示例

DeployDetDeployOBBDeploySegDeployPoseDeployCls 分别对应于检测(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快速开始

DeployDetDeployOBBDeploySegDeployPoseDeployCls 分别对应于检测(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) : 导出自行实现,即可推理.

请作者喝杯咖啡

开源不易,如果本项目有帮助到你的话,可以考虑请作者喝杯咖啡,你的支持是开发者持续维护的最大动力~

TensorRT-YOLO:灵活易用的 YOLO 部署工具的更多相关文章

  1. (第7篇)灵活易用易维护的hadoop数据仓库工具——Hive

    摘要: Hive灵活易用且易于维护,十分适合数据仓库的统计分析,什么样的结构让它具备这些特性?我们如何才能灵活操作hive呢? 博主福利 给大家推荐一套hadoop视频课程 [百度hadoop核心架构 ...

  2. 设计与开发一款简单易用的Web报表工具(支持常用关系数据及hadoop、hbase等)

    EasyReport是一个简单易用的Web报表工具(支持Hadoop,HBase及各种关系型数据库),它的主要功能是把SQL语句查询出的行列结构转换成HTML表格(Table),并支持表格的跨行(Ro ...

  3. 阿里云运维部署工具AppDeploy详细教程

    AppDeploy是一个通过SSH实现的命令行工具,可完成应用部署和远程运维管理.当前工具实现为两个版本:普通版(伪代码描述语言)和Python版.Python版使用Python语法规则,可实现您的各 ...

  4. Syncd-开源自动化部署工具

    官网地址:https://gitee.com/dreamans/syncd/issues syncd是一款开源的代码部署工具,它具有简单.高效.易用等特点,可以提高团队的工作效率. 目前只支持类Lin ...

  5. Gulp.js----比Grunt更易用的前端构建工具

    Gulp.js----比Grunt更易用的前端构建工具 Grunt一直是前端构建工具,然而他也不是毫无缺陷的,gulp的作者 Eric Schoffstall 在他介绍 gulp.js 的 prese ...

  6. Capsule:开源的 JVM 应用部署工具

    [编者按]本文作者 Ron Pressler 是 Parallel Universe 公司的创始人,拥有着丰富的高性能开发经验.通过这篇文章,Ron 向大家详细介绍了全新的开源 JVM 部署工具--C ...

  7. Openstack部署工具

    Openstack发展很猛,很多朋友都很认同,2013年,会很好的解决OpenStack部署的问题,让安装,配置变得更加简单易用. 很多公司都投入人力去做这个,新浪也计划做一个Openstack的is ...

  8. CloudBase Framework丨第一个 Deno 部署工具是如何打造的?

    云端一体化部署工具 CloudBase Framework (简称 CBF)自开源发布以来迭代迅速,不仅支持 Vue.React 等前端框架,也支持 Nuxt 等 SSR 框架,基于 Node 开发的 ...

  9. [.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS

    [.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS 本篇要点:在进阶篇快要结束的时候说说源代码管理器,我们的开发,不是一个人可以完成的事,团队协作很重要,而且 ...

  10. OpenStack部署工具总结

    目前感觉比较简单直观的部署工具有RDO.devstack.Fuel等: 1. RDO https://openstack.redhat.com/Quickstart REDHAT出品,支持Redhat ...

随机推荐

  1. 使用 KubeKey v3.1.1 离线部署原生 Kubernetes v1.28.8 实战

    今天,我将为大家实战演示,如何基于操作系统 openEuler 22.03 LTS SP3,利用 KubeKey 制作 Kubernetes 离线安装包,并实战离线部署 Kubernetes v1.2 ...

  2. 倒计时 3 天!10.23 相约杭州,云原生 Meetup 等你来!

    云原生技术交流 Meetup 杭州站开启,快来报名吧! 活动简介 随着云原生技术的普及,整个市场已经变成了节奏非常快的软件驱动型市场,使用云原生技术栈来迭代发布应用已经成为常态,但是如何更好的应用云原 ...

  3. F450 APM2.8 自组无人机手记

    由于是初次接触无人机,外加自组需要焊接,做了一些前期的心理建设.但是过程还是异常艰难.(不过,实际操作也就焊20个焊点左右,基本就组装起来了,操作并不复杂) 自组APM无人机是想学习Ardupilot ...

  4. AI五子棋_05 公钥加解密 10进制转256进制

    AI 五子棋 第五步 恭喜你到达第五步! 我想你一定很艰难,前一步的问题需要大数运算,因为这个算法依赖于质因数分解的复杂度,只有数字相当大时才能保证这个算法难于破解. 这是服务器使用的公钥: 6553 ...

  5. 如何优雅地将AI人工智能在线客服嵌入企业网站

    随着人工智能(AI)技术的飞速发展,越来越多的企业意识到,将AI客服嵌入企业网站是提升客户体验.提高工作效率的重要手段.相比于传统的人工客服,AI客服可以24/7全天候服务,不仅能有效处理大部分用户问 ...

  6. Java受保护的访问修饰符protected

    声明:我不去上来给大家那一张被扯来扯去的√,×表,什么表想必大家心里清楚 下面进入正题: protected 的主要着眼点在于两点: 1.子类继承 2.是否同包 心里记着上面的那两点,那么protec ...

  7. JS实现斐波那契数列的几种方法及代码优化

    一.斐波那契数定义 斐波那契数列又被称为黄金分割数列,指 1,1,2,3,5,8,13,21,... 等数列. 在数学中有递推的方法定义: F(0)=0,F(1)=1, F(2)=1,F(n)=F(n ...

  8. 深度学习入门笔记——DataLoader的使用

    如何使用数据集DataSet? 在介绍DataLoader之前,需要先了解数据集DataSet的使用.Pytorch中集成了很多已经处理好的数据集,在pytorch的torchvision.torch ...

  9. macOS安装使用OpenConnect客户端替代cisco连接公司内网环境

    mac_os安装openconnect服务 brew install openconnect 使用OpenConnect客户端拨通VPN,打开终端执行以下命令: sudo openconnect -u ...

  10. docker连不上私有仓库Harbor

    解决办法: # 配置多个host(配置本地域名映射) [root@vm10-11-0-38 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.local ...