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版本,确保与最新技术兼容。

文档教程

快速开始

前置依赖

  • 推荐 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 推理示例

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) : 导出自行实现,即可推理.

请作者喝杯咖啡

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

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. NOI 2024

    Day1 T1 集合(set) 容易发现两个序列等价当且仅当,所有数字在序列中出现位置的集合构成集族相等. 考虑哈希,对于一个集合 \(S\),令它的哈希值为 \(f(S) = (\sum\limit ...

  2. FFmpeg开发笔记(五十七)使用Media3的Transformer加工视频文件

    ​继音视频播放器ExoPlayer之后,谷歌又推出了音视频转换器Transformer,要在音视频加工领域施展拳脚.根据Android开发者官网介绍:Jetpack Media3是Android媒体库 ...

  3. jmeter-模拟带参数的请求与上传文件

    请求参数照着前端请求的样式填即可: header带content: header不带content_type: 总结:上传文件时headers里面不能带content_type参数

  4. Games104 现代游戏引擎 Picoolo环境搭建 vulkan配置

    0 前言介绍 games104 现代游戏引擎课程是由 GAMES: Graphics And Mixed Environment Symposium 支持的一个课程. 如我们所视,Games并非的含义 ...

  5. WiFi基础(七):WiFi漫游与WiFi组网

    liwen01 2024.10.27 前言 无线 WiFi 的优点是方便.灵活,可以接入各种设备.缺点就是信号容易被干扰.信号覆盖范围有限.下面几个问题应该很多人都有遇到过: 为何很多洗手间的 WiF ...

  6. 20240719 CVTE 笔试

    岗位:嵌入式软件开发工程师(Linux方向) 题型:20 道不定项选择题,2 道编程题 1.不定项选择题 1.1 如下哪个命令可以帮助你知道 shell 的用法 (D) more help pwd m ...

  7. docker新建自定义网桥,实现不同主机容器互联

    不同主机间的容器网络互联,网络上的所有教程都是通过open vswitch等虚拟网桥方式实现的,但是最近本人发现可以直接通过配置网桥实现网络的互联,而不用安装配置open vswitch.在这里分享一 ...

  8. 干货分享:Air700ECQ的硬件设计,第三部分

    ​ 5. 电器特性,可靠性,射频特性 5.1. 绝对最大值 下表所示是模块数字.模拟管脚的电源供电电压电流最大耐受值. 表格 17:绝对最大值 参数 最小 最大 单位 VBAT -0.3 4.7 V ...

  9. OpenWRT/iStoreOS 不从头编译内核安装4G LTE网卡 Quectel EM05-CE记录

    我的机器是x86装了iStoreOS,有4G网卡Quectel EM05 https://www.quectel.com/cn/product/lte-em05 主要参考资料如下 https://ww ...

  10. 使用WebRTC技术搭建小型的视频聊天页面

    目录 目录 参考资料 什么是WebRTC? 能做什么? 架构图 个人理解(类比) 核心知识点 核心知识点类比 ICE框架 STUN(协议) NAT(网络地址转换) TURN SDP(会话描述协议) W ...