Tensorflow Lite + Android + inceptionV3 实现 1k 类识别(没有 fine tuning)

介绍

Tensorflow Lite 是谷歌2017年底公布的新框架,基于Tensorflow的衍生。针对移动和嵌入式设备的轻量级解决方案。通过它,可以在移动设备上,实现小模型,低延迟的执行深度学习应用。

和 Tensorflow Mobile的区别

Tf发布的同时,也发布了 tf android 的应用例子。通过一系列复杂配置和编译后,可以生成静态库(.so),用过JNI的方式实现调用。这没有问题!
但是,针对没有深度学习基础的同学来说,针对只想通过深度学习得到的结果实现二次开发的码农来说,不但要掌握点深度学习的知识(确切点说,需要学习完成 deeplearning.ai 的60%的课程),还要敲敲tensorflow的代码(掌握通过tf 实现网络编程、训练、重训、执行),基于这种前提,运用起来还是比较恼火~

于是,Tensorflow Lite把这些都简单化了,可通过很简单的方式移植到我们已有的android 工程上,并进行二次开发。

TensorFlow lite Android Demo:

直接进入正题,先下载一个可使用的工程,解压,根据自己的开发环境,修改gradle等等,实现编译通过。

该工程,在加入CameraKit第三方库,实现图片的获取和显示,如需了解详情,请阅读此篇文章
针对图像处理的Android Fresh Project

这个工程通过拍摄单张图像,通过 mobilenet模型,识别出imagenet规定的1000类中的某记类。工程中,通过实现 Classsifer.java中的接口,同lite 的 api ,调用了模型,通过 mainactivity中调用api,实现分类识别;

运行后,可以在手机开到如下界面,包括预览图像,前后置摄像头切换和拍照按钮。当点击拍照按钮,可以看到当前图像的识别结果。

Tensorflow Lite ,用于调用model,实现深度学习的功能(目前的demo用于分类)

导入+配置方式

在gradle 加入以下脚本

android {
    aaptOptions {
        noCompress "tflite"
        noCompress "lite"
    }
}

dependencies {
。。。。。。
    compile 'org.tensorflow:tensorflow-lite:+'
。。。。。。
}

然后,继承Classifier.java 接口,用过 TensorflowImageClassifier.java实现方法。其中,使用 Tensorflow Lite 自带Api,实现傻瓜式调用,输入图片和类别文档,得到输出(一个一维数组)

调用前,需把分类的模型(.lite)放在了asset文件夹下把标签文件,放在asset文件夹下,识别结果为一维数组,通过概率最大的索引,在标签文件里找到相关类名。具体代码请参考 TensorflowImageClassifier.java

Notice
怎么把通过 tensorflow训练好并存储好的.pb模型,转换为.lite模型,请参考《Tensorflow 模型转换 .pb convert to .lite

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值