用于ONNX的TensorRT后端

解析ONNX模型以使用TensorRT执行。

另请参阅TensorRT文档。

有关最近更改的列表,请参见changelog。

支持的TensorRT版本

Master分支上的开发适用于具有完整维度和动态架构shape支持的TensorRT 7.2.1的最新版本。

对于TensorRT的早期版本,请参考其各自的分支。

完整尺寸+动态架构

在具有动态架构支持的全维度模式下,构建INetwork对象,需要调用以下API:

C ++

const auto explicitBatch = 1U <<
static_cast<uint32_t>(nvinfer1::NetworkDefinitionCreationFlag::kEXPLICIT_BATCH);

builder->createNetworkV2(explicitBatch)

Python

import tensorrt

explicit_batch = 1 << (int)(tensorrt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)

builder.create_network(explicit_batch)

有关这些API用法的示例,请参见:

sampleONNXMNIST
sampleDynamicReshape

支持的算子

当前支持的ONNX算子,可在算子支持列表中找到。

安装

依存关系

Dependencies

Protobuf>= 3.0.x
TensorRT 7.2.1
TensorRT 7.2.1 open source libaries (master branch)

编译

对于在docker中进行构建,建议按照main(TensorRT存储库)[https://github.com/NVIDIA/TensorRT#setting-up-the-build-environment]中的说明使用和设置Docker容器,来构建onnx -tensorrt库。

clone存储库后,可以通过运行以下命令,来构建解析器库和可执行文件:

cd onnx-tensorrt

mkdir build && cd build

cmake … -DTENSORRT_ROOT=<path_to_trt> && make -j

// Ensure that you update your LD_LIBRARY_PATH to pick up the location of the newly built library:

export LD_LIBRARY_PATH=PWD:PWD:PWD:LD_LIBRARY_PATH

可执行用法

可以使用onnx2trt可执行文件,将ONNX模型转换为序列化的TensorRT引擎:

onnx2trt my_model.onnx -o my_engine.trt

ONNX模型也可以转换为人们可读的文本:

onnx2trt my_model.onnx -t my_model.onnx.txt

ONNX模型也可以通过ONNX的优化库(由dsandler添加)进行优化。要优化ONNX模型并输出新的模型,可使用它-m来指定输出模型名称,用-O指定以分号分隔的优化过程列表,进行应用:

onnx2trt my_model.onnx -O “pass_1;pass_2;pass_3” -m my_model_optimized.onnx

通过运行以下命令,查看更多所有可用的优化遍历:

onnx2trt -p

通过运行以下命令,查看更多用法信息:

onnx2trt -h

Python模块

ONNX-TensorRT解析器的Python,绑定打包在随附的.whl文件中。用来安装

python3 -m pip install <tensorrt_install_dir>/python/tensorrt-7.x.x.x-cp<python_ver>-none-linux_x86_64.whl

TensorRT 7.2.1支持ONNX版本1.6.0。通过以下方式安装:

python3 -m pip install onnx==1.6.0

可以通过运行以下命令,来安装ONNX-TensorRT后端:

python3 setup.py install

ONNX-TensorRT Python后端使用

可以在Python中如下使用ONNX的TensorRT后端:

import onnx

import onnx_tensorrt.backend as backend

import numpy as np

model = onnx.load("/path/to/model.onnx")

engine = backend.prepare(model, device=‘CUDA:1’)

input_data = np.random.random(size=(32, 3, 224, 224)).astype(np.float32)

output_data = engine.run(input_data)[0]

print(output_data)

print(output_data.shape)

C ++库用法

模型解析器库libnvonnxparser.so,在头文件中声明了其C ++ API:

NvOnnxParser.h

测试

安装后(或在Docker容器内),可以按以下方式运行ONNX后端测试:

仅实模型测试:

python onnx_backend_test.py OnnxBackendRealModelTest

所有测试:

python onnx_backend_test.py

可以使用-v标志,使输出更加详细。

预训练模型

在ONNX格式预先训练模式可以在找到ONNX
Model Zoo

https://github.com/onnx/onnx-tensorrt

用于ONNX的TensorRT后端相关推荐

  1. onnx 测试_用于ONNX的TensorRT后端

    用于ONNX的TensorRT后端 解析ONNX模型以使用TensorRT执行. 另请参阅TensorRT文档. 有关最近更改的列表,请参见changelog. 支持的TensorRT版本 Maste ...

  2. onnx转tensorrt 实战干货总结

    目录 查看tensorrt版本: input: dynamic input is missing dimensions in profile onnx转tensorrt方法 安装tensorrt: o ...

  3. pytorch模型转ONNX转TensorRT,模型转换和推理部署

    一.pth模型转ONNX import os import sys import torch import numpy as npfrom feat.model import ResNet # 导入自 ...

  4. pytorch,onnx和tensorrt 的速度对比

    onnx Open Neural Network Exchange (ONNX)是微软和Facebook携手开发的开放式神经网络交换工具.为人工智能模型(包括深度学习和传统ML)提供了一种开源格式.它 ...

  5. tensorrt,mmclas中的onnx转tensorrt

    NVIDIA TensorRT | NVIDIA Developerhttps://developer.nvidia.cn/zh-cn/tensorrtTensorRT详细入门指北,如果你还不了解Te ...

  6. onnx 测试_pytorch onnx onnxruntime tensorrt踩坑 各种问题

    做了一个小测试,发现pytorch onnx tensorrt三个库的版本存在微妙的联系,在我之前的错误实验中,PyTorch==1.3.0/1.4.0:Onnx==1.6.0:tensorrt=7. ...

  7. win10安装onnx、tensorrt(python用,超简单安装版)

    一. 安装环境版本 显卡是3090. 1. python 3.8 2. pytorch 1.9.1(torch-1.9.1+cu111-cp38-cp38-win_amd64),离线安装参考:(10条 ...

  8. 【TensorRT】PyTorch模型转换为ONNX及TensorRT模型

    文章目录 1. PyTorch模型转TensorRT模型流程 2. PyTorch模型转ONNX模型 3. ONNX模型转TensorRT模型 3.1 TensorRT安装 3.2 将ONNX模型转换 ...

  9. 1、pth转onnx模型、onnx转tensorrt模型、python中使用tensorrt进行加速推理(全网最全,不信你打我)

    本文向所有亲们介绍在python当中配置tensorrt环境.使用tensorrt环境进行推理的教程,主要分为两大部分,第一部分环境配置,第二部分前向推理. 第一部分 环境配置 第一步:检查你的系统类 ...

最新文章

  1. phpstorm 关闭多余变量提示
  2. LC #134 JS
  3. springboot 做表白墙_华农表白墙144期 | 等什么时候,她从我开的花店前经过,我把整个花店送个她可好。...
  4. trap in development
  5. 【Django】MTV(Django)模型
  6. 裴蜀定理(note)
  7. count does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manu
  8. Shanghai Barcamp
  9. unserialize用法
  10. Android中使用shape来定义控件的显示属性
  11. python---图表的使用
  12. Java机器学习开发库
  13. ValueError: threshold must be numeric and non-NAN, try sys.maxsize for untruncated representation
  14. 旧版sai笔刷_最详细的SAI笔刷设置教程,非常全面详细!
  15. 海洋女神亲身体验灵翼龙岛飞行任务--壮志凌云:空军指挥官穆维里克--完成后的诀窍总结...
  16. 微信红包数字变化动态图片_微信红包数字动图下载_微信动态图片红包图下载_游戏吧...
  17. deepin更新失败_deepin V20 20200826升级失败
  18. 进制为2的10次方的世界
  19. 页面文件太小,无法解决/BrokenPipeError: [Errno 32] Broken pipe问题解决
  20. 从原理入手,彻底解除非法应用程序劫持项

热门文章

  1. 力扣每日一题——独一无二出现的次数
  2. 2022-2028年中国茶几玻璃行业市场研究及前瞻分析报告
  3. 通过python利用哈希值实现比较两个文件的一致性
  4. 前端Vue学习之路(一)-初识Vue
  5. Mybatis传递多个参数的4种方式
  6. 文化内涵和历史深度:PC
  7. CVPR2020最新论文扫描盘点(上)
  8. Android App的启动过程
  9. 2021年大数据ELK(一):集中式日志协议栈Elastic Stack简介
  10. Docker核心技术之数据管理