1. 程式人生 > 程式設計 >Tensorflow 模型轉換 .pb convert to .lite例項

Tensorflow 模型轉換 .pb convert to .lite例項

2017年底,Tensorflow 推出Lite版本,可實現移動端的快速執行,其中,一個很關鍵的問題,如何把現有分類模型(.pb) 轉換為(.lite)模型呢?

其實,步驟如下

1- 進入 Tensorflow 原始碼資料夾(以便bazel可以無需配置找打相應路徑)

2- 轉換可執行檔案

bazel run --config=opt \
 //tensorflow/contrib/lite/toco:toco -- \
 --input_file=/tmp/mobilenet_v1_1.0_224_frozen.pb \  # 待轉換模型路徑
 --output_file=/tmp/tflite_model2.tflite \      # 目標模型路徑
 --input_format=TENSORFLOW_GRAPHDEF \
 --output_format=TFLITE \
 --input_shape=1,224,3 \              # 輸入影象寬高
 --input_array=input \                 # 輸入節點名稱<參考1>
 --output_array=MobilenetV1/Predictions/Reshape_1 \  # 輸出節點名稱<參考1>
 --inference_type=FLOAT \               # 影象資料型別
 --input_data_type=FLOAT

參考1: 如果輸入輸出節點不知道:進入python,import tf ,並通過如下命令( tf.GraphDef() )查詢:

>>> import tensorflow as tf
>>> gf = tf.GraphDef()
>>> gf.ParseFromString(open('/your/path/to/graphname.pb','rb').read())
>>> for n in gf.node:
>>>   print ( n.name +' ===> '+n.op ) 

參轉換後,在android手機上執行,在不考慮精度的前提下,不同實現方式得到的結果如下:

模型 type model size speed
mobilenet-v1-224 .pb 17 mb 106 ms
mobilenet-v1-224 .lite 16.4 mb 72 ms

以上這篇Tensorflow 模型轉換 .pb convert to .lite例項就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。