TensorFlow Lite(四)在 iOS 上构建 TensorFlow Lite

牟飞沉
2023-12-01

本文档描述了如何构建 TensorFlow Lite iOS 库。如果仅需使用,可以直接使用 TensorFlow Lite CocoaPod 版本。参阅 TensorFlow Lite iOS Demo 获取示例(参考博客https://blog.csdn.net/mandagod/article/details/104347293)。

下载TensorFlow源代码

git clone https://github.com/tensorflow/tensorflow

基于源码构建iOS库

TensorFlow Lite 的通用 iOS 库需要在 MacOS 机器上,通过 Xcode 的命令行工具来构建。 如果你还没有配置好环境,可以通过 xcode-select 来安装 Xcode 8(或更高版本) 和工具:

xcode-select --install

如果这是第一次安装,你需要先运行一次 XCode 并同意它的许可。

(你也需要安装好 Homebrew)

下面安装 automake/libtool:

brew install automake
brew install libtool

如果你遇到了 automake 和 libtool 已经安装但未正确链接的错误,首先输入以下命令:

sudo chown -R $(whoami) /usr/local/*

然后使用下面的命令来使链接生效:

brew link automake
brew link libtool

接着你需用通过 shell 脚本来下载所需的依赖:

tensorflow/lite/tools/make/download_dependencies.sh

这会从网上获取库和数据的拷贝,并安装在tensorflow/lite/tools/make/downloads目录

所有的依赖都已经创建完毕,你现在可以在 iOS 上为五个支持的体系架构构建库:

tensorflow/lite/tools/make/build_ios_universal_lib.sh

它使用 tensorflow/lite 中的 makefile 来构建不同版本的库,然后调用 lipo 将它们捆绑到包含 armv7, armv7s, arm64, i386, 和 x86_64 架构的通用文件中。生成的库在: tensorflow/lite/tools/make/gen/lib/libtensorflow-lite.a

如果你在运行 build_ios_universal_lib.sh 时,遇到了如 no such file or directory: 'x86_64' 的错误: 打开 Xcode > Preferences > Locations,确保在"Command Line Tools"下拉菜单中有一个选中值。

运行TesnorFlow源码中的实例

需要安装cocoapods:

sudo gem install cocoapods

下载应用程序所需要的模型文件:

sh tensorflow/lite/examples/ios/download_models.sh

进入项目目录,安装pod:

cd tensorflow/lite/examples/ios/camera/
pod install
pod update

安装完成之后,打开工程文件:

open tflite_camera_example.xcworkspace

现在可以再iPhone上运行了。

在应用中使用本地编译好的库

你需要更新一些你的应用设置来链接 TensorFlow Lite。你可以在示例项目 tensorflow/lite/examples/ios/simple/simple.xcodeproj 查看这些设置, 但下面提供了一个完整的纲要:

添加库,你需要将库 tensorflow/lite/tools/make/gen/lib/libtensorflow-lite.a 加入你的链接构建阶段,并且在 Search Paths 的 Library Search Paths 设置中添加 tensorflow/lite/tools/make/gen/lib。

Header Search 路径需要包含:

  • tensorflow/lite 的根目录
  • ttensorflow/lite/tools/make/downloads
  • tensorflow/lite/tools/make/downloads/flatbuffers/include

设置 C++ Language Dialect 为 GNU++11 (或 GNU++14), 同时设置 C++ Standard Library 为 libc++ 来启用 C++11 支持 (或更高版本)

tensorflow/lite/examples/ios下还有其他应用程序,可以参考。

 类似资料: