
TensorRT学习笔记
文章平均质量分 55
TensorRT基本用法、TensorRT常用API
纳兰小熊
Notes do not lie! 个人主页:https://liujf69.github.io/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
TensorRT学习笔记--常用卷积、激活、池化和FC层算子API
第二个参数表示卷积层输出的特征图数,即通道数channel;第一个参数表示输入的Tensor数据;第四个参数和第五个参数表示加载的权重;第一个参数表示输入的Tensor数据;第一个参数表示输入的Tensor数据;第一个参数表示输入的Tensor数据;第三个参数和第四个参数表示加载的权重;第三个参数表示使用的卷积核大小;第二个参数表示使用的池化类型;第三个参数表示池化窗口的大小;1--Tensor算子API。第二个参数表示输出的通道数;1-4--FC层算子。原创 2023-10-22 00:25:54 · 766 阅读 · 0 评论 -
PTQ量化和QAT量化
使用一批校准数据对训练好的模型进行校准,将训练好的FP32网络直接转换为定点计算的网络,过程中无需对原始模型进行任何训练,而只对几个超参数调整就可完成量化过程。(计算每一层的scale)同时TensorRT还会进行图优化,当一个OP设置为Int8精度,但其与另一个OP合并会导致速度更快时,TensorRT就会将两个OP合并,并忽略用户设置的INT8精度。使用QAT量化时,会为权重值和激活值插入Q节点(量化节点,FP32→INT8)和DQ节点(反量化节点,INT8→FP32)来模拟量化的过程。原创 2023-10-19 21:50:24 · 1721 阅读 · 0 评论 -
模型量化笔记--KL散度量化
前面介绍的非对称量化中,是将数据中的min值和max值直接映射到[-128, 127]。同样的,前面介绍的对称量化是将数据的最大绝对值∣max∣|max|∣max∣直接映射到127。上面两种直接映射的方法比较粗暴,而TensorRT中的int8量化是基于KL散度来选取最佳的阈值T来映射到127中。超出阈值±∣T∣\pm|T|±∣T∣的数据会直接映射为阈值(类似于截断映射)。KL散度常用来衡量两个分布P和Q之间的差异,KL散度越小,两个分布越相似,其公式定义如下:DKL=∑iP(xi)log(P(xi)原创 2023-10-17 20:49:45 · 2127 阅读 · 0 评论 -
TensorRT学习笔记--YoloV5检测的C++后处理代码
过滤 IOU 高于设定阈值的检测框(只保留置信度高的那一个,所以上面代码中首先按置信度从大到小进行排序);右下角坐标:right_bottom_x = std::min(x_a2, x_b2);左上角坐标:left_top_x = std::max(x_a1, x_b1);① 读取每一个检测框的置信度,先。② 两两计算检测框的 IOU,原创 2023-09-25 20:13:20 · 970 阅读 · 0 评论 -
C++项目笔记--基于TensorRT搭建一个YoloV5服务器
④ 创建两个读线程来接收客户端的数据,并采用 least connections 算法来实现两个读线程的负载均衡。⑥ 工作线程基于 TensorRT 推理框架来加载 YoloV5 推理引擎进行模型推理,并将推理结果发送回客户端。③ 服务器和客户端约定使用相同的数据传输协议,头部分别使用 4 个字节来表示图片的宽,高和大小。⑤ 创建一个可变参数的线程池,读线程接收数据后将图片传入工作线程中,工作线程对图片进行模型推理。后续将补充数据库的功能,以及支持更多的模型推理;原创 2023-09-24 17:30:03 · 369 阅读 · 0 评论 -
TensorRT学习笔记--基于TensorRT部署YoloV3, YoloV5和YoloV8
【代码】TensorRT学习笔记--基于TensorRT部署YoloV3, YoloV5和YoloV8。基于 TensorRT 推理图片、视频和摄像头;原创 2023-08-02 23:53:32 · 1047 阅读 · 0 评论 -
TensorRT学习笔记--官方示例sampleOnnxMNIST.cpp的理解与运行
重点关注官方示例如何导入Onnx模型,相关API的用法;原创 2023-03-07 21:46:37 · 1190 阅读 · 1 评论 -
TensorRT学习笔记--官方示例sampleGoogleNet.cpp的理解与运行
【代码】TensorRT学习笔记--官方示例sampleGoogleNet.cpp的理解与运行。原创 2023-03-04 22:09:06 · 393 阅读 · 1 评论 -
TensorRT学习笔记--官方示例sampleMNIST.cpp的理解与运行
基于 TensorRT 8.2.5.1 和 Cuda11.3,在 Ubuntu 20.04 编写 CMakeLists.txt 进行编译,生成可执行文件;2--编写CMakeLists.txt。原创 2023-01-12 20:53:44 · 1080 阅读 · 0 评论 -
TensorRT学习笔记--Linux基于VSCode利用CMake编译C++ Sample
博主系统环境如下:System:Ubuntu 20.04 OpenCV:4.70 Cuda:11.3 Tensor RT:8.2.5.1;需要使用OpenCV、TensorRT以及Cuda相应的头文件和动态库,以下提供一个 CMakeLists.txt 编写样例,需根据个人实际修改具体路径:原创 2023-01-12 17:12:29 · 2063 阅读 · 0 评论 -
TensorRT学习笔记--基本概念和推理流程
② 在模型推理中,一般会将 Onnx 等格式的模型通过编译(build)生成推理引擎(engine),engine 可以通过序列化(serialize)的方式进行永久存储,永久存储的 engine 则可以通过反序列化(deserialize)的方式进行加载;① 基于 Tensor RT 进行模型的推理,从宏观上可分为三个阶段,即输入数据的前处理(preprocess)、模型推理(inference)和推理结果的后处理(postprocess);① Logger:日志记录器,可用于记录模型编译的过程;原创 2023-01-11 21:57:40 · 5755 阅读 · 5 评论 -
TensorRT学习笔记--序列化(Serialize)和反序列化(Deserialize)
将某个对象的信息转化成可以存储或者传输的信息,这个过程称为序列化;反序列化是序列化的相反过程,将信息还原为序列化前的状态;就能够快速加载 序列化保存好的模型。1--序列化和反序列化的概念。的时候,只需要通过简单的。2-1--序列化并保存模型。2-2--反序列化加载模型。时,则反序列化可以是。的时候不需要重复编译。成一个能够永久保存的。,节省部署开发的时间。原创 2023-01-10 17:06:56 · 3964 阅读 · 5 评论 -
TensorRT学习笔记--基于FCN-ResNet101推理引擎实现语义分割
之前的Tensor RT 7.x 版本将--workspace设置为64,当使用Tensor RT 8.x 版本时,workspace的空间将不足会出现上图的错误,因此需将 --workspace=64 设置为 --workspace=4096;) 进行实现,首先将训练好的 Pytorch 模型转换为 Onnx 模型,之后基于Tensor RT将 Onnx 模型转换为推理引擎 engine,最后使用Tensor RT的推理引擎 engine 实现语义分割。2-2--测试Onnx模型。原创 2023-01-07 15:39:42 · 2068 阅读 · 0 评论 -
TensorRT学习笔记--Ubuntu20.04安装TensorRT 8.2.5
3-3--基于Tensor RT使用engine模型进行推理。博主下载的版本为Tensor RT 8.2.5.1。正常运行,没有报错就表明下载的Onnx模型没有问题;3-2--将Onnx模型转换为推理引擎engine。2--下载并安装Tensor RT。3-1--验证Onnx模型的可用性。1--查看本机环境配置。原创 2023-01-05 23:18:03 · 8798 阅读 · 4 评论 -
C++笔记--基于Tensorrt将Onnx格式转换为engine推理格式
1--代码#include <fstream>#include <iostream>#include <sstream>#include "NvInfer.h"#include "NvOnnxParser.h"#include "NvinferRuntime.h"using namespace nvinfer1;using namespace nvonnxparser;// 全局创建 ILogger 类型的对象class Logger : p原创 2022-05-06 17:08:02 · 3089 阅读 · 1 评论