Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[译]Android TensorFlow机器学习示例

[译]Android TensorFlow机器学习示例

作者头像
MelonTeam
发布于 2018-01-04 03:56:29
发布于 2018-01-04 03:56:29
92600
代码可运行
举报
文章被收录于专栏:MelonTeam专栏MelonTeam专栏
运行总次数:0
代码可运行

原文地址:<https://blog.mindorks.com/android-tensorflow-machine-learning-example- ff0e9b2654cc>

机器学习:将Tensorflow集成到Android中

众所周知,Google已经开放了一个名为TensorFlow的开源软件库,可以在Android中应用于机器学习

我在网上搜索了很多,但没有找到一个简单的方法或一个简单的例子来构建TensorFlow for Android。自己尝试了很久才构建好。于是我决定写下来,以节省他人时间。

分类器示例来自于Google TensorFlow示例。

本文适用于那些已经熟悉机器学习的人,并且了解如何使用机器学习的构建模型(本例中我将使用 pre-trained 的模型)。很快,我会写一系列关于机器学习的文章,以便每个人都可以学习如何建立机器学习模型。

1.Android的构建过程

几个重要的点,我们应该知道:

  • TensorFlow的核是用c ++编写的。
  • 为了构建android,我们必须使用JNI(Java Native Interface)来调用像LoadModel,getPredictions等c ++函数。
  • 我们将有一个.so(共享对象)文件,它是一个c ++编译的文件和一个jar文件,由一些调用native c ++的JAVA API组成。然后,我们将调用JAVA API来轻松完成任务。
  • 所以,我们需要jar(Java API)和.so(c ++编译)文件。
  • 我们必须具有pre-trained 的模型文件和分类的标签文件。

下图就是我们将要构建的一个物体识别程序。

2.构建jar和.so文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone --recurse-submodules   <https://github.com/tensorflow/tensorflow.git>

注意:--recurse-submodules拉取submodules

这里下载NDK。

下载Android SDK,或者我们可以提供Android Studio SDK的路径。

这里安装Bazel。Bazel是TensorFlow的主要构建系统。

现在,编辑WORKSPACE文件,我们可以在之前克隆的TensorFlow的根目录中找到WORKSPACE文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Uncomment and update the paths in these entries to build the Android demo.  
#android_sdk_repository(  
#    name = "androidsdk",  
#    api_level = 23,  
#    build_tools_version = "25.0.1",  
#    # Replace with path to Android SDK on your system  
#    path = "",  
#)  
#  
#android_ndk_repository(  
#    name="androidndk",  
#    path="",  
#    api_level=14)

这样设置sdk和ndk路径:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
android_sdk_repository(  
    name = "androidsdk",  
    api_level = 23,  
    build_tools_version = "25.0.1",  
    # Replace with path to Android SDK on your system  
    path = "/Users/amitshekhar/Library/Android/sdk/",  
)


android_ndk_repository(  
    name="androidndk",  
    path="/Users/amitshekhar/Downloads/android-ndk-r13/",  
    api_level=14)

然后构建.so文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bazel build -c opt //tensorflow/contrib/android:libtensorflow_inference.so \   
   --crosstool_top = // external:android / crosstool \   
   --host_crosstool_top = [@bazel_tools](http://twitter.com/bazel_tools "@bazel_tools的Twitter个人资料" ) // tools / cpp:toolchain \   
   --cpu = armeabi-v7a

替换我们所需的armeabi-v7a。

构建玩之后Tensorflow的库将位于:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bazel-bin/tensorflow/contrib/android/libtensorflow_inference.so

构建Jar文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bazel build // tensorflow / contrib / android:android_tensorflow_inference_java

我们可以在以下位置找到JAR文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bazel-bin/tensorflow/contrib/android/libandroid_tensorflow_inference_java.jar

现在我们有jar和.so文件。我已经构建了.so文件和jar,可以直接从下面的项目中使用。

我创建了一个完整的运行示例应用程序在这里

3.训练模型

我们需要预训练的模型和标签文件。

在这个例子中,我们将使用Google预训练的模型,该模型在给定图像上进行对象检测。

我们可以从[这里](

解压缩这个zip文件,我们将获得imagenet_comp_graph_label_strings.txt(对象的标签)和tensorflow_inception_graph.pb(预训练的模型)。

现在,在Android Studio中创建一个Android示例项目。

将imagenet_comp_graph_label_strings.txt和tensorflow_inception_graph.pb放入Assets文件夹。

将libandroid_tensorflow_inference_java.jar放在libs文件夹中,右键单击并添加为库。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
compile files('libs/libandroid_tensorflow_inference_java.jar')

在主目录中创建jniLibs文件夹,并将libtensorflow_inference.so放在jniLibs / armeabi-v7a /文件夹中。

现在,我们可以通过一个类TensorFlowInferenceInterface,调用TensorFlow Java API。

然后,我们可以输入图像来获得检测的结果。

感兴趣的可以直接克隆项目,构建和运行,试试吧。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
机器学习:如何在安卓上集成TensorFlow
授权转自THU数据派 作者:Amit Shekhar 翻译:梁傅淇 王军福 校对:李君 原文链接:https://blog.mindorks.com/android-tensorflow-machine-learning-example-ff0e9b2654cc#.aoq0izsg6 我们都知道,谷歌有一个开源库叫做TensorFlow,可被用在安卓系统中实现机器学习。换言之,TensorFlow是谷歌为机器智能提供的一个开源软件库。 我在网络上搜寻了很久,都没有找到在安卓上搭建TensorFlow的简单
大数据文摘
2018/05/21
1.4K0
重磅实战:如何用TensorFlow在安卓设备上实现深度学习,附Demo和源码
对于个人和公司来说,存在许多状况是更希望在本地设备上做深度学习推断的:想象一下当你在旅行途中没有可靠的互联网链接时,或是要处理传输数据到云服务的隐私问题和延迟问题时。
Anymarvel
2018/10/22
2.4K0
重磅实战:如何用TensorFlow在安卓设备上实现深度学习,附Demo和源码
教程 | 如何用TensorFlow在安卓设备上实现深度学习推断
选自DataScience 作者:Chia-Chun 机器之心编译 参与:Edison Ke、路雪 本文作者 Chia-Chun (JJ) Fu 是加州大学圣塔芭芭拉分校的化学工程博士。她在 Insight 工作的时候,在安卓系统上用 TensorFlow 部署了一个 WaveNet 模型。本文详细介绍了部署和实现过程。 对于个人和公司来说,存在许多状况是更希望在本地设备上做深度学习推断的:想象一下当你在旅行途中没有可靠的互联网链接时,或是要处理传输数据到云服务的隐私问题和延迟问题时。边缘计算(Edge c
机器之心
2018/05/10
1.9K0
学习笔记TF066 : TensorFlow 移动端应用,iOS、Android系统实践
TensorFlow对Android、iOS、树莓派都提供移动端支持。 移动端应用原理。移动端、嵌入式设备应用深度学习方式,一模型运行在云端服务器,向服务器发送请求,接收服务器响应;二在本地运行模型,
利炳根
2017/11/14
3.2K0
将 TensorFlow 训练好的模型迁移到 Android APP上(TensorFlowLite)
最近在做一个数字手势识别的APP(关于这个项目,我会再写一篇博客仔细介绍,博客地址:一步步做一个数字手势识别APP,源代码已经开源在github上,地址:Chinese-number-gestures-recognition),要把在PC端训练好的模型放到Android APP上,调研了下,谷歌发布了TensorFlow Lite可以把TensorFlow训练好的模型迁移到Android APP上,百度也发布了移动端深度学习框架mobile-deep-learning(MDL),这个框架应该是paddlepaddle的手机版,具体的细节没有了解过。因为对TensorFlow稍微熟悉些,因此就决定用TensorFlow来做。
AI研习社
2018/08/06
2.1K0
将 TensorFlow 训练好的模型迁移到 Android APP上(TensorFlowLite)
Mediapipe框架在Android上的使用
MediaPipe是用于构建跨平台多模态应用ML管道的框架,其包括快速ML推理,经典计算机视觉和媒体内容处理(如视频解码)。下面是用于对象检测与追踪的MediaPipe示例图,它由4个计算节点组成:PacketResampler计算器;先前发布的ObjectDetection子图;围绕上述BoxTrakcing子图的ObjectTracking子图;以及绘制可视化效果的Renderer子图。
夜雨飘零
2020/07/08
9.9K3
Mediapipe框架在Android上的使用
TensorFlow:使用Cloud TPU在30分钟内训练出实时移动对象检测器
是否能够更快地训练和提供对象检测模型?我们已经听到了这种的反馈,在今天我们很高兴地宣布支持训练Cloud TPU上的对象检测模型,模型量化以及并添加了包括RetinaNet和MobileNet改编的RetinaNet在内的新模型。本文将引导你使用迁移学习在Cloud TPU上训练量化的宠物品种检测器。
AiTechYun
2018/07/27
4.1K0
TensorFlow:使用Cloud TPU在30分钟内训练出实时移动对象检测器
Building TensorFlow on Android(译)
本篇文章翻译自tensorflow官网,会加上自己的一些实操讲解,便于大家快速运行起第一个移动端机器学习的demo。 为了让你在Android上开始使用tensorflow,我们将通过两种方式来构建我
巫山老妖
2018/07/20
9410
【Ubuntu】Tensorflow对训练后的模型做8位(uint8)量化转换
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
superhua
2019/10/22
1.8K0
【Ubuntu】Tensorflow对训练后的模型做8位(uint8)量化转换
编译tensorflow-lite-with-select-tf-ops遇到的坑
官方没有直接给出AAR,而是让自己用巴泽尔去编译一个,实在是有点坑啊。
vell001
2018/12/28
5.8K0
编译tensorflow-lite-with-select-tf-ops遇到的坑
Tensorflow c++ 实践及各种坑
曾子骄
2017/10/13
7.1K12
Tensorflow c++ 实践及各种坑
TensorFlow 智能移动项目:1~5
本章介绍如何设置开发环境,以使用 TensorFlow 构建所有 iOS 或 Android 应用,本书其余部分对此进行了讨论。 我们不会详细讨论可用于开发的所有受支持的 TensorFlow 版本,OS 版本,Xcode 和 Android Studio 版本,因为可以在 TensorFlow 网站或通过 Google。 相反,我们将在本章中简要讨论示例工作环境,以便我们能够快速了解​​可使用该环境构建的所有出色应用。
ApacheCN_飞龙
2023/04/24
4.6K0
opencv集成opencv_contrib编译生成Android工程
在项目的主目录下./build.gradle替换build tools,使用gradle-experimental,如下
jerrypxiao
2021/02/22
2.6K0
opencv集成opencv_contrib编译生成Android工程
ensorFlow 智能移动项目:6~10
如果图像分类和物体检测是明智的任务,那么用自然语言描述图像绝对是一项更具挑战性的任务,需要更多的智能-请片刻考虑一下每个人如何从新生儿成长(他们学会了识别物体并检测它们的位置)到三岁的孩子(他们学会讲述图片故事)。 用自然语言描述图像的任务的正式术语是图像标题。 与具有长期研究和发展历史的语音识别不同,图像字幕(具有完整的自然语言,而不仅仅是关键词输出)由于其复杂性和 2012 年的深度学习突破而仅经历了短暂而令人兴奋的研究历史。
ApacheCN_飞龙
2023/04/24
1.8K0
Assimp Android 编译
Assimp的全称是Open Asset Import Library,一个很流行的OpenGL 3D+4D 模型处理框架。提供C/C++的API,提供C#, Java, Python, Delphi, D等语言的封装调用。支持Android和iOS平台。本文详细介绍如何编译适用于Android平台的.so库,并记录过程中踩到的坑。 准备知识 将一个C++的工程编译成Android平台可用的.so库,需要用到一些额外的工具。在开始之前,最好先了解下相关的知识点。 make与makefile 我们在处理
wxdut.com
2018/06/19
2.5K0
在Android手机上使用MACE实现图像分类
在之前笔者有介绍过《在Android设备上使用PaddleMobile实现图像分类》,使用的框架是百度开源的PaddleMobile。在本章中,笔者将会介绍使用小米的开源手机深度学习框架MACE来实现在Android手机实现图像分类。
夜雨飘零
2020/05/06
1.5K0
CentOS7安装Android SDK
安装Android SDK时,可以提前到官网上查看可用下载的 SDK版本 (opens new window),版本信息如下截图
章工运维
2023/05/19
9830
CentOS7安装Android SDK
Android NDK Makefile相关与示例
Android Studio 3之前,需要编写Android.mk和Application.mk文件。
AnRFDev
2021/02/01
8540
TensorFlow 1.x 深度学习秘籍:6~10
在本章中,我们将讨论循环神经网络(RNN)如何在保持顺序顺序重要的领域中用于深度学习。 我们的注意力将主要集中在文本分析和自然语言处理(NLP)上,但我们还将看到用于预测比特币价值的序列示例。
ApacheCN_飞龙
2023/04/23
9650
TensorFlow 1.x 深度学习秘籍:6~10
TRTC Android端开发接入学习之环境快速搭建(三)
通过前面对TRTC的基本了解,本期我们开始尝试使用SDK在本地搭建开发环境,同时说明SDK的基本用法
腾讯云-hongyang
2020/09/01
1.1K0
TRTC Android端开发接入学习之环境快速搭建(三)
推荐阅读
相关推荐
机器学习:如何在安卓上集成TensorFlow
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档