人工智慧-Object Detection API 模型轉tflite並驗證

最近在用TensorFlow Object Detection API訓練目標檢測模型,訓練好的pb模型大小17。6M,用pb預測效果不錯,於是想著如何在手機端執行,檢視官網關於tflite的轉換,網址:https://github。com/tensorflow/models/blob/master/research/object_detection/g3doc/running_on_mobile_tensorflowlite。md。

預測使用的pb模型:

在主目錄下的research目錄執行如下:

人工智慧-Object Detection API 模型轉tflite並驗證

生成預測使用的pb檔案

注意裡面的相關路徑需要換成自己的ckpt的目錄。執行完後,會看到一個名字為——output_directory指定的目錄。這裡為exported_graphs目錄,裡面包含了一個SavedModel 和frozen graph,其中的。pb檔案就是預測使用的。

如上轉換pb和預測過程參考我之前的文章即可。

關於tflite,需要使用如下操作:

人工智慧-Object Detection API 模型轉tflite並驗證

生成frozen graph

注意第二行pipeline_config_path為你的pipeline。config目錄路徑,trained_config_path路徑為訓練好的ckpt模型檔案,output_dir為tflite輸出目錄資料夾名字,執行完後在tflite目錄會看到兩個檔案tflite_graph。pb and tflite_graph。pbtxt。

接下來就是轉tflite了,之前嘗試了其他轉tflite的方式,雖然只有幾行程式碼,但發現一直有問題,因此按照官網要求一步一步轉,這次使用TOCO轉tflite,首先需要安裝TensorFlow原始碼並編譯。。。。。切記,要不然找不到bazel目錄。。。。

人工智慧-Object Detection API 模型轉tflite並驗證

編譯生成量化的tflite

​注意在編譯後的bazel同一級目錄執行,input_file為上一步生成的tflite_graph。pb檔案。output_file為本次要生成的tflite檔案。其他的為固定寫法,如果你的模型輸入不是300x300注意改input_shapes。執行完就能看到一個detect。tflite檔案,該檔案大小17M多,這次量化後的模型。

float型別的模型轉換方式:

人工智慧-Object Detection API 模型轉tflite並驗證

生成float(未量化)的tflite

​如上生成detect。tflite檔案。

注意:在對比tflite和pb的一致性時,輸入到tflite的圖片需要進行(image-127.5)/128操作。否則模型輸出結果和pb檔案對不上。

這樣pb檔案和tflite預測的結果就能一樣,不過float模型大小和pb檔案差不多,而且量化的時候模型大小為0,不明白為什麼量化的時候模型為量化成功原因,現在只能使用float型別的tflite

後續再講其他轉pb和tflite的方式以及驗證方式。

喜歡的朋友和點選關注哦