您的位置 首页 > 数码极客

如何调用pb模型预测一张图

最近在用TensorFlow Object Detection API训练目标检测模型,训练好的pb模型大小17.6M,用pb预测效果不错,于是想着如何在手机端运行,查看官网关于tflite的转换,网址:。

预测使用的pb模型:

在主目录下的research目录执行如下:

生成预测使用的pb文件

注意里面的相关路径需要换成自己的ckpt的目录。执行完后,会看到一个名字为--output_directory指定的目录。这里为exported_graphs目录,里面包含了一个SavedModel 和frozen graph,其中的.pb文件就是预测使用的。

如上转换pb和预测过程参考我之前的文章即可。

关于tflite,需要使用如下操作:

生成frozen graph

注意第二行pipeline_config_path为你的目录路径,trained_config_path路径为训练好的ckpt模型文件,output_dir为tflite输出目录文件夹名字,执行完后在tflite目录会看到两个文件 and txt.

接下来就是转tflite了,之前尝试了其他转tflite的方式,虽然只有几行代码,但发现一直有问题,因此按照官网要求一步一步转,这次使用TOCO转tflite,首先需要安装TensorFlow源码并编译。。。。。切记,要不然找不到bazel目录。。。。


编译生成量化的tflite

​注意在编译后的bazel同一级目录执行,input_file为上一步生成的文件。output_file为本次要生成的tflite文件。其他的为固定写法,如果你的模型输入不是300x300注意改input_shapes.执行完就能看到一个de文件,该文件大小17M多,这次量化后的模型。

float类型的模型转换方式:


生成float(未量化)的tflite

​如上生成de文件。

注意:在对比tflite和pb的一致性时,输入到tflite的图片需要进行(image-127.5)/128操作。否则模型输出结果和pb文件对不上。

这样pb文件和tflite预测的结果就能一样,不过float模型大小和pb文件差不多,而且量化的时候模型大小为0,不明白为什么量化的时候模型为量化成功原因,现在只能使用float类型的tflite

后续再讲其他转pb和tflite的方式以及验证方式。

喜欢的朋友和点击关注哦

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何调用pb模型预测一张图”边界阅读