您的位置:首页 > 移动开发 > Android开发

使用TensorFlow Lite在Android手机上实现图像分类

2019-08-12 14:06 2231 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qionggaobi9328/article/details/99297473

按下列参考链接安装必要的环境和步骤(以第一个为主):
https://blog.csdn.net/qq_33200967/article/details/82773677
https://blog.csdn.net/aslily1234/article/details/84840885

转换模型关键步骤:把tensorflow保存的其他模型转换成tflite

1.在以下的链接下载模型:(最好在windows用迅雷下载)

tensorflow模型:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md
https://github.com/tensorflow/models/tree/master/research/slim#pre-trained-models

2.上面提供的模型同时也包括了tflite模型,我们可以直接拿来使用,但是我们也可以使用其他格式的模型来转换。比如我们下载一个mobilenet_v1_1.0_224.tgz,解压之后获得以下文件:

mobilenet_v1_1.0_224.ckpt.data-00000-of-00001  mobilenet_v1_1.0_224_eval.pbtxt  mobilenet_v1_1.0_224.tflite
mobilenet_v1_1.0_224.ckpt.index                mobilenet_v1_1.0_224_frozen.pb
mobilenet_v1_1.0_224.ckpt.meta                 mobilenet_v1_1.0_224_info.txt

3.冻结图:

./freeze_graph --input_graph=/mobilenet_v1_1.0_224/mobilenet_v1_1.0_224_frozen.pb \
--input_checkpoint=/mobilenet_v1_1.0_224/mobilenet_v1_1.0_224.ckpt \
--input_binary=true \
--output_graph=/tmp/frozen_mobilenet_v1_224.pb \
--output_node_names=MobilenetV1/Predictions/Reshape_1
  • input_graph对应的是.pb文件;
  • input_checkpoint对应的是mobilenet_v1_1.0_224.ckpt.data-00000-of-00001,但使用时去掉后缀;
  • output_node_names这个可以在mobilenet_v1_1.0_224_info.txt中获取。

不过要注意的是我们下载的模型已经是冻结过来,所以不用再执行这个操作。但如果是其他的模型,要先冻结图,然后再执行之后的操作。

4.把已经冻结的图转换成.tflite:

#将.pb文件转化为.tflite文件:
bazel run tensorflow/lite/toco:toco -- --input_file=/home/dj/dingjing/tensorflow_py3/Mobilenet/mobilenet_v1.0/mobilenet_v1_1.0_224_frozen.pb --input_format=TENSORFLOW_GRAPHDEF --output_format=TFLITE --output_file=/home/dj/dingjing/tensorflow_py3/Mobilenet/mobilenet_v1.0/mobilenet_v1_1.0_224.tflite --inference_type=FLOAT --input_type=FLOAT --input_arrays=input --output_arrays=MobilenetV1/Predictions/Reshape_1 --input_shapes=1,224,224,3
  • input_file是已经冻结的图;
  • output_file是转换后输出的路径;
  • output_arrays这个可以在mobilenet_v1_1.0_224_info.txt中获取;
  • input_shapes这个是预测数据的shape

5.成功:

经过上面的步骤就可以获取到mobilenet_v1_1.0_224.tflite模型了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐