模型部署学习笔记
文章平均质量分 71
深度学习模型的推理框架、压缩、加速等学习笔记
晓晓纳兰容若
Notes do not lie!
展开
-
TensorRT学习笔记--常用卷积、激活、池化和FC层算子API
第二个参数表示卷积层输出的特征图数,即通道数channel;第一个参数表示输入的Tensor数据;第四个参数和第五个参数表示加载的权重;第一个参数表示输入的Tensor数据;第一个参数表示输入的Tensor数据;第一个参数表示输入的Tensor数据;第三个参数和第四个参数表示加载的权重;第三个参数表示使用的卷积核大小;第二个参数表示使用的池化类型;第三个参数表示池化窗口的大小;1--Tensor算子API。第二个参数表示输出的通道数;1-4--FC层算子。原创 2023-10-22 00:25:54 · 404 阅读 · 0 评论 -
模型部署笔记--Pytorch-FX量化
在对原始模型model调用prepare_fx()后得到prepare_model,一般需要对模型进行校准,校准后再调用convert_fx()进行模型的量化。Pytorch在torch.quantization.quantize_fx中提供了两个API,即prepare_fx和convert_fx。convert_fx的作用是根据scale和zero_point来将模型进行量化。3-2--prepare_dataloader函数。1--Pytorch-FX量化。3-3--训练和测试函数。原创 2023-10-20 17:49:50 · 1227 阅读 · 3 评论 -
PTQ量化和QAT量化
使用一批校准数据对训练好的模型进行校准,将训练好的FP32网络直接转换为定点计算的网络,过程中无需对原始模型进行任何训练,而只对几个超参数调整就可完成量化过程。(计算每一层的scale)同时TensorRT还会进行图优化,当一个OP设置为Int8精度,但其与另一个OP合并会导致速度更快时,TensorRT就会将两个OP合并,并忽略用户设置的INT8精度。使用QAT量化时,会为权重值和激活值插入Q节点(量化节点,FP32→INT8)和DQ节点(反量化节点,INT8→FP32)来模拟量化的过程。原创 2023-10-19 21:50:24 · 640 阅读 · 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 · 720 阅读 · 0 评论 -
模型量化笔记--对称量化和非对称量化
量化映射的通用公式为:rSq−Z其中r表示量化前数据的真实值,S表示缩放因子,q表示量化后的数值,Z表示零点。原创 2023-10-17 20:44:55 · 941 阅读 · 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 · 612 阅读 · 0 评论 -
C++项目笔记--基于TensorRT搭建一个YoloV5服务器
④ 创建两个读线程来接收客户端的数据,并采用 least connections 算法来实现两个读线程的负载均衡。⑥ 工作线程基于 TensorRT 推理框架来加载 YoloV5 推理引擎进行模型推理,并将推理结果发送回客户端。③ 服务器和客户端约定使用相同的数据传输协议,头部分别使用 4 个字节来表示图片的宽,高和大小。⑤ 创建一个可变参数的线程池,读线程接收数据后将图片传入工作线程中,工作线程对图片进行模型推理。后续将补充数据库的功能,以及支持更多的模型推理;原创 2023-09-24 17:30:03 · 247 阅读 · 0 评论 -
记录--MMDeploy安装、python API测试及C++推理
目录1--前言2--MMDeploy安装2-1--下载代码仓库2-2--安装构建和编译工具链2-3--创建Conda虚拟环境2-4--安装MMDeploy SDK依赖2-5--安装推理引擎2-6--设置PATH2-7--编译安装依赖库3--编译MMDeploy SDK及Python API测试4--C++推理测试5--修改object_detection.cpp显示推理时长6--参考1--前言服务器配置如下:Cuda版本:11.1C..原创 2022-05-13 11:14:35 · 3604 阅读 · 5 评论 -
笔记--Nvidia Jetson利用Anaconda安装MMDeploy及API测试
前言:建议结合官方文档阅读。1--安装Anaconda①下载Anacondacd ~/mmdeploy_test # 进入一个新的文件夹# 下载anaconda包wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge-pypy3-Linux-aarch64.sh"bash Miniforge-pypy3-Linux-aarch64.sh # 执行安装source ~/.b原创 2022-05-18 11:07:39 · 1414 阅读 · 3 评论 -
Yolov5笔记--RKNN推理部署源码的粗略理解
1--基础知识①Yolov5的输出格式一般为a ×b × c × 85的形式,其中a*b*c表示框的数目,85则涵盖框的位置信息(x,y,w,h)、置信度Pc和80个类别的预测概率c1,...,c80。下图展示了不同版本Yolov5的输出信息:②阈值过滤锚框简要介绍两种过滤锚框的方法:A:利用置信度(box_confidence,即Pc)和预测概率(box_class_probs,即c1,...,c80)计算锚框的得分(box_scores),如果最高的得分高于过滤阈值(thr.原创 2022-05-27 17:05:46 · 4870 阅读 · 3 评论