下载最新的的tensorflow源码。

1.配置 tflite 文件转换所需环境

安装 bazel 编译工具

https://docs.bazel.build/versions/master/install.html

bazel build 出现问题:

图片来自https://github.com/tensorflow/tensorflow/issues/29053

解决方法:

在WORKSPACE中加入:

图片来自https://github.com/bazelbuild/rules_docker

利用 bazel 编译转换 tflite 所需的工具:

cd tensorflow-master/

bazel build tensorflow/python/tools:freeze_graph

bazel build tensorflow/lite/toco:toco

bazel build tensorflow/tools/graph_transforms:summarize_graph

2 tensorflow 模型固化,将 tensorflow 模型和计算图上变量的之合二为一。

利用 freeze_graph 工具,生成 tflite_graph.pb 文件(frozen的GraphDef文件)

cd /models-master/research/
python object_detection/export_tflite_ssd_graph.py
--pipeline_config_path=pipeline.config 路径 
--trained_checkpoint_prefix=model.ckpt 保存的模型文件路径 
--output_directory=model_graph 生成文件的路径 
--add_postprocessing_op=true

注:生成文件夹 model_graph: 存放着 tflite_graph.pb 和 tflite_graph.pbtxt 文件

3 通过 tf 的 summarize_graph 函数可视化冻结图节点的输入输出信息

cd /tensorflow-master/
bazel-bin/tensorflow/tools/graph_transforms/summarize_graph
--in_graph=tflite_graph.pb 文件frozen.pb的路径

4 通过toco工具生成tflite文件

cd /tensorfolw_master/tensorflow/lite/toco

浮点型文件:
toco --graph_def_file=$path/tflite_graph.pb   文件frozen.pb的路径
--input_format=TENSORFLOW_GRAPHDEF
--output_file=model.tflite 存放生成文件的路径 
--inference_type=FLOAT
--input_type=FLOAT
--input_arrays=normalized_input_image_tensor   #根据第3步的结果修改
--input_shapes=1,300,300,3                 #根据第3步的结果修改
--output_arrays='TFLite_Detection_PostProcess','TFLite_Detection_PostProcess:1', 'TFLite_Detection_PostProcess:2', 'TFLite_Detection_PostProcess:3'           #根据第3步的结果修改
--allow_custom_ops

量化型文件:
toco --graph_def_file=$path/tflite_graph.pb   文件frozen.pb的路径
--input_format=TENSORFLOW_GRAPHDEF
--output_file=model_quantized.tflite 存放生成文件的路径 
--inference_type=QUANTIZED_UINT8
--input_shapes=1,300,300,3            #根据第3步的结果修改
--input_arrays=normalized_input_image_tensor           #根据第3步的结果修改
--output_arrays='TFLite_Detection_PostProcess','TFLite_Detection_PostProcess:1', 'TFLite_Detection_PostProcess:2', 'TFLite_Detection_PostProcess:3'        #根据第3步的结果修改
--mean_values=128        
--std_dev_values=127
--default_ranges_min=0
--default_ranges_max=6              
--allow_custom_ops

最新文章

  1. Windows平台下PHP环境搭建
  2. yum常用命令
  3. MMORPG大型游戏设计与开发(客户端架构 part14 of vegine)
  4. 预处理语句--#define、#error和#warning
  5. jenkins配置记录(2)--代码发布流程
  6. 如何设置session过期时间为30分钟
  7. nginx ssi 配置小细节(一)
  8. 关于maven的一些常见用法
  9. HD1046An Easy Task
  10. $.ajax和vue-resource实现OAuth
  11. 201521123024《Java程序设计》第3周学习总结
  12. Spring之AOP实现面向切面编程
  13. github免密登陆
  14. Visual Studio 禁用诊断工具
  15. vim matchit 自定义配对关键字之间的跳转
  16. linux学习第十七天 (Linux就该这么学)
  17. web前端识别文字转语音
  18. ES6中export与export default的区别
  19. 【Codeforces 1132D】Stressful Training
  20. 用Java实现几种常见的排序算法

热门文章

  1. getFieldDecorator用法(二)——封装表单模块
  2. Oracle常用操作表结构的语句
  3. GetProp和SetProp的区别
  4. Mac卸载mysql数据库
  5. v-if与v-show的区别?
  6. linux挂载iscsi出现的问题
  7. Vue报错 Duplicate keys detected: '1'. This may cause an update error. vue报错
  8. SpringBoot: 16.整合junit单元测试(转)
  9. logstash输出至elasticsearch
  10. JQuery Validate - 自定义js验证