下载最新的的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

tensorflow lite 之生成 tflite 模型文件的更多相关文章

  1. 转 Django根据现有数据库,自动生成models模型文件

    Django引入外部数据库还是比较方便的,步骤如下 : 创建一个项目,修改seting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致 运行下面代码可以自 ...

  2. python学习-- Django根据现有数据库,自动生成models模型文件

    Django引入外部数据库还是比较方便的,步骤如下 : 创建一个项目,修改seting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致 运行下面代码可以自 ...

  3. Tensorflow Lite tflite模型的生成与导入

    假如想要在ARM板上用tensorflow lite,那么意味着必须要把PC上的模型生成tflite文件,然后在ARM上导入这个tflite文件,通过解析这个文件来进行计算. 根据前面所说,tenso ...

  4. 移动端目标识别(2)——使用TENSORFLOW LITE将TENSORFLOW模型部署到移动端(SSD)之TF Lite Developer Guide

    TF Lite开发人员指南 目录: 1 选择一个模型 使用一个预训练模型 使用自己的数据集重新训练inception-V3,MovileNet 训练自己的模型 2 转换模型格式 转换tf.GraphD ...

  5. 移动端目标识别(1)——使用TensorFlow Lite将tensorflow模型部署到移动端(ssd)之TensorFlow Lite简介

    平时工作就是做深度学习,但是深度学习没有落地就是比较虚,目前在移动端或嵌入式端应用的比较实际,也了解到目前主要有 caffe2,腾讯ncnn,tensorflow,因为工作用tensorflow比较多 ...

  6. TensorFlow Lite demo——就是为嵌入式设备而存在的,底层调用NDK神经网络API,注意其使用的tf model需要转换下,同时提供java和C++ API,无法使用tflite的见后

    Introduction to TensorFlow Lite TensorFlow Lite is TensorFlow’s lightweight solution for mobile and ...

  7. AoE 搭档 TensorFlow Lite ,让终端侧 AI 开发变得更加简单。

    AoE( AI on Edge , https://github.com/didi/AoE ) 是滴滴近期开源的终端侧 AI 集成运行时环境 ( IRE ). 随着人工智能技术快速发展,近几年涌现出了 ...

  8. TensorFlow Lite for Android示例

    一.TensorFlow  Lite TensorFlow Lite 是用于移动设备和嵌入式设备的轻量级解决方案.TensorFlow Lite 支持 Android.iOS 甚至树莓派等多种平台. ...

  9. EF自动生成的模型edmx代码分析

    edmx代码分析 本文分析Entity Framework从数据库自动生成的模型文件代码(扩展名为edmx). 1. 概述 本文使用的数据库结构尽量简单,只有2个表,一个用户表和一个分公司表(相当于部 ...

随机推荐

  1. 和证书相关的文件格式: Pem, Pfx, Der

    Pem Pem是最常见的证书文件格式.常见文件扩展名为.pem. 其文件内容采用如下格式: -----BEGIN CERTIFICATE----- Base64编码的证书内容-----END CERT ...

  2. mysql 查询整个数据库所有表的行数

    >use information_schema; >select sum(table_rows) from tables where TABLE_SCHEMA = "test&q ...

  3. 【学习笔记】OI模板整理

    CSP2019前夕整理一下模板,顺便供之后使用 0. 非算法内容 0.1. 读入优化 描述: 使用getchar()实现的读入优化. 代码: inline int read() { int x=0; ...

  4. vue 图片上传

    功能说明: 1.调用手机拍照功能 2.调用相册功能 3.图片上传功能 4.图片预览功能 5.图片删除功能 关键点: .input 新增multiple .accept="image/*处理I ...

  5. java基础篇之Object类

    1.Object类是所有类的超类 2.Object类的equals方法 public boolean equals(Object obj) {return (this == obj);} equals ...

  6. IDEA 重复代码快速重构(抽取重复代码快捷键)

    Ctrl+Alt+M 顺带一提,eclipse的快捷键是:Alt+Shift+M;

  7. Cesium入门-3-官方完整实例

    实例核心代码 //资源访问令牌 Cesium token Cesium.Ion.defaultAccessToken='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ ...

  8. 数据库与linux中quota的作用

    linux命令,quota 命令显示磁盘使用情况和限额.缺省情况下,或者带 -u 标志,只显示用户限额.quota 命令报告 /etc/filesystems 文件中列出的所有文件系统的限额.如果 q ...

  9. mySQL 插入,更新和删除数据

    插入数据: 语法: INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); 如 ...

  10. 使用极路由进行外网映射,本地电脑做服务器,运行javaWeb项目

    最近在学习javaWeb,一个项目需要android访问服务器,于是使用自己的笔记本电脑作为服务器,需要进行端口映射.使得外网可以访问自己的javaWeb项目或者网站之类的.普通路由请看:http:/ ...