文档章节

TensorFlow,从一个 Android Demo 开始

孟飞阳
 孟飞阳
发布于 07/17 22:56
字数 1440
阅读 9
收藏 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

共有 人打赏支持
孟飞阳
粉丝 204
博文 954
码字总数 540957
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python3.6 取整除法

python3.6 中取整除法运算逻辑如下: d 非零,那么商 q 满足这样的关系: a = qd + r ,且0 ≤ r n1=7//3#7 = 3*2 +1n2=-6.1//3#-7 = 3*(-3)+2'{},{}'.format(n1,n2) 从运行结果可以...

colinux
27分钟前
3
0
阶段总结——用虚拟机搭建一个高可用负载均衡集群架构

[toc] linux基本知识已经介绍完,现有一个业务需要操作,通过对这个项目的操作,可以复习、总结、巩固之前的知识点; ** 用13台虚拟机搭建一个高可用负载均衡集群架构出来,并运行三个站点,...

feng-01
30分钟前
0
0
mysql 设置utf8字符集 (CentOS)

1.查看数据库及mysql应用目前使用的编码方式 (1)链接mysql 客户端 (2)执行:status 结果: 2.修改mysql 应用的字符编码(server characterset ) (1)打开配置文件:vim /etc/mysql/my...

qimh
31分钟前
0
0
windows无法格式化u盘解决方法

1。点开始-运行-输入cmd-format f: /fs: fat32 (这里f:是指U盘所在盘符) 这个格式化会很慢 请耐心等待

大灰狼wow
42分钟前
0
0
MySql 8.0连接失败

原来,MySql 8.0.11 换了新的身份验证插件(caching_sha2_password), 原来的身份验证插件为(mysql_native_password)。而客户端工具Navicat Premium12 中找不到新的身份验证插件(caching_s...

放飞E梦想O
59分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部