Code前端首页关于Code前端联系我们

TensorFlow:敲开移动机器学习产业化之门

terry 2年前 (2023-09-27) 阅读数 76 #数据结构与算法

TensorFlow:敲响移动端机器学习工业化的大门

人工智能和机器学习已经走进我们的日常生活,尤其是与我们的生活密切相关的日益流行的大数据。人工智能和数据挖掘的人在别人眼里显得很高大上,总感觉遥不可及。在我们公司,我们经常听到数据科学部门的同事提到机器学习、数据挖掘等词。但这些术语真的和我们的移动开发没有直接关系吗?
作为一名移动开发者,这些表述不断地狠狠地打击着我脆弱的心。机器学习和深度学习什么时候才能应用到移动终端,敲开移动机器学习产业化的大门?

想象一下,有一天你发现自己处于一个完全未知的环境中,周围都是未知的事物,但你iPhone上运行的APP却很了解这个环境。您所需要做的就是打开这个应用程序并输入您需要的内容。如果你知道一些你知道的事情,iPhone就会告诉你,你将不再有未知的事情。世界就在你眼前!

如下图:

TensorFlow:敲响移动端机器学习工业化的大门

以上物体的识别准确率相当不错,键盘(概率49%)、鼠标(概率46%)和水杯(概率24%)基本都能识别。

但是某些东西的识别准确率并不理想,如下图:

TensorFlow:敲响移动端机器学习工业化的大门

手机 8 被识别为 iPod(59% 概率),但 iPod 未被识别(10% 概率)。 。想来,iPhone 8大概是最烂的了,价格直接降了好几个档次。

TensorFlow:敲响移动端机器学习工业化的大门

上面的例子来自官方的TensorFlow iOS demo。我们暂时不会评论 TensorFlow 识别的准确性。他还只是年轻,但光是他的识别能力就给机器学习在移动终端上的应用带来了无限可能。 。

1。 TensorFlow(简称TF)

去年,谷歌首席系统专家Jeff Dean在湾区机器学习大会上隆重介绍了他的第二代深度学习系统TensorFlow。一时间,网络上出现了大量关于TensorFlow的文章。揭秘 TensorFlow:Google 开源到底是什么? 、谷歌开源TensorFlow系统,背后有何秘密? 、如何评价谷歌发布的第二代TensorFlow深度学习系统?和其他文章。 TensorFlow燎原之火正在燃烧并蔓延。截至撰写本文时,其在 GitHub 上的开源库也是 star:27550,fork:11054。???? ???? ???? ???? ??????

不负众望,Google一直声称TensorFlow具有非常好的平台可移植性,终于在2016年6月27日发布了0.9版本,宣布支持移动设备。 TensorFlow v0.9 现已推出,改进了移动支持(有墙吗???),并且还提供了移动演示。以编码为生的程序员也可以在以大数据处理为主的 TalkingData 测试自己的技能。过了一会儿,我下载了TensorFlow源码,查看了编译向导,就开始跳来跳去填坑,这也导致了这篇简陋的文章。

如果您熟悉Python编程、网络爬虫、机器学习、数据挖掘、网页开发、人工智能和聊天经验交流。如有兴趣,请拨打519970686。集团将不定期扩大免费咨询热线。这些信息是从各种技术网站收集和编译的。如果你有好的教材可以私信给我,我会注明出处。然后分享给大家。

2。从TensorFlow到iOS静态库

在iOS平台上使用TensorFlow时,TensorFlow还提供了详细的编译脚本命令。详细请参见官方命令文档。

第一步。准备工具

想要做好工作,先要锋利工具。在开始编译工作之前,需要准备一些编译所必需的工具:

Homebrew:Mac os x 的包管理工具

$ /usr/bin/ruby -e ``"$(curl -fsSL [https://raw.githubusercontent.com/Homebrew/install/master/install](https://raw.githubusercontent.com/Homebrew/install/master/install))"

安装完 Homebrew 后,一一安装三个辅助编译工具:

$ brew  install libtool   

$ brew  install autoconf   

$ brew  install automake

第 2 步。克隆 TensorFlow

Google 在 Apache 2.0 开源协议下在 GitHub 上开源了 TensorFlow,我们可以直接使用 TensorFlow 源代码。

将项目克隆到您想要存储 TensorFlow 源代码的任何位置(建议不要放在桌面上。_)。


$ git clone [https://github.com/tensorflow/tensorflow](https://github.com/tensorflow/tensorflow)

第三步、编译前的准备

tensorflow/contrib/makefile/TensorFlow目录下有很多编译脚本,其中build_all_ios.sh脚本专门用于一键编译TensorFlow iOS静态库。虽然可以直接使用这个脚本进行一键编译,但是因为墙的原因,需要对一些依赖进行预处理。

1。下载 protobuf

    protobuf 是编译前唯一需要特殊处理的依赖库,[点击下载](https://github.com/google/protobuf/archive/master.zip),下载protobuf之后,解压,备用。

2。下载googlemock

    虽然protobuf编译脚本autogen.sh中的googlemock链接地址https://googlemock.googlecode.com/files/gmock-1.7.0.zip无法直接下载到,但是细心的人会发现,在浏览器中输入                  https://googlemock.googlecode.com/地址后,会跳转到https://github.com/google/googlemock地址,google在GiHub上的仓库地址。而GitHub上的仓库,我们可以直接的下载,克隆等。

我们直接在GitHub上下载googlemock(点击下载)。下载完成后,编辑压缩包名称为gmock-1.7.0.zip。编辑完成后,将压缩包移动到上一步中protobuf文件夹的目录下,以供后续使用。

3。编辑下载依赖脚本,去掉protobuf下载

在tensorflow/contrib/makefile/中,download_dependency.sh脚本用于下载相关依赖。打开这个脚本文件,注释或者删除 git 直接clone https://github.com/google/protobuf.git ${DOWNLOADS_DIR}/protobuf,目的是防止脚本下载protobuf。

完成以上三步后,下一步就是编译静态库了。

第四步、一键编译

大家已经知道,TensorFlow的tensorflow/contrib/makefile/文件夹下的build_all_ios.sh脚本是用来编译iOS静态库的,所以可以直接运行该脚本。开始编译静态库。

但是有一个问题你可以发现。既然编译TensorFlow需要protobuf,但是我们自己手动下载protobuf,那么如何让手动下载的protobuf直接被build_all_ios.sh脚本使用呢?

答案是复制粘贴。它可能有点低,但它有效。执行build_all_ios.sh命令后,立即将之前手动下载的protobuf文件夹复制到tensorflow/contrib/makefile/downloads目录下。 (不用担心,复制速度会很快,不会影响编译执行。_)


$ build_all_ios.sh

一切准备就绪,接下来就是默​​默等待编译完成了。建议Mac编译过程中连接电源。最好不要让设备休眠并关闭它。另外最好不要做其他事情。出去散步,回来后看看结果。

编译完成后,你会在tensorflow/contrib/makefile/gen/目录下看到编译结果。有关如何使用这些静态库以及如何将它们应用到您自己的项目中的信息,请参阅 TensorFlow iOS 示例。

3。有问题

1。 Googlecode.com 已被屏蔽,需要绕过! (目前挂VPN测试是没用的)。这也是为什么要做上面的预编译准备工作。

curl: (7) Failed to connect to googlemock.googlecode.com port 443: Operation timed out

解决办法:参见“步骤三、编译前的准备工作”。

2。没有 Xcode。


xcrun: error: SDK "iphoneos" cannot be located

xcrun: error: SDK "iphoneos" cannot be located
xcrun: error: unable to lookup item 'PlatformPath' in SDK 'iphoneos'

+ IPHONEOS_PLATFORM=

解决方案:安装Xcode。从上面的错误命令可以看出,静态库编译过程中使用了xcrun,该命令是xCode本身的能力。

3。您的 Xcode 版本不是 7.3 或更高版本,或者您有多个 Xcode 并且默认安装路径不是 7.3 或更高版本。

 error: Xcode 7.3.0 or later is required.

exit 1

解决方案:将Xcode更新到最新版本,并确保默认路径为latest/version。

如果Xcode是7.3并且不需要更新Xcode,可以将tensorflow/contrib/makefile/compile_ios_tensorflow.sh中的REQUIRED_XCODE_VERSION=7.3.0修改为REQUIRED_XCODE_VERSION=7.3。 (目前还不确定这个修改是否会产生其他影响。最好升级你的Xcode)

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门