模型量化有两种方式:python API和toco工具,这两种方式都可以进行tflite模型转换,包括float16、int8两种数据格式的tflite模型
下面介绍使用toco工具进行模型转换的步骤:
1.从tensorflow官方clone tensorflow源码,我使用的是tensorflow==1.13
git clone https://github.com/tensorflow/tensorflow.git
2.安装bazel工具,详细步骤可以根据bazel官网进行安装
https://docs.bazel.build/versions/master/install-ubuntu.html
3.编译toco工具,编译方式
bazel build //tensorflow/lite/toco:toco
4.量化训练后的模型(带有虚节点)生成float16tflite模型
./bazel-bin/tensorflow/lite/toco/toco --input_file=model.pb --output_file=pl.tflite --input_format=TENSORFLOW_GRAPHDEF --output_format=TFLITE --inference_type=FLOAT --input_shape=1,768,768,3 --input_array=Placeholder --output_arrays=strided_slice_11,strided_slice_12 --drop_fake_quant --mean_value=0 --std_value=1
5.量化训练后的模型(带有虚节点)生成int8 tflite模型
./bazel-bin/tensorflow/lite/toco/toco --input_file=pixel_link_quan_sigmoid_split64_big_768_x4.pb --output_file=pl2.tflite --input_format=TENSORFLOW_GRAPHDEF --output_format=TFLITE --inference_type=QUANTIZED_UINT8 --input_shape=1,768,768,3 --input_array=Placeholder --output_arrays=strided_slice_11,strided_slice_12 --drop_fake_quant --mean_value=0 --std_value=1
参考:https://blog.csdn.net/gubenpeiyuan/article/details/79652227
https://zhuanlan.zhihu.com/p/59496851
https://stackoverflow.com/questions/48112174/tensorflow-lite-error-converting-to-tflite-using-toco