tflite生成android,深度学习应用系列(三)| 使用 TFLite Android构建自己的图像识别App...

深度学习要想落地实践,一个少不了的路径即是朝着智能终端、嵌入式设备等方向发展。但终端设备没有GPU服务器那样的强大性能,那如何使得终端设备应用上深度学习呢?

所幸谷歌已经推出了TFMobile,去年又更进一步,推出了TFLite,其应用思路为在GPU服务器上利用迁移学习训练自己的模型,然后将定制化模型移植到TFLite上,

终端设备仅利用模型做前向推理,预测结果。本文基于以下三篇文章而成:

相信大家掌握后,也能轻松定制化自己的图像识别应用。

第一步. 准备数据

这是一个关于花分类的图片集合,下载解压后,可以看出有5个品种分类:daisy(雏菊)、dandelion(蒲公英)、rose(玫瑰)、sunflower(向日葵)、tulip(郁金香)。

我们的目的即是通过重新训练预编译模型,得到一个花类识别的模型。

第二步. 重新训练

1. 挑选预编译模型

从上述“谷歌提供的预编译模型”列表中,我们大体可以看出分为两类模型,一种是Float Models(浮点数模型),一种是Quantized Models(量化模型),什么区别呢?

其实Float Models表示为一种高精度值的模型,该模型意味着模型size较大,识别精度更高、识别时长更长,适合高性能终端设备;而Quantized Models则反之,是低精度值的模型,其精度采取固定的8位大小,故其模型size较小,识别精度低、识别时长较短,适合低性能终端设备,更细的说明可以参见 https://www.tensorflow.org/performance/quantization  。

我们的手机设备更新换代很快,一般可以使用Float Models。在这个模型下,有不少预编译模型可选,对于本文来说,主要集中为Inception 和Mobilenet两种架构。

注意Mobilenet其实也分为很多种类,如Mobilenet_V1_0.50_224,其中第三个参数为模型大小比例值(只能算是近似,不准确),分为0.25/0.50/0.75/1.0四个比例值,第四个参数为图片大小,其值有128/160/192/224四种值。

有兴趣想观察各模型层次结构的可通过以下代码查看:

import tensorflow as tfimport tensorflow.gfile as gfile

MODEL_PATH = '/home/yourname/Documents/mobilenet_v1_1.0_224/frozen_graph.pb'def main(unusedArgv):

with tf.Graph().as_default() as graph:

with gfile.FastGFile(MODEL_PATH, 'rb') as f:

graph_def = tf.GraphDef()

graph_def.ParseFromString(f.read())

tf.import_graph_def(graph_def, name='')    for op in graph.get_operations():        for tensor in op.values():      

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值