【模型推理】Tengine 模型轉換及量化

極智視界發表於2021-12-13

歡迎關注我的公眾號 [極智視界],回覆001獲取Google程式設計規範

O_o >_<  o_O O_o ~_~ o_O

本文介紹一下 Tengine 模型轉換及量化流程。

  Tengine 同 ncnn 一樣,也是優秀的端側推理框架,前面寫過一篇《ncnn 模型轉換及量化流程》,有興趣的同學可以查閱。

下面開始。

 

1、編譯 Tengine Tools

  CmakeList.txt 中開啟 CONVERT_TOOL 和 QUANT_TOOL 開關:

【模型推理】Tengine 模型轉換及量化

開始編譯:

cd <Tengine-path>
mkdir build

cd build

# 開始編譯
camke ..
make -j32
make install

  編譯完會在 ./build/install/bin/ 目錄下生成 convert_toolquant_tool,如下:

【模型推理】Tengine 模型轉換及量化

 

2、Tengine 模型轉換

用如下命令看一下 convert_tool 需要什麼樣的傳參:

cd ./build/install/bin

./convert_tool -h

【模型推理】Tengine 模型轉換及量化

如上,前面為輸入,後面為輸出。

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

【模型推理】Tengine 模型轉換及量化

  可以看到傳參還是比較豐富的。

前端輸入為 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 模型轉換及量化

  並生成如下 int8 模型檔案:

【模型推理】Tengine 模型轉換及量化

  然後就可以拿去執行推理了。

 

  以上分享了 Tengine 模型轉換及量化方法,希望我的分享能對你的學習有一點幫助。

 

【公眾號傳送】

【模型推理】Tengine 模型轉換及量化

相關文章