欢迎关注我的公众号 [极智视界],回复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 模型转换及量化

最新文章

  1. 项目游戏开发日记 No.0x000006(Finish)
  2. Linux异常表
  3. CREATE TABLE 表名 AS SELECT 语句
  4. Datatables 在asp.net mvc中的使用
  5. Windows下常用软件工具的命令
  6. ubuntu为用户增加sudoer权限的两种方法
  7. windows和ubuntu下gif动态图片的制作
  8. MarkupExtension
  9. python成长之路【第四篇】:装饰器
  10. Web服务器优化
  11. JavaScript-冒泡排序
  12. raw_input() 与 input()
  13. 跨frame操作dom元素
  14. 如何在一个网站或者一个页面,去书写你的JS代码
  15. Eclipse svn图标不显示
  16. Highcharts使用CSV格式数据绘制图表
  17. React中jsx调用js例子
  18. 从BAT这种公司平薪跳槽头条,是否值得?
  19. C#、winform、wpf将类控件放进工具箱里
  20. Mybatis Hibernate-&gt;MyBatis

热门文章

  1. 快速搭建 kvm web 管理工具 WebVirtMgr
  2. Roslyn 编译器Api妙用:动态生成类并实现接口
  3. Spark 安装部署与快速上手
  4. logstash插件配置-codec插件说明json和multiline
  5. 利用Fastjson注入Spring内存马
  6. 为什么前端H5工程师工资那么高?
  7. 自然溢出哈希 hack 方法
  8. python 新闻管理系统——启示
  9. ping 的原理
  10. Oracle-怎么在表的特定位置增加列