TensorRTx 开源代码内容说明

2023-05-16

TensorRTx 提供了把常见网络模型转化为 TensorRT 格式的功能。TensorRTx旨在使用tensorrt网络定义API实现流行的深度学习网络。tensorrt有内置的解析器,包括caffeparser、uffparser、onnxparser等,当我们使用这些解析器时,我们经常遇到一些“不受支持的操作或层”问题,特别是一些最先进的模型正在使用新类型的层。

那么我们为什么不跳过所有的解析器呢?我们只使用TensorRT网络定义API来构建整个网络,并不复杂。

TensorRTx 所有模型首先在pytorch/mxnet/tensorflown中实现,然后导出权重文件xxx.wts,然后使用tensorrt加载权重,定义网络并进行推理。一些pytorch实现可以在my repo Pytorchx中找到,其余的来自polular开源实现。

更新

  • 19 Aug 2022. Dominic and sbmalik: Yolov3-tiny and Arcface support TRT8.
  • 6 Jul 2022. xiang-wuu: SuperPoint - Self-Supervised Interest Point Detection and Description, vSLAM related.
  • 26 May 2022. triple-Mu: YOLOv5 python script with CUDA Python API.
  • 23 May 2022. yhpark: Real-ESRGAN, Practical Algorithms for General Image/Video Restoration.
  • 19 May 2022. vjsrinivas: YOLOv3 TRT8 support and Python script.
  • 15 Mar 2022. sky_hole: Swin Transformer - Semantic Segmentation.
  • 19 Oct 2021. liuqi123123 added cuda preprossing for yolov5, preprocessing + inference is 3x faster when batchsize=8.
  • 18 Oct 2021. xupengao: YOLOv5 updated to v6.0, supporting n/s/m/l/x/n6/s6/m6/l6/x6.
  • 31 Aug 2021. FamousDirector: update retinaface to support TensorRT 8.0.
  • 27 Aug 2021. HaiyangPeng: add a python wrapper for hrnet segmentation.
  • 1 Jul 2021. freedenS: DE⫶TR: End-to-End Object Detection with Transformers. First Transformer model!
  • 10 Jun 2021. upczww: EfficientNet b0-b8 and l2.
  • 23 May 2021. SsisyphusTao: CenterNet DLA-34 with DCNv2 plugin.
  • 17 May 2021. ybw108: arcface LResNet100E-IR and MobileFaceNet.
  • 6 May 2021. makaveli10: scaled-yolov4 yolov4-csp.

教程

  • 安装依赖项.
  • 快速入门课程,用 lenet5 演示.
  • .wts 文件内容格式
  • 常见问题(FAQ)
  • 从TensorRT 4迁移到7
  • 如何使用多个GPU处理, 使用 YOLOv4 作为例子
  • 检查你的 GPU 是否支持 FP16/INT8
  • 如何在 Windows 系统下编译和运行
  • 使用Triton推理服务器部署YOLOv4
  • 从pytorch到trt,以 hrnet 为例(中文)

测试环境

  1. TensorRT 7.x
  2. TensorRT 8.x(Some of the models support 8.x)

如何运行

每个文件夹内部都有一个README,解释如何在其中运行模型。

模型

下列模型均被实现.

NameDescription
mlpthe very basic model for starters, properly documented
lenetthe simplest, as a “hello world” of this project
alexneteasy to implement, all layers are supported in tensorrt
googlenetGoogLeNet (Inception v1)
inceptionInception v3, v4
mnasnetMNASNet with depth multiplier of 0.5 from the paper
mobilenetMobileNet v2, v3-small, v3-large
resnetresnet-18, resnet-50 and resnext50-32x4d are implemented
senetse-resnet50
shufflenetShuffleNet v2 with 0.5x output channels
squeezenetSqueezeNet 1.1 model
vggVGG 11-layer model
yolov3-tinyweights and pytorch implementation from ultralytics/yolov3
yolov3darknet-53, weights and pytorch implementation from ultralytics/yolov3
yolov3-sppdarknet-53, weights and pytorch implementation from ultralytics/yolov3
yolov4CSPDarknet53, weights from AlexeyAB/darknet, pytorch implementation from ultralytics/yolov3
yolov5yolov5 v1.0-v6.0, pytorch implementation from ultralytics/yolov5
retinafaceresnet50 and mobilnet0.25, weights from biubug6/Pytorch_Retinaface
arcfaceLResNet50E-IR, LResNet100E-IR and MobileFaceNet, weights from deepinsight/insightface
retinafaceAntiCovmobilenet0.25, weights from deepinsight/insightface, retinaface anti-COVID-19, detect face and mask attribute
dbnetScene Text Detection, weights from BaofengZan/DBNet.pytorch
crnnpytorch implementation from meijieru/crnn.pytorch
ufldpytorch implementation from Ultra-Fast-Lane-Detection, ECCV2020
hrnethrnet-image-classification and hrnet-semantic-segmentation, pytorch implementation from HRNet-Image-Classification and HRNet-Semantic-Segmentation
psenetPSENet Text Detection, tensorflow implementation from liuheng92/tensorflow_PSENet
ibnnetIBN-Net, pytorch implementation from XingangPan/IBN-Net, ECCV2018
unetU-Net, pytorch implementation from milesial/Pytorch-UNet
repvggRepVGG, pytorch implementation from DingXiaoH/RepVGG
lprnetLPRNet, pytorch implementation from xuexingyu24/License_Plate_Detection_Pytorch
refinedetRefineDet, pytorch implementation from luuuyi/RefineDet.PyTorch
densenetDenseNet-121, from torchvision.models
rcnnFasterRCNN and MaskRCNN, model from detectron2
tsmTSM: Temporal Shift Module for Efficient Video Understanding, ICCV2019
scaled-yolov4yolov4-csp, pytorch from WongKinYiu/ScaledYOLOv4
centernetCenterNet DLA-34, pytorch from xingyizhou/CenterNet
efficientnetEfficientNet b0-b8 and l2, pytorch from lukemelas/EfficientNet-PyTorch
detrDE⫶TR, pytorch from facebookresearch/detr
swin-transformerSwin Transformer - Semantic Segmentation, only support Swin-T. The Pytorch implementation is microsoft/Swin-Transformer
real-esrganReal-ESRGAN. The Pytorch implementation is real-esrgan
superpointSuperPoint. The Pytorch model is from magicleap/SuperPointPretrainedNetwork

Model Zoo

可以从model zoo下载.wts文件以进行快速评估。但建议将.wts从pytorch/mxnet/tensorflow模型转换,以便您可以重新训练自己的模型。

GoogleDrive | BaiduPan pwd: uvv2

棘手的操作

这些模型中遇到的一些棘手操作已经解决,但可能有更好的解决方案。

NameDescription
BatchNormImplement by a scale layer, used in resnet, googlenet, mobilenet, etc.
MaxPool2d(ceil_mode=True)use a padding layer before maxpool to solve ceil_mode=True, see googlenet.
average pool with paddinguse setAverageCountExcludesPadding() when necessary, see inception.
relu6use Relu6(x) = Relu(x) - Relu(x-6), see mobilenet.
torch.chunk()implement the ‘chunk(2, dim=C)’ by tensorrt plugin, see shufflenet.
channel shuffleuse two shuffle layers to implement channel_shuffle, see shufflenet.
adaptive pooluse fixed input dimension, and use regular average pooling, see shufflenet.
leaky reluI wrote a leaky relu plugin, but PRelu in NvInferPlugin.h can be used, see yolov3 in branch trt4.
yolo layer v1yolo layer is implemented as a plugin, see yolov3 in branch trt4.
yolo layer v2three yolo layers implemented in one plugin, see yolov3-spp.
upsamplereplaced by a deconvolution layer, see yolov3.
hsigmoidhard sigmoid is implemented as a plugin, hsigmoid and hswish are used in mobilenetv3
retinaface output decodeimplement a plugin to decode bbox, confidence and landmarks, see retinaface.
mishmish activation is implemented as a plugin, mish is used in yolov4
prelumxnet’s prelu activation with trainable gamma is implemented as a plugin, used in arcface
HardSwishhard_swish = x * hard_sigmoid, used in yolov5 v3.0
LSTMImplemented pytorch nn.LSTM() with tensorrt api

速度基准

ModelsDeviceBatchSizeModeInput Shape(HxW)FPS
YOLOv3-tinyXeon E5-2620/GTX10801FP32608x608333
YOLOv3(darknet53)Xeon E5-2620/GTX10801FP32608x60839.2
YOLOv3(darknet53)Xeon E5-2620/GTX10801INT8608x60871.4
YOLOv3-spp(darknet53)Xeon E5-2620/GTX10801FP32608x60838.5
YOLOv4(CSPDarknet53)Xeon E5-2620/GTX10801FP32608x60835.7
YOLOv4(CSPDarknet53)Xeon E5-2620/GTX10804FP32608x60840.9
YOLOv4(CSPDarknet53)Xeon E5-2620/GTX10808FP32608x60841.3
YOLOv5-s v3.0Xeon E5-2620/GTX10801FP32608x608142
YOLOv5-s v3.0Xeon E5-2620/GTX10804FP32608x608173
YOLOv5-s v3.0Xeon E5-2620/GTX10808FP32608x608190
YOLOv5-m v3.0Xeon E5-2620/GTX10801FP32608x60871
YOLOv5-l v3.0Xeon E5-2620/GTX10801FP32608x60843
YOLOv5-x v3.0Xeon E5-2620/GTX10801FP32608x60829
YOLOv5-s v4.0Xeon E5-2620/GTX10801FP32608x608142
YOLOv5-m v4.0Xeon E5-2620/GTX10801FP32608x60871
YOLOv5-l v4.0Xeon E5-2620/GTX10801FP32608x60840
YOLOv5-x v4.0Xeon E5-2620/GTX10801FP32608x60827
RetinaFace(resnet50)Xeon E5-2620/GTX10801FP32480x64090
RetinaFace(resnet50)Xeon E5-2620/GTX10801INT8480x640204
RetinaFace(mobilenet0.25)Xeon E5-2620/GTX10801FP32480x640417
ArcFace(LResNet50E-IR)Xeon E5-2620/GTX10801FP32112x112333
CRNNXeon E5-2620/GTX10801FP3232x1001000

需要帮助,如果您获得了速度结果,请添加问题或PR。

确认和联系

欢迎任何意见、问题和讨论,请通过以下信息与作者联系。

E-mail: wangxinyu_es@163.com

WeChat ID: wangxinyu0375 (可加作者微信进tensorrtx交流群,备注:tensorrtx)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TensorRTx 开源代码内容说明 的相关文章

  • SpringBoot整合MybatisPlus使用IPage实现分页

    概述 MybatisPlus 提供了分页的功能 IPage内部原理是基于拦截器 xff0c 但是这个拦截的是方法以及方法中的参数 xff0c 这个也会判断是否是查询操作 如果是查询操作 xff0c 才会进入分页的处理逻辑 进入分页逻辑处理后
  • SpringBoot统一异常处理

    概述 SpringBoot 提供了 64 ControllerAdvice 64 RestControllerAdvice 注解可以实现统一异常处理 xff0c 只需要在定义异常类加上以上注解即可 自定义异常处理 定义统一异常处理 span
  • 萌新学习算法——并查集基础

    并查集 在算法设计中 xff0c 将一个集合和另外一个集合合并时 xff0c 就会用到并查集 假如不用并查集 xff0c 你可能会用到集合和列表来实现 xff0c 这样会使代码看起来很复杂 xff0c 而且执行效率不高 xff0c 下面用洛
  • linux中断及其底半部-s5p6818开发平台

    中断分为两个部分 xff1a 中断顶部 xff08 top half xff09 和中断底半部 xff08 bootom half xff09 一 中断顶部 xff08 top half xff09 中断上半部需要处理一下三种情况 xff1
  • Windows如何查看.db数据库文件

    从android应用导出的 db文件 xff0c 想在Windows电脑端看 xff0c 可以用SQLite Expert Professional这个软件查看 xff0c 网上说用FireFox的插件sqlite manager xff0
  • Ubuntu工具-01 UEX

    UltraEdit是Windows旗下一款流行的老牌文本 HEX编辑器 xff08 非开源 xff09 UltraEdit正被移植到Linux平台 该移植名为UEX xff0c 意即UltraEdit for Linux UltraEdit
  • Ubuntu工具-2 OBS Studio

    文章目录 1 下载并安装1 1 Flathub安装1 2 Snap安装1 3 PPA源方式安装1 3 1 检查OpenGL版本 xff0c 其版本必须高于 96 3 3 96 1 3 2 安装虚拟摄像机驱动1 3 3 安装ffmpeg库1
  • Docker build创建指定容器镜像

    Docker build xff1a Build an image from a Dockerfile 按照Dockerfile文件所定义内容创建临时性容器 xff0c 把Docker中所定义的每行命令在临时容器中执行 xff0c 然后生成
  • Ubuntu工具-03 VLC

    文章目录 1 安装VLC Media Player的方法1 1 apt安装1 2 snap安装 xff08 未测试 xff09 2 启动VLC Media Player并设置为默认媒体播放器 VLC Media Player xff08 V
  • MySQL笔记-07 常用函数

    文章目录 1 数学函数1 1 ABS1 2 CEIL和CEILIN1 3 FLOOR1 4 MOD1 5 ROUND1 6 TRUNCATE 2 字符串函数2 1 CONCAT2 2 CONCAT WS2 3 INSERT2 4 LOWER
  • SpringMVC-01 Web基础介绍

    文章目录 1 CGI1 1 CGI原理1 2 输入 出1 3 环境变量1 3 1 与请求相关的环境变量1 3 2 与服务器相关的环境变量1 3 3 与客户端相关的环境变量1 3 4 详细说明1 3 4 1 REQUEST METHOD 1
  • SpringMVC-02 MVC模式介绍

    文章目录 1 Java Web开发模型2 JSP 43 JavaBean开发模型 xff08 model1 xff09 3 MVC开发模式 xff08 model2 xff09 3 1 MVC模式基础3 1 1 模型 视图 控制器各部分的作
  • 系统架构师-科目1考点

  • 系统架构师-科目2考点

  • 系统架构师-科目3考点

  • Hive笔记-01 架构概述

    文章目录 1 概述2 Metadata Metastore的作用3 Metastore三种配置方式3 1 Hive配置参数说明3 1 1 基本配置参数3 1 2 其他配置参数 3 2 内嵌模式 xff08 Embedded xff09 3
  • Hadoop笔记-01概述

    文章目录 1 什么是大数据 xff1f 1 1 大数据计算模式及代表产品1 2 云计算与物联网1 2 1 云计算1 2 1 1 虚拟化1 2 1 2 分布式存储1 2 1 3 分布式计算1 2 1 4 多租户 1 3 物联网1 3 1 识别
  • Hadoop笔记-02 安装

    文章目录 1 VBOX安装CentOS71 1 安装VBOX软件1 2 下载CentOS7镜像文件1 3 初始化VBOX虚拟盘1 4 CentOS7网络配置1 5 CentOS7 yum源配置1 6 CentOS7 一般配置1 6 1关闭防
  • ffmpeg播放器实现详解 - 视频同步控制

    1 时间戳 时间戳的概念贯穿音视频开发始终 xff0c 重要性不言而喻 时间戳告诉我们在什么时候 xff0c 用多快的速度去播哪一帧 xff0c 其中 xff0c DTS decoding timestamp 告诉我们何时解码 xff0c
  • Ubuntu22.04 安装深度微信报错 依赖: libsasl2-2 (>= 2.1.27.1)

    现象 xff1a span class token punctuation span base span class token punctuation span pang 64 pang HP span class token funct

随机推荐

  • Ubuntu22.04更新后 点击深度微信无反应

    系统版本 xff1a Ubuntu 22 04 jammy内核 xff1a x86 64 Linux 5 15 0 53 genericdeepin wine6 stable 版本 xff1a 6 0 0 41 1 深度微信图标点击后 xf
  • MySQL笔记-08 索引

    文章目录 1 索引概述1 1 MySQL索引分类1 1 1 普通索引1 1 2 唯一性索引1 1 3 全文索引1 1 4 单列索引1 1 5 多列索引1 1 6 空间索引 2 创建索引2 1 在建立数据表时创建索引2 1 1 普通索引创建2
  • MySQL笔记-09 视图

    文章目录 1 视图概念1 1 概念1 2 作用 2 创建视图2 1 查看创建视图的权限2 2 创建视图的步骤2 3 创建视图的注意事项 3 视图操作3 1 查看视图3 1 1 DESCRIBE语句3 1 2 SHOW TABLE STATU
  • MySQL笔记-10 数据完整性约束

    文章目录 1 定义完整性约束1 1 实体完整性1 1 1 主键约束1 1 2 候选键约束 1 2 参照完整性1 3 用户定义完整性1 3 1 非空约束1 3 2 CHECK约束1 3 2 1 对列实施CHECK约束1 3 2 2 对表实施C
  • Linux命令行笔记-00 综述

    文章目录 1 Linux命令行简介1 1 Linux命令行的分类1 1 1 根据系统中作用来分类1 1 2 根据对象来分类 2 Linux命令行解释器2 1 命令行解释器shell2 1 1 核心程序2 1 2 公用程序shell2 1 3
  • Linux命令行笔记-01 文件管理-文件的建立、移动和删除

    文章目录 1 文件的建立 移动和删除1 1 96 cat 96 建立文件1 1 1 语法格式与参数1 1 2 示例 1 2 96 touch 96 建立文件1 2 1 语法格式与参数1 2 2 示例1 2 3 注意 1 3 96 ln 96
  • CMake学习-01 综述

    文章目录 1 CMake1 1 CMake生成makefile并编译的流程 2 CMakeLists txt2 1 Demo讲解2 2 常用命令2 2 1 指定CMAKE的最低版本2 2 2 设置项目名称2 2 3 设置变量2 2 4 设置
  • Rust:官方迭代器大全

    一 for 和迭代器 先看一段代码 xff1a span class token keyword fn span span class token function definition function main span span cl
  • Rust: 函数的重载——我做的的一组小实验

    编程的时候 xff0c 我发现有不少函数能够根据左值类型自动调用重载函数 但是 xff0c 我知道 Rust 的函数是不支持重载的 所以我打算尝试一下这一 重载 现象是如何实现的 一 Rust 不支持函数重载 写一段代码 xff1a spa
  • php产生大量session文件导致报错无法创建修改文件:no space left on device

    阿里云SLB健康检测后端服务器组产生百万级别的php的0k大小session文件 今天早上在登录公司一台阿里云的服务器上vim修改配置文件以及touch文件时报错 xff1a no space left on device df h 查看了
  • Rust: Native Windows GUI下载、安装、演示入门

    上 github 下载 xff0c 网址为 https github com gabdube native windows gui 上面有安装说明 按说明方法 xff0c 老是提示权限不够 配置了 ssh 公钥证书 xff0c 仍然不行 请
  • Rust: Native Windows GUI 入门第一课,程序结构剖析

    基于派生宏的代码实例 Cargo toml 文件 span class token punctuation span package span class token punctuation span name span class tok
  • 通过两个神经元的极简模型,清晰透视 Pytorch 工作原理

    解剖麻雀 xff0c 是分析了解复杂问题的好办法 本文通过搭建只有两个神经元的网络 xff0c 从根本上剖析 Pytorch 工作原理 先附上全部源代码 xff0c 然后听我慢慢唠 xff01 span class token keywor
  • Cifar-10 数据格式分析

    Cifar 10 的介绍可去官网阅读 xff0c 也可参照我之前整理的 笔记 xff1a CIFAR 01 和 CIFAR 100 数据集内容和格式详解 1 下载 Cifar 10 数据 本文下载了 Cifar 10 的 Python 语言
  • 准确率(Accuracy)、精度(Precision)、召回率(Recall)和 mAP 的图解

    机器学习的评价指标让人眼花缭乱 以前我写过一篇笔记总结了这个话题 xff0c 有兴趣的可以参考一下 xff1a 一分钟看懂深度学习中的准确率 xff08 Accuracy xff09 精度 xff08 Precision xff09 召回率
  • conda 基本用法

    好久不用超算服务器了 xff0c 今天远程登陆一下 xff0c 发现以前写的代码都不能运行了 鼓捣半天 xff0c 忽然想起来 xff0c 需要设置 conda 环境才行 写此小结 xff0c 汇总一下 conda 的基本用法 很久以前安装
  • jupyter 基本用法

    前一段时间 xff0c 同事帮我在超算服务器安装了一套 jupyter notebook 软件 xff0c 甚是好用 但用了几天后 xff0c 忽然就不能用了 今天研究了一下 xff0c 发现是服务器程序关闭了 xff0c 所以我在浏览器端
  • pytorch模型的保存与加载

    torch save 与 torch load 模型保存有两种形式 xff0c 一种是保存模型的 state dict xff0c 只是保存模型的参数 那么加载时需要先创建一个模型的实例 model xff0c 之后通过 torch loa
  • 用 SDK Mamager 安装 Nano

    用 SDK Mamager 安装 Nano 一 安装 sdk manager 在 PC 机上 Ubuntu 环境下 xff0c 下载 sdk manager 安装包 xff0c 用鼠标点击后自动运行 界面上有 Install 字样 xff0
  • TensorRTx 开源代码内容说明

    TensorRTx 提供了把常见网络模型转化为 TensorRT 格式的功能 TensorRTx旨在使用tensorrt网络定义API实现流行的深度学习网络 tensorrt有内置的解析器 xff0c 包括caffeparser uffpa