【模型推理】Tengine 模型转换及量化
欢迎关注我的公众号 [极智视界],回复001获取Google编程规范
O_o
>_<
o_O
O_o
~_~
o_O
本文介绍一下 Tengine 模型转换及量化流程。
Tengine 同 ncnn 一样,也是优秀的端侧推理框架,前面写过一篇《ncnn 模型转换及量化流程》,有兴趣的同学可以查阅。
下面开始。
1、编译 Tengine Tools
域名 中打开 CONVERT_TOOL 和 QUANT_TOOL 开关:
开始编译:
cd <Tengine-path>
mkdir build
cd build
# 开始编译
camke ..
make -j32
make install
编译完会在 ./build/install/bin/
目录下生成 convert_tool
和 quant_tool
,如下:
2、Tengine 模型转换
用如下命令看一下 convert_tool
需要什么样的传参:
cd ./build/install/bin
./convert_tool -h
如上,前面为输入,后面为输出。
Tengine 提供的模型转换工具前端支持的十分丰富,基本通吃了国外、国内主流的深度学习框架。
前端为 Caffe:
./convert_tool -f caffe -p ./域名otxt -m ./域名emodel -o ./域名le
前端为 Onnx:
./convert_tool -f onnx -m ./域名 -o ./域名le
前端为 Mxnet:
./convert_tool -f mxnet -p ./域名ms -m ./域名 -o ./域名le
前端为 Darknet:
./convert_tool -f darknet -p ./域名hts -m ./域名 -o 域名le
前端为 TensorFlow:
./convert_tool -f tensorflow -m 域名 -o 域名le
前端为 TFLite:
./convert_tool -f tflite -m 域名te -o 域名le
前端为 MegEngine:
./convert_tool -f megengine -m 域名 -o 域名le
前端为 OneFlow:
./convert_tool -f oneflow -p 域名otxt -m mobilenet/ -o 域名le
前端为 ncnn:
./convert_tool -f ncnn -p 域名m -m 域名 -o 域名le
3、Tengine 量化推理
可以看到 Tengine 提供的量化工具有三个:quant_tool_int8
、quant_tool_uint8
、quant_tool_uint8_perchannel
,分别是对称量化、非对称量化、非对称逐通道量化,里面的量化策略类似,这里挑 quant_tool_int8
说一下。
先安装一下依赖库:
apt update
apt install libopencv-dev
用如下命令查看量化工具传参:
./quant_tool_int8 -h
可以看到传参还是比较丰富的。
前端输入为 fp32 tmfile,执行量化示例:
./quant_tool_int8 -m ./域名le -i ./dataset -o ./域名le -g 3,224,224 -w 域名,域名,域名 -s 域名,域名,域名
执行成功会输出如下日志:
并生成如下 int8 模型文件:
然后就可以拿去执行推理了。
以上分享了 Tengine 模型转换及量化方法,希望我的分享能对你的学习有一点帮助。
【公众号传送】
《【模型推理】Tengine 模型转换及量化》