java blob转file_人工智能-Object Detection API 模型转tflite并验证
最近在用TensorFlow Object Detection API訓(xùn)練目標(biāo)檢測模型,訓(xùn)練好的pb模型大小17.6M,用pb預(yù)測效果不錯,于是想著如何在手機(jī)端運(yùn)行,查看官網(wǎng)關(guān)于tflite的轉(zhuǎn)換,網(wǎng)址:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/running_on_mobile_tensorflowlite.md。
預(yù)測使用的pb模型:
在主目錄下的research目錄執(zhí)行如下:
生成預(yù)測使用的pb文件
注意里面的相關(guān)路徑需要換成自己的ckpt的目錄。執(zhí)行完后,會看到一個名字為--output_directory指定的目錄。這里為exported_graphs目錄,里面包含了一個SavedModel 和frozen graph,其中的.pb文件就是預(yù)測使用的。
如上轉(zhuǎn)換pb和預(yù)測過程參考我之前的文章即可。
關(guān)于tflite,需要使用如下操作:
生成frozen graph
注意第二行pipeline_config_path為你的pipeline.config目錄路徑,trained_config_path路徑為訓(xùn)練好的ckpt模型文件,output_dir為tflite輸出目錄文件夾名字,執(zhí)行完后在tflite目錄會看到兩個文件tflite_graph.pb and tflite_graph.pbtxt.
接下來就是轉(zhuǎn)tflite了,之前嘗試了其他轉(zhuǎn)tflite的方式,雖然只有幾行代碼,但發(fā)現(xiàn)一直有問題,因此按照官網(wǎng)要求一步一步轉(zhuǎn),這次使用TOCO轉(zhuǎn)tflite,首先需要安裝TensorFlow源碼并編譯。。。。。切記,要不然找不到bazel目錄。。。。
編譯生成量化的tflite
?注意在編譯后的bazel同一級目錄執(zhí)行,input_file為上一步生成的tflite_graph.pb文件。output_file為本次要生成的tflite文件。其他的為固定寫法,如果你的模型輸入不是300x300注意改input_shapes.執(zhí)行完就能看到一個detect.tflite文件,該文件大小17M多,這次量化后的模型。
float類型的模型轉(zhuǎn)換方式:
生成float(未量化)的tflite
?如上生成detect.tflite文件。
注意:在對比tflite和pb的一致性時,輸入到tflite的圖片需要進(jìn)行(image-127.5)/128操作。否則模型輸出結(jié)果和pb文件對不上。
這樣pb文件和tflite預(yù)測的結(jié)果就能一樣,不過float模型大小和pb文件差不多,而且量化的時候模型大小為0,不明白為什么量化的時候模型為量化成功原因,現(xiàn)在只能使用float類型的tflite
后續(xù)再講其他轉(zhuǎn)pb和tflite的方式以及驗證方式。
喜歡的朋友和點(diǎn)擊關(guān)注哦
總結(jié)
以上是生活随笔為你收集整理的java blob转file_人工智能-Object Detection API 模型转tflite并验证的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 同时设置超时时间_刚入职的小菜鸡,设错了
- 下一篇: 修改自增主键初始化_数据库自增ID用完了