一、环境配置
Jetson系列加速器如Nano、Xavier在刷机之后是自动安装了TensorRT的,通过如下命令可以检查是否安装成功:
dpkg -l | grep TensorRT
成功显示:
但是可能一开始在conda环境里加载不出来,是因为没有配置好环境。
首先找到tensor.so的位置:
sudo find / -iname "tensorrt.so"
我的位置在这里:
然后进入自己创建的conda用户环境里(/usr/local/archiconda3/envs/pytorch/lib/python3.6/site-packages)建立软连接:
ln -s /usr/lib/python3.6/dist-packages/tensorrt/tensorrt.so tensorrt.so
现在import tensorrt就不会有问题了:
文件转换还需要用到trtexec这个文件,我找了好久原来在这里:
当然它还是无法直接使用的,要在.bashrc文件里添加一下环境变量:
export PATH=/usr/src/tensorrt/bin:$PATH
记得source一下。
现在环境就基本配置好啦!
二、文件转换
在.onnx目录下运行:
.onnx转.trt
import os
import tensorrt as trt
import sys
TRT_LOGGER = trt.Logger(trt.Logger.WARNING)
runtime = trt.Runtime(TRT_LOGGER)
model_path = 'XXX.onnx'
engine_file_path = "XXX.trt"
EXPLICIT_BATCH = 1 << (int)(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH) # batchsize=1
builder = trt.Builder(TRT_LOGGER)
network = builder.create_network(EXPLICIT_BATCH)
parser = trt.OnnxParser(network,TRT_LOGGER)
#with trt.Builder(TRT_LOGGER) as builder, builder.create_network(EXPLICIT_BATCH) as network, trt.OnnxParser(network,TRT_LOGGER) as parser:
builder.max_workspace_size = 1 << 28
builder.max_batch_size = 1
print(network)
if not os.path.exists(model_path):
print('ONNX file {} not found.'.format(model_path))
exit(0)
print('Loading ONNX file from path {}...'.format(model_path))
#with open(model_path, 'rb') as model:
model = open(model_path, 'rb')
print('Beginning ONNX file parsing')
if not parser.parse(model.read()):
print('ERROR: Failed to parse the ONNX file.')
for error in range(parser.num_errors):
print('parser.get_error(error)', parser.get_error(error))
#不加下面两行,生成的engine为None
last_layer = network.get_layer(network.num_layers - 1)
network.mark_output(last_layer.get_output(0))
network.get_input(0).shape = [1, 3, 680, 680] #此处记得修改成自己的inputsize
print('Completed parsing of ONNX file')
engine = builder.build_cuda_engine(network)
with open(engine_file_path, "wb") as f:
f.write(engine.serialize())
print('save trt success!!')
.onnx转.engine
trtexec --onnx=XXX.onnx --saveEngine=XXX.trt
可以在后面添加--int8或者--fp16指定精度。
Original: https://blog.csdn.net/qq_41847894/article/details/124132989
Author: Jodie大白话
Title: Jetson系列TensorRT .onnx转.trt/.engine
相关文章

Bert从入门到放弃——Bert文章精读(每部分的内容简介)及核心问题
目录 BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding 文章逐段简介 Bert从入门到放弃...

Pr 入门教程 如何为多个剪辑设置音频电平?
欢迎观看 Premiere Pro 教程,小编带大家学习 Pr 的基本编辑技巧,了解如何为多个剪辑设置音频电平。 有两种方法可以同时更改多个剪辑的音量。这两个选项都运行良好:音频增益调整(对音乐剪辑有...

如何评估强化学习模型的性能
你好,这篇文章咱们讨论一下关于「如何评估强化学习模型的性能」的事情... 关于如何评估强化学习模型性能的技术文 强化学习(Reinforcement Learning)是机器学习的一种分支,主要是用于...

OpenPrompt工具包使用
对工具包的介绍 有个疑问比如说positive这个类有好几个单词,那训练的时候到底看哪个? 现有模板的一些总结 目前的研究的组合方式 Original: https://www.cnblogs.com...

什么是人工智能?
人工智能导论 机器所展示的与人类自然智能相当的智能被称为人工智能。计算机程序是根据人类来学习,思考和行动的。所以我们可以说我们正在使机器变得智能。最好的例子是语音识别和图像识别。不同类型的AI包括反应...

OpenAPITools 实践
OpenAPITools 可以依据 REST API 描述文件,自动生成服务端桩(Stub)代码、客户端 SDK 代码,及文档等。其是社区版的 Swagger ,差异可见:OpenAPI Genera...

C++使用pointnet++训练模型进行点云分类
环境: ubuntu-18.04 nvidia驱动-470 cuda-10 cudnn-7.4 tensorflow1.13.1 1.版本信息 cuda和driver版本 tensorflow版本信息...

贝叶斯与朴素贝叶斯
贝叶斯 贝叶斯分类算法是统计学的一种分类方法, 它是一类利用概率统计知识进行分类的算法。 贝叶斯定理由英国数学家贝叶斯 ( Thomas Bayes 1702-1761 ) 发展,用来描述两个条件概率...

前端微信jssdk智能语音识别,完整案例
给大家分享一下最近开发微信浏览器智能语音识别jssdk案例。前期准备调研使用微信jssdk前,先使用开发了科大讯飞的语音识别。最后讨论使用微信jssdk的语音识别,所以团队放弃采购科大讯飞,使用微信自...

深入理解PSNR(峰值信噪比)(附matlab代码)
深入理解PSNR 作者:老李 日期:2022-1-19 本文引入MSE、SNR、变异系数(Coefficient of Variation),并希望从统计学的角度上解释这个变量 这个变量。 PSNR是...

Android从零开始配置opencv+tensorflow进行人脸识别+口罩识别(一:opencv配置部分)
前排提示 现在的opencv和dlib导入在github上已经有导入完成的项目了,如果不是为了学习而用的话,直接去github克隆,方便快捷 快速导入opencv到项目中 1.opencv 源码下载,...

StableDiffusion如何解决数据偏置和方差问题
你好,这篇文章咱们讨论一下关于「StableDiffusion如何解决数据偏置和方差问题」的事情... StableDiffusion: 解决数据偏置和方差问题的新型算法 在许多机器学习问题中,我们需...

如何训练强化学习模型
你好,这篇文章咱们讨论一下关于「如何训练强化学习模型」的事情... 如何训练强化学习模型 强化学习是机器学习领域中的一个重要子领域,它主要关注如何让智能体通过与环境的交互学习最优的行动策略。与其他的机...

2020未来杯高校AI挑战赛-跨设备说话人识别
赛事简介 语音可以作为一种生物识别的形式,通过对说话人语音的采样,我们对说话的身份进行验证,在语音助手、安防等领域有着广泛的应用场景。相对于基于文本内容的说话人识别,文本无关的验证因减少了变化的约束,...

pycharm安装TensorFlow的体会
本方法无需下载anaconda 1.官网安装python编译器(需3.7以上) 2.官网安装pycharm,配置环境 3.TensorFlow安装时的方法 (1)pycharm的界面:file-set...