模型推理tengine模型转换及量化(代码片段)

极智视界 极智视界     2023-02-27     726

关键词:

欢迎关注我的公众号 [极智视界],回复001获取Google编程规范

O_o>_<o_OO_o~_~o_O

  本文介绍一下 Tengine 模型转换及量化流程。

  Tengine 同 ncnn 一样,也是优秀的端侧推理框架,前面写过一篇《ncnn 模型转换及量化流程》,有兴趣的同学可以查阅。

  下面开始。

1、编译 Tengine Tools

  CmakeList.txt 中打开 CONVERT_TOOL 和 QUANT_TOOL 开关:

  开始编译:

cd <Tengine-path>
mkdir build

cd build

# 开始编译
camke ..
make -j32
make install

  编译完会在 ./build/install/bin/ 目录下生成 convert_toolquant_tool,如下:


2、Tengine 模型转换

  用如下命令看一下 convert_tool 需要什么样的传参:

cd ./build/install/bin

./convert_tool -h

  如上,前面为输入,后面为输出。

  Tengine 提供的模型转换工具前端支持的十分丰富,基本通吃了国外、国内主流的深度学习框架。

  前端为 Caffe:

./convert_tool -f caffe -p ./mobilenet.prototxt -m ./mobilenet.caffemodel -o ./mobilenet.tmfile

  前端为 Onnx:

./convert_tool -f onnx -m ./mobilenet.onnx -o ./mobilenet.tmfile

  前端为 Mxnet:

./convert_tool -f mxnet -p ./mobilenet.params -m ./mobilenet.json -o ./mobilenet.tmfile

  前端为 Darknet:

./convert_tool -f darknet -p ./yolov3.weights -m ./yolov3.cfg -o yolov3.tmfile

  前端为 TensorFlow:

./convert_tool -f tensorflow -m mobielenet_v1_1.0_224_frozen.pb -o mobilenet.tmfile

  前端为 TFLite:

./convert_tool -f tflite -m mobielenet.tflite -o mobilenet.tmfile

  前端为 MegEngine:

./convert_tool -f megengine -m mobilenet.pkl -o mobilenet.tmfile

  前端为 OneFlow:

./convert_tool -f oneflow -p mobilenet.prototxt -m mobilenet/ -o mobilenet.tmfile

  前端为 ncnn:

./convert_tool -f ncnn -p mobilenet.param -m mobilenet.bin -o mobilenet.tmfile

3、Tengine 量化推理

  可以看到 Tengine 提供的量化工具有三个:quant_tool_int8quant_tool_uint8quant_tool_uint8_perchannel,分别是对称量化、非对称量化、非对称逐通道量化,里面的量化策略类似,这里挑 quant_tool_int8说一下。

  先安装一下依赖库:

apt update
apt install libopencv-dev

  用如下命令查看量化工具传参:

./quant_tool_int8 -h

  可以看到传参还是比较丰富的。

  前端输入为 fp32 tmfile,执行量化示例:

./quant_tool_int8  -m ./mobilenet_fp32.tmfile -i ./dataset -o ./mobilenet_int8.tmfile -g 3,224,224 -w 104.007,116.669,122.679 -s 0.017,0.017,0.017

  执行成功会输出如下日志:

  并生成如下 int8 模型文件:

  然后就可以拿去执行推理了。


  以上分享了 Tengine 模型转换及量化方法,希望我的分享能对你的学习有一点帮助。


 【公众号传送】

《【模型推理】Tengine 模型转换及量化》


扫描下方二维码即可关注我的微信公众号【极智视界】,获取更多AI经验分享,让我们用极致+极客的心态来迎接AI !

模型推理寒武纪mluresnet50量化及离线推理流程(代码片段)

...搭建、resnet50量化、resnet50离线推理,resnet系列是标准模型,其他模型也可参考该流程执行。文章目录1、 查看详情

模型推理量化实现分享一:详解min-max对称量化算法实现(代码片段)

 欢迎关注我的公众号[极智视界],回复001获取Google编程规范 O_o >_< o_O O_o ~_~ o_O 大家好,我是极智视界,本文剖析一下min-max对称量化算法实现,以Tengine的实现为例。 Tengine是OpenAILab开源的优秀端... 查看详情

模型推理比特大陆se5边缘盒子caffessd量化与转换部署模型(代码片段)

...本教程详细记录了在比特大陆SE5边缘盒子上对caffeSSD检测模型进行量化和转换部署模型的方法。文章目录1、准备ssd模型2、转换fp32bmodel2.1转fp32bmodel2.2、模型精度验证3、Int8量化与模型转换3.1模型转换fp32umodel3.2模型转换int8umodel3.2.1... 查看详情

模型推理谈谈非线性激活函数的量化方式(代码片段)

...O_o >_< o_O O_o ~_~ o_O 本文主要聊一聊深度学习模型量化中对激活函数的处理方式。 之前已经写过几篇关于模型量化的文章:《【模型推理】谈谈几种量化策略:MinMax、KLD、ADMM、EQ》、《【模型推理】谈谈模... 查看详情

模型推理量化实现分享三:详解aciq对称量化算法实现(代码片段)

...f0c;前面还有一、二,有兴趣的同学可以查阅 (1)《【模型推理】量化实现分享一:详解min-max对称量化算法实现》; (2)《【模型推理】量化实现分享二:详解KL对称量化算法实现》; ACIQ和前面的量化策略类似... 查看详情

模型推理谈谈为什么量化能加速推理(代码片段)

... o_O O_o ~_~ o_O 本文主要讨论一下为什么量化能加速模型推理。 前面已经写过几篇关于模型量化相关的文章:《【模型推理】谈谈几种量化策略:MinMax、KLD、ADMM、EQ》、《【模型推理】谈谈模型量化组织方式》、... 查看详情

模型推理谈谈模型量化组织方式(代码片段)

...O_o >_< o_O O_o ~_~ o_O 本文主要聊一下深度学习模型量化组织方式。 在我的这篇《【模型推理】谈谈推理引擎的推理组织流程》文章里对模型量化策略进行了一些介绍,有兴趣的同学可以翻看一下。今天这里主要... 查看详情

模型推理谈谈几种量化策略:minmaxkldadmmeq(代码片段)

...O_o >_< o_O O_o ~_~ o_O 本文主要聊一下深度学习模型量化相关策略。 模型小型化是算法部署的关键技术,模型小型化的过程通常用模型量化来描述。量化通常是高比特位到低比特位的映射过程,量化的对象既... 查看详情

markdown使用mxnet实现生产级神经网络模型量化推理(代码片段)

查看详情

模型推理量化实现分享二:详解kl对称量化算法实现(代码片段)

...实现,以Tengine的实现为例。 前面已经写过一篇《【模型推理】量化实现分享一:详解min-max对称量化算法实现》,有兴趣的同学可以查阅。这是上一篇的续集,也是量化实现详解的第二篇。 量化背景就不多做... 查看详情

量化感知训练实践:实现精度无损的模型压缩和推理加速(代码片段)

简介:本文以近期流行的YOLOX[8]目标检测模型为例,介绍量化感知训练的原理流程,讨论如何实现精度无损的实践经验,并展示了量化后的模型能够做到精度不低于原始浮点模型,模型压缩4X、推理加速最高2.3X... 查看详情

tflite 量化推理非常慢

...:2020-02-0911:30:27【问题描述】:我正在尝试将经过训练的模型从检查点文件转换为tflite。我正在使用tf.lite.LiteConverter。浮点转换以合理的推理速度进行得很好。但是INT8转换的推理速度很慢。我尝试通过输入一个非常小的网络进... 查看详情

模型推理openvino性能测试(代码片段)

...openvino性能测试的姿势。文章目录1、安装openvino2、openvino模型下载与推理实践3、openvino性能测试姿势3.1下载alexnet模型3.2模型转换3.3性能测试1、安装openvino 可以参考《【模型推理】ubuntu配置和使用openvino》。2、openvino模型下载与... 查看详情

pytorch模型转换为rknn模型,使用npu推理(代码片段)

一、转换为onnx模型在yolov5代码中运行export.py,转换为onnx模型,参数根据自己需要修改。二、创建转换目录然后在rknn文件夹下,找到onnx2rknn.py、dataset.txt和coco2017数据集,将它们复制到新的文件夹中,作为rknn模... 查看详情

ncnn模型推理详解及实战(代码片段)

...cpu和内存硬件特性描述。最后结合shufflenetsample解析了,模型推理的全部流程,详解了sample代码的每个细节。一,依赖库知识速学aarch64OpenMPAVX512submoduleaptupgrade二,硬件基础知识速学2.1,内存2.2,CPU三,ncnn推理模型3.1,shufflenetv2... 查看详情

一文搞懂模型量化算法(代码片段)

1,模型量化概述1.1,模型量化优点模型量化是指将神经网络的浮点算法转换为定点。量化有一些相似的术语,低精度(Lowprecision)可能是常见的。低精度模型表示模型权重数值格式为FP16(半精度浮点)或者INT8(8位的定点整数... 查看详情

megengine使用小技巧:量化

常见神经网络模型所用的Tensor数据类型一般是float32类型,而工业界出于对特定场景的需求(极少的计算资源,极致的推理速度),需要把模型的权重和或激活值转换为位数更少的数值类型(比int8,float16)——整个过程被称为量... 查看详情

量化交易策略介绍及应用市值中性化选股(代码片段)

...是多因子选股策略2、多因子(Alpha因子)的种类3、资产定价模型(CAPM)4、套利定价理论(APT模型)5、FF三因子模型6、FF五因子模型7、关于挖掘与怎么做8、案例:市值因子(Alpha因子)的选股策略四、多因子策略流程1、多因子策略流程... 查看详情