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

  ​​O_o​​​   ​​>_<​​​   ​​o_O​​​   ​​O_o​​​   ​​~_~​​​   ​​o_O​

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

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

  下面开始。


文章目录

1、编译 Tengine Tools

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

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

  开始编译:

cd <Tengine-path>
mkdir build

cd build

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

  编译完会在 ​​./build/install/bin/​​​ 目录下生成 ​​convert_tool​​​ 和 ​​quant_tool​​,如下:

【模型推理】Tengine 模型转换及量化_人工智能_02



2、Tengine 模型转换

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

cd ./build/install/bin

./convert_tool -h

【模型推理】Tengine 模型转换及量化_深度学习_03

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

  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_int8​​​、​​quant_tool_uint8​​​、​​quant_tool_uint8_perchannel​​​,分别是对称量化、非对称量化、非对称逐通道量化,里面的量化策略类似,这里挑 ​​quant_tool_int8​​说一下。

  先安装一下依赖库:

apt update
apt install libopencv-dev

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

./quant_tool_int8 -h

【模型推理】Tengine 模型转换及量化_深度学习_04

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

  前端输入为 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

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

【模型推理】Tengine 模型转换及量化_人工智能_05

  并生成如下 int8 模型文件:

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

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



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





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

【模型推理】Tengine 模型转换及量化_算法_07