资讯专栏INFORMATION COLUMN

机器学习:如何在安卓上集成TensorFlow

linkin / 3082人阅读

摘要:我们都知道,谷歌有一个开源库叫做,可被用在安卓系统中实现机器学习。近期,我会写一系列关于机器学习的文章,这样每个人都能够学到如何为机器学习搭建模型。现在,在上创建安卓示例工程吧。

我们都知道,谷歌有一个开源库叫做TensorFlow,可被用在安卓系统中实现机器学习。换言之,TensorFlow是谷歌为机器智能提供的一个开源软件库。

我在网络上搜寻了很久,都没有找到在安卓上搭建TensorFlow的简单的方法或实例。仔细查阅许多资料以后,我终于可以搭建它了。于是,我决定把我搭建的过程写出来,这样其他人就不必再浪费时间了。

这篇文章是写给那些熟悉机器学习并且知道怎样为机器学习搭建模型的人的(在这个示例中我会使用一个预训练模型)。近期,我会写一系列关于机器学习的文章,这样每个人都能够学到如何为机器学习搭建模型。

从搭建安卓上的机器学习模型过程讲起

我们需要知道的几个要点:

TensorFlow的核心是用C++编写的;

为了在安卓上搭建TensorFlow,我们需要用JNI(Java本地接口)来调用C++函数,比如说loadModel,getPredictions,等等;

我们会用到.so(shared object,即共享对象)文件,它是C++编译文件;还会用到jar文件,它由能够调用本地C++的Java API组成。之后,我们就可以调用Java API轻松地把事情做好;

所以我们需要jar(Java API)和一个.so(C++编译)文件;

我们必须要有一个预训练模型文件和一个用于分类的标签文件。

我们会做以下的目标检测:

编译jar和.so文件

注意:--recurse-submodules对于提取子模块(pull submodules)很重要。

在这里(https://developer.android.com/ndk/downloads/older_releases.html#ndk-12b-downloads)下载NDK。

下载安卓SDK,或者,我们也可以从Android Studio SDK提供路径。

安装Bazel(https://bazel.build/versions/master/docs/install.html)。Bazel是TensorFlow的主要编译系统。

现在,编辑工作空间(WORKSPACE),我们可以在早先克隆的TesnsorFlow根路径中找到工作空间(WORKSPACE)文件。

现在我们有了jar和.so文件。你也可以从下面的工程中直接提取使用我已经建立好的.so文件和jar。

我已经在这里(https://github.com/MindorksOpenSource/AndroidTensorFlowMachineLearningExample)创建了一个完整可运行的示例应用。

但是,我们需要预训练模型和标签文件。

在这个例子中,我们会使用Google预训练模型,它实现了在一张给定的照片上做目标检测。

解压缩zip文件,我们就会得到imagenet_comp_graph_label.strings.txt(目标标签)以及tensorflow_inception_graph.pb(预训练模型)。

现在,在Android Studio上创建安卓示例工程吧。

将imagenet_comp_graph_label.strings.txt(目标标签)以及tensorflow_inception_graph.pb放进assets文件夹。

将libandroid_tensorflow_inference_java.jar放进lib文件夹,单击右键,添加库。

读者问答

Q:我很疑惑要怎么连接到‘so’库?也没有任何一行像’System.loadLibray’的代码?

A:System.loadLibrary已经写在TensorFlow jar中了。

Q:所以这是一个C++应用还是Java应用啊?你用的是什么语言?

A:这是一个用Java语言编写的安卓应用,它通过Java本地接口(JNI: Java Native Interface)调用C++做预测(机器学习)。

欢迎加入本站公开兴趣群

商业智能与数据分析群

兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识

QQ群:81035754

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/4542.html

相关文章

  • TensorFlow-dev-summit:那些TensorFlow上好玩的和黑科技

    摘要:现场宣布全球领先的深度学习开源框架正式对外发布版本,并保证的本次发布版本的接口满足生产环境稳定性要求。有趣的应用案例皮肤癌图像分类皮肤癌在全世界范围内影响深远,患病人数众多,严重威胁身体机能。 前言本文属于介绍性文章,其中会介绍许多TensorFlow的新feature和summit上介绍的一些有意思的案例,文章比较长,可能会花费30分钟到一个小时Google于2017年2月16日(北京时间...

    BLUE 评论0 收藏0
  • SegmentFault 技术周刊 Vol.22 - 进击的 Google I/O 2017

    摘要:谷歌表示,与搜索并列,是谷歌机器学习技术最重要的产品服务载体。谷歌宣布了基于机器学习技术的全面升级,很可能是其诞生以来的最大升级。在去年的大会上,谷歌宣布了其第一代。 showImg(https://segmentfault.com/img/bVNTKT?w=900&h=385); Google I/O Google I/O 是由 Google 举行的网络开发者年会,讨论的焦点是用 G...

    darkbaby123 评论0 收藏0
  • SegmentFault 技术周刊 Vol.22 - 进击的 Google I/O 2017

    摘要:谷歌表示,与搜索并列,是谷歌机器学习技术最重要的产品服务载体。谷歌宣布了基于机器学习技术的全面升级,很可能是其诞生以来的最大升级。在去年的大会上,谷歌宣布了其第一代。 showImg(https://segmentfault.com/img/bVNTKT?w=900&h=385); Google I/O Google I/O 是由 Google 举行的网络开发者年会,讨论的焦点是用 G...

    XboxYan 评论0 收藏0
  • SegmentFault 技术周刊 Vol.22 - 进击的 Google I/O 2017

    摘要:谷歌表示,与搜索并列,是谷歌机器学习技术最重要的产品服务载体。谷歌宣布了基于机器学习技术的全面升级,很可能是其诞生以来的最大升级。在去年的大会上,谷歌宣布了其第一代。 showImg(https://segmentfault.com/img/bVNTKT?w=900&h=385); Google I/O Google I/O 是由 Google 举行的网络开发者年会,讨论的焦点是用 G...

    qqlcbb 评论0 收藏0
  • 分享 | 撞坏遥控车后,有个技术大牛爸爸是种怎样的体验

    摘要:在我已经制作完成一辆可以运行的遥控车时,公司发布了一个自驾车项目,来展示自动驾驶汽车的工作原理。需要注意的是,这里用的都是语言而非,其主要原因有两个一方面,近来似乎已成为运用机器学习技术时实际使用的语言。 最近,Mapbox 的 Android 工程师 Antonio 使用计算机视觉和机器学习技术,为他的女儿 Violeta 重新制作了一台遥控车。接下来我们看看 Antonio 是如何...

    ConardLi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<