文档章节

TensorFlow,从一个 Android Demo 开始

孟飞阳
 孟飞阳
发布于 07/17 22:56
字数 1440
阅读 15
收藏 11

TensorFlow Android Demo 项目地址

Machine Learning

既然提到了 TensorFlow,那是不是得神经网络、机器学习了解下?

如果你能坚持把 机器学习速成课程 给啃完了,觉得还挺有兴趣的,那可以考虑更深入的展开。这份 机器学习速成课程 是 Google 特别为中国开发者提供的学习教程,这次就没理由再抱怨 GFW 阻碍了我们学习的步伐了。

但是,想要深入学习这块得花大功夫,虽说是速成教程,但对我而言,就算是前提条件其实也要挺多花时间才能达到吧。所以只能是简单地整理下相关基本概念,至少得对机器学习的一些概念和大致流程的有一定的了解。

机器学习的基本概念

简单归纳来说,机器学习分为两个阶段:

  1. 训练阶段:通过对有标签的样本数据进行训练得到合适的最佳模型

  2. 推测阶段:根据模型对无标签的样本数据进行推段得到结果(标签)

在对模型的进行训练的过程中,要考虑特征跟标签的关系推断所造成的误差,通过计算损失来反复调整计算参数来得到最佳模型。这个过程有很多方式进行,比如下图的机器学习算法训练过程用的是迭代试错方法:

迭代试错方法过程

想要自行设计训练一个全新的模型,对开发人员掌握的基础知识还是很多的,但是我们可以利用现有的开源模型,通过新的样本数据集来 retrain 一个属于自己的模型。

在具有一个合适的模型以后,就可以进入推断阶段了。比如可以考虑在 Android 平台上通过 TensorFlow 框架来实现对模型的实际应用。我们可以找到一个识别花朵类型的模型,然后就可以实现一个属于自己的拍照识花的应用了。想想是不是觉得还不错,赶紧干了这碗鸡汤。

步子迈太大不好,下面就从 Google 为我们提供的 TensorFlow Demo 开始,先了解一些实际的应用场景。

1. 下载 TensorFlow 源代码

git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git

使用 --recurse-submodules clone 项目是 Google 的建议,可以防止 protobuf 编译出现一些问题。

2. 安装 Bazel

Bazel 是 Google 开源的构建工具,Bazel 据说是数倍于 maven 的性能,快速的增量构建是它的特色,目前支持 java、cpp、Go 等语言。TensorFlow 项目的构建依赖于它来构建,更多关于 Bazel 的相关内容可以了解Bazel 官网

  1. 通过 Homebrew 安装 Bazel
brew install bazel
  1. 安装完成后验证是否能正常运行
bazel version
  1. 如果要检查版本更新
brew upgrade bazel

其他平台安装 Bazel 按照可参考:Installing Bazel

3. 设置 WORKSPACE 中 NDK 和 SDK 的路径配置

找到从 GitHub 下载的 TensorFlow 源码文件夹 tensorflow,修改 WORKSPACE 文件

找到 WORKSPACE 文件中 NDK 和 SDK 的配置部分,反注释掉原有代码后,按照版本要求填写自己本地环境配置。
注意:NDK 版本要设置为 14b ,如果选择 NDK 16 版本编译会出现未知问题!

# Uncomment and update the paths in these entries to build the Android demo.
android_sdk_repository(
     name = "androidsdk",
     api_level = 26,
     # Ensure that you have the build_tools_version below installed in the
     # SDK manager as it updates periodically.
     build_tools_version = "26.0.2",
     # Replace with path to Android SDK on your system
     path = "/Users/baishixian/Library/Android/sdk",
 )
#
android_ndk_repository(
    name="androidndk",
    path="/Users/baishixian/Library/Android/sdk/android-ndk-r14b",
    # This needs to be 14 or higher to compile TensorFlow.
    # Please specify API level to >= 21 to build for 64-bit
    # archtectures or the Android NDK will automatically select biggest
    # API level that it supports without notice.
    # Note that the NDK version is not the API level.
    api_level=25)

Google 对于此问题的相关说明:The Android NDK is required to build the native (C/C++) TensorFlow code. The current recommended version is 14b, which may be found here.
NDK 16, the revision released in November 2017, is incompatible with Bazel. See here.

4. 编译运行 example 项目

找到下载的 tensorflow 目录,其中 tensorflow/tensorflow/examples/android 路径下,是 Google 提供的 example 项目 for Android,我们可以通过编译运行该项目了解在 Android 平台上实现的几个典型的应用场景实力。

通过 Android Studio 进行编译

使用 Android Studio 找到对应的项目目录打开,修改 ndk 的环境配置后,点击编译运行即可。

通过命令行进行

通过命令行进入 tensorflow 目录,也就在 WORKSPACE 所在的项目根目录。

1. 编译项目

bazel build -c opt //tensorflow/examples/android:tensorflow_demo

2. 安装应用

adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk

具体可参照项目 GitHub 上的 doc for Android examples 文档。

这是我编译好的安装文件: TensorFlow Demo

运行效果

Demo

在使用 demo 过程中觉得这个实时分析相机图像数据帧来识别物品类别的演示效果挺不错的。

TensorFlower Classify

后面将利用这个已有的数据模型,从一个应用开发者的角度使用 TensorFlow 来构建一个简单的应用。

接下来请看我的另外一篇文章:基于现有 TensorFlow 模型构建 Android 应用



作者:石先
链接:https://www.jianshu.com/p/834bf90036c3
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

本文转载自:https://www.jianshu.com/p/834bf90036c3

共有 人打赏支持
孟飞阳
粉丝 206
博文 964
码字总数 543203
作品 5
朝阳
个人站长
如何使用 Android Things 和 TensorFlow 在物联网上应用机器学习

探索如何将 Android Things 与 Tensorflow 集成起来,以及如何应用机器学习到物联网系统上。学习如何在装有 Android Things 的树莓派上使用 Tensorflow 进行图片分类。 这个项目探索了如何将...

24%
08/01
0
0
TensorFlow in Android

首先说明以下,这只是把实践的过程叙述以下。 参考文章:在Android中借助TensorFlow使用机器学习(译) Android TensorFlow Machine Learning Example(科学上网你懂的 0、前言 环境 系统:D...

孟飞阳
07/15
0
0
TensorFlow Lite+Android,Google要搞的大事情

近日谷歌开源了TensorFlow的终端版本TensorFlow Lite,这个版本的发布其实早在预料之中,但又能从这件事看出未来谷歌整个生态版图的一些端倪,接下来就让博主为大家分析一下。 首先为什么说T...

gshengod
2017/11/16
0
0
有道云笔记是如何使用TensorFlow Lite的?

文 / 有道技术团队 近年来,有道技术团队在移动端实时 AI 能力的研究上,做了很多探索及应用的工作。2017 年 11 月 Google 发布 TensorFlow Lite (TFLlite) 后,有道技术团队第一时间跟进 TF...

谷歌开发者
04/21
0
0
机器学习Tensorflow笔记4:iOS通过Core ML使用Tensorflow训练模型

Tensorflow是Google推出的人工智能框架,而Core ML是苹果推出的人工智能框架,两者是有很大的区别,其中Tensorflow是包含了训练模型和评估模型,Core ML只支持在设备上评估模型,不能训练模型...

ImWiki
05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java日期和时间获取问题

获取年月日时分秒 Calendar cal = Calendar.getInstance();//获取年int year = cal.get(Calendar.YEAR);//获取月,范围是0-11,最后使用需+1int month = cal.get(Cal...

lanyu96
34分钟前
10
0
Ceph学习笔记2-在Kolla-Ansible中使用Ceph后端存储

环境说明 使用Kolla-Ansible请参考《使用Kolla-Ansible在CentOS 7单节点上部署OpenStack Pike》; 部署Ceph服务请参考《Ceph学习笔记1-Mimic版本多节点部署》。 配置Ceph 以osdev用户登录: ...

LastRitter
38分钟前
9
0
OSChina 周二乱弹 —— 老司机表示右手无处安放

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @花间小酌 :分享李宗盛的单曲《鬼迷心窍》--春风再美也比不上你的笑 《鬼迷心窍》 - 李宗盛 手机党少年们想听歌,请使劲儿戳(这里) 每天早...

小小编辑
50分钟前
403
5
复习2

10月22日任务 awk 中使用外部shell变量 awk 合并一个文件 把一个文件多行连接成一行 awk中gsub函数的使用 awk 截取指定多个域为一行 过滤两个或多个关键词 用awk生成以下结构文件 awk用print...

hhpuppy
58分钟前
5
0
原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
64
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部