利用TFLite將MobilenetV2模型部署到移動端(pb->tflite)
全部利用tf官方python程式碼(bazel我真滴是mac下編譯環境問題搞不動)
有一個比較坑的地方是:
第1步和第2步在tf 1.4.0, numpy 1.15.4可以成功
第3步在tf 1.13.1, numpy 1.16.1可以成功
過程分為3步:
1、匯出前向傳播圖(不包含權重)
python export_inference_graph.py --model_name=mobilenet_v2_035 --output_file=0318_log_v2_035_mobilenet/0318_export_v2_035_mobilenet.pb --dataset_name=cards --dataset_dir=../datasets/cards_0317
2、將前向傳播圖(不包含權重)和訓練得到的cpkt檔案(包含權重)固化在一起
python freeze_graph.py --input_binary=true --input_graph=0318_log_v2_035_mobilenet/0318_export_v2_035_mobilenet.pb --input_checkpoint=0318_log_v2_035_mobilenet/model.ckpt-18000 --output_graph=0318_log_v2_035_mobilenet/0318_frozen_v2_035_mobilenet.pb --output_node_names=MobilenetV2/Predictions/Reshape_1
3、利用TFLiteConverter將固化後的pb檔案轉成tflite格式檔案
import tensorflow as tf graph_def_file = "0318_log_v2_035_mobilenet/0318_frozen_v2_035_mobilenet.pb" input_arrays = ["input"] output_arrays = ["MobilenetV2/Predictions/Softmax"] converter = tf.lite.TFLiteConverter.from_frozen_graph( graph_def_file, input_arrays, output_arrays) tflite_model = converter.convert() open("0318_log_v2_035_mobilenet/0318_v2_035_float_mobilenet.tflite", "wb").write(tflite_model)