歡迎關(guān)注我的公眾號 [極智視界]膝昆,回復001獲取Google編程規(guī)范
O_o
? >_<
? o_O
? O_o
? ~_~
? o_O
本文介紹一下 Tengine 模型轉(zhuǎn)換及量化流程帮寻。
Tengine 同 ncnn 一樣该编,也是優(yōu)秀的端側(cè)推理框架,前面寫過一篇《ncnn 模型轉(zhuǎn)換及量化流程》爷辙,有興趣的同學可以查閱彬坏。
下面開始。
1膝晾、編譯 Tengine Tools
CmakeList.txt 中打開 CONVERT_TOOL 和 QUANT_TOOL 開關(guān):
開始編譯:
cd <Tengine-path>
mkdir build
cd build
# 開始編譯
camke ..
make -j32
make install
編譯完會在 ./build/install/bin/
目錄下生成 convert_tool
和 quant_tool
栓始,如下:
2、Tengine 模型轉(zhuǎn)換
用如下命令看一下 convert_tool
需要什么樣的傳參:
cd ./build/install/bin
./convert_tool -h
如上血当,前面為輸入幻赚,后面為輸出。
Tengine 提供的模型轉(zhuǎn)換工具前端支持的十分豐富臊旭,基本通吃了國外坯屿、國內(nèi)主流的深度學習框架。
前端為 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</pre>
前端為 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
可以看到傳參還是比較豐富的府喳。
前端輸入為 fp32 tmfile蒲肋,執(zhí)行量化示例:
./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
執(zhí)行成功會輸出如下日志:
并生成如下 int8 模型文件:
然后就可以拿去執(zhí)行推理了。
以上分享了 Tengine 模型轉(zhuǎn)換及量化方法钝满,希望我的分享能對你的學習有一點幫助兜粘。
【公眾號傳送】
《【模型推理】Tengine 模型轉(zhuǎn)換及量化》