Michael

写写代码,说说人生

您好,我是Michael,欢迎来到我的个人家园。
代码搬运工,目前就职于XX证券,努力修行中。


H5 / Java / Objc / Swift / Vue / RN

TensorFlow 在 iOS 平台上的使用(一)

  距离上次使用 TensorFlow 在iOS平台上做的小 Demo,已经过了四个月了,今天忽然想再看看,发现 Demo 已经不见了,我只能从头在编一次,这次发现编译 iOS 库,简单多了。

  tensorflow 下载地址,tensorflow 最近提交的时间:2016-11-03,commit:7b7c02de56e013482b5fe5ab05e576dc98fe5742

  下载完成后打开文件,找到目录 tensorflow-master/tensorflow/contrib/ios_examples 你会发现目录下有三个项目和一个 README.md 。

benchmark 、 camera 、 simple 、README.md

如果你发现项目无法运行,请看这里

  对于任何项目我们首先打开的应该是 README.md ,里面一般情况都会有介绍如何使用这个项目,tensorflow 也不会例外。README 开头就说了,这个目录里有如何在 iOS 平台上使用 tensorflow 的例子,但是需要注意几点:

  • 你的 Xcode 版本必须是 7.3 或更高版本,并且有安装 command-line 工具 。
  • 项目(Examples) 里必须包含一个静态库:libtensorflow-core.a
  • 下载 Inception v1,解压后将 label 和 graph 放在 simple 和 camera 的项目中。

camera 项目的使用

  camera 项目在 tensorflow-master/tensorflow/contrib/ios_examples 目录下,如果你是直接打开 camera 项目,编译你会发现报错缺少 imagenet_comp_graph_label_strings.txt 和 tensorflow_inception_graph.pb 两个文件,这两个文件上面已经说到了下载 Inception v1 解压得到。现在还差 静态库:libtensorflow-core.a ,这个需要我们自己编译。

编译静态库:libtensorflow-core.a

进入目录:tensorflow-master/tensorflow/contrib/makefile,你可以看到一大堆 .sh 结尾的文件,找到 build_all_ios.sh ,Mac 上可以直接在 termina(终端)上运行命令编译

$ sh build_all_ios.sh

这个编译的过程是很漫长的,一般在一个小时左右。也有可能你在编译的过程中会遇到问题,这次我只遇到一个问题:

configure.ac:30: error: required file 'build-aux/ltmain.sh' not found
configure.ac:24: installing 'build-aux/missing'
Makefile.am: installing 'build-aux/depcomp'
parallel-tests: installing 'build-aux/test-driver'
autoreconf: automake failed with exit status: 1

解决方法是:先卸载 libtool 在重新安装,brew uninstall libtool && brew install libtool

如果你还遇到了其它问题,可以看看我之前的一片文章 iOS开发迎来机器学习的春天—TensorFlow ,或者是直接去 tensorflow 的 Issues 里面找。

一个小时后。。。 如果编译没出问题,你可以在目录 tensorflow-master/tensorflow/contrib/makefile/gen/lib 下找到一个静态库:libtensorflow-core.a ,把这个静态库拷贝到 camera 项目中,然后编译运行。


转载请注明:Michael的博客 » 点击阅读原文

最近的文章

算法-冒泡排序

貌似是程序员基础,我一个高级开发竟然只会冒泡(羞耻ing…)前言之前买了剑指offer,一直搁那里没怎么看,现在挑灯夜读挤出点时间学习下,在这之前还是得先把基础给打牢,这里先介绍算法入门-冒泡排序。核心思想冒泡排序的核心思想就是通过与相邻元素的比较和交换,把小的数交换到最前面。因为这个过程类似于水泡向上升一样,因此被命名为冒泡排序。示例 第一轮过程: i=0~9;依次进行arr[i]与arr[i+1]对比;arr[i]小则不交换,arr[i+1]小则与arr[i]交换位置,由于100...…

算法设计继续阅读
更早的文章

JSPatch使用小记

如何与产品和谐相处前言由于苹果审核周期过长,导致iOS App发包所需要的成本超出其他平台,在遇上一些严重Bug的时候,往往只能申请加急,审核加急又是有限制的。而JSPatch的闪亮登场,有效地解决了这一问题,关于基本使用的参考已经非常多了,本文着力讲优化相关。参考 Github源代码地址 JSPatch中文介绍接入使用JSPatch# Your Podfileplatform :ios, '6.0'pod 'JSPatch'检测更新 首先我们需要先判断是否需要更新,一般由一个单...…

跨平台开发继续阅读