首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用image_ocr tensorflow模型在Android上使用Keras示例

使用image_ocr tensorflow模型在Android上使用Keras示例
EN

Stack Overflow用户
提问于 2017-05-17 06:52:11
回答 1查看 761关注 0票数 1

我正在努力弄清楚如何通过在安卓系统上培训Keras中的ocr示例来使用tensorflow模型。我遵循本教程创建了一个tensorflow模型(即将图形冻结到creata,一个.pb文件),以供应用程序使用。

TFDroid中的示例非常好,但它们似乎都不适用于我的模型。我现在有几个问题:

  1. 当你打算在Android上使用你自己的模型时,需要考虑的是什么?
  2. 从培训tensorflow模型到在Android上使用它的工作流是什么?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-23 19:50:03

关于这一点,我正在编写更好的文档,但就目前而言,以下是我当前草稿的摘录,可能会有所帮助:

在大多数情况下,使用TensorFlow对模型进行培训将为您提供一个包含GraphDef文件(通常以.pb或.pbtxt扩展名结尾)和一组检查点文件的文件夹。移动部署或嵌入式部署所需要的是一个“冻结”的GraphDef文件,或者将其变量转换为内联常量,因此所有内容都在一个文件中。要处理转换,您需要freeze_graph.py脚本,该脚本保存在tensorflow/pythons/tools/freeze_graph.py中。你会这样运行:

代码语言:javascript
复制
bazel build tensorflow/tools:freeze_graph
bazel-bin/tensorflow/tools/freeze_graph \
--input_graph=/tmp/model/my_graph.pb \ --input_checkpoint=/tmp/model/model.ckpt-1000 \ --output_graph=/tmp/frozen_graph.pb \
--input_node_names=input_node \
--output_node_names=output_node \

input_graph参数应该指向保存模型体系结构的GraphDef文件。您的GraphDef可能已经以文本格式存储在磁盘上,在这种情况下,它可能以‘.pbtxt’而不是‘..pb’结尾,您应该在命令中添加一个额外的--input_binary=false标志。

input_checkpoint应该是最近保存的检查点。正如检查点部分所提到的,您需要在这里为检查点集提供公共前缀,而不是一个完整的文件名。

output_graph定义了结果被冻结的GraphDef将被保存的位置。因为它可能包含大量以文本格式占用大量空间的权重值,所以它总是保存为二进制原型。output_node_names是要从图中提取结果的节点名称的列表。这是必要的,因为冻结过程需要理解图的哪些部分是实际需要的,哪些是训练过程的工件,比如汇总操作。只保留有助于计算给定输出节点的操作操作。如果您知道如何使用您的图形,这些应该只是传递到会话的节点的名称::Run()作为您的获取目标。如果您手头没有这些信息,可以通过运行summarize_graph工具获得一些关于可能的输出的建议。

因为随着时间的推移,TensorFlow的输出格式发生了变化,还有许多其他不太常用的标志可用,比如input_saver,但是希望您不应该在使用现代框架版本的图形上使用这些标志。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44017591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档