如何在tensorflow中编译ios示例

jos*_*osh 4 tensorflow

我刚刚意识到tensorflow现在已经支持了ios.但是如何编译contrib/ios_examples目录中的示例?

谢谢!

玩笑

Pet*_*den 12

我们仍在完成所有文档,但这里是我将添加到ios_examples目录的自述文件的草稿.我很想知道这是否有帮助,如果你有改进的想法.

TensorFlow iOS示例

此文件夹包含如何使用TensorFlow为iOS设备构建应用程序的示例.

构建示例

  • 您需要安装命令行工具的Xcode 7.3或更高版本.

  • 按照tensorflow/contrib/makefile中的说明编译包含核心TensorFlow代码的静态库.

  • 下载Inception v1,并将标签和图形文件解压缩到简单和相机示例中的数据文件夹中.

  • 将Xcode项目加载到simple子文件夹中,然后按Command-R在模拟器或连接的设备上构建并运行它.

  • 您应该看到一个带有"运行模型"按钮的单屏应用程序.点击它,你会看到下面出现一些调试输出,表明已经分析了示例Grace Hopper图像,并且识别出军装.

  • 一旦成功运行,请确保已连接真实设备并在相机子文件夹中打开Xcode项目.构建并运行后,您应该获得一个实时摄像机视图,您可以指向对象以获得实时识别结果.

故障排除

如果您遇到问题,请参阅以下常见问题清单:

  • 确保在运行之前运行download_dependencies.shcompile_ios_protobuf.sh脚本compile_ios_tensorflow.

  • 检查您是否拥有Xcode 7.3版.

  • 如果存在Eigen错误,请查看Xcode项目的构建设置.在"搜索路径"部分中,您将看到随每个版本的框架而更改的Eigen包含目录.您可能需要将此更新为tensorflow/contrib/makefile/downloads文件夹中的版本.

  • 如果有关于没有注册会话的投诉,这意味着TensorFlow依赖注册的C++全局构造函数没有正确链接.您必须确保您的项目使用force_load,如下所述.

创建自己的应用程序

您需要更新应用中的各种设置才能与TensorFlow相关联.您可以在示例项目中查看它们,但这是一个完整的纲要:

  • `compile_ios_tensorflow.sh'脚本在tensorflow/contrib/makefile/gen/lib/libtensorflow-core.a中构建通用静态库.您需要将其添加到链接构建阶段,并在搜索路径中将tensorflow/contrib/makefile/gen/lib添加到库搜索路径设置.

  • 您还需要将tensorflow/contrib/makefile/gen/protobuf_ios/lib中的libprotobuf.a和libprotobuf-lite.a添加到Build Stages和Library Search Paths.

  • Header Search路径需要包含tensorflow的根文件夹,tensorflow/contrib/makefile/downloads/protobuf/src,tensorflow/contrib/makefile/downloads,tensorflow/contrib/makefile/downloads/eigen-eigen-和tensorflow/contrib /生成文件/根/原.

  • 在"链接"部分中,您需要-force_load在"其他链接器标志"部分中添加后跟TensorFlow静态库的路径.这可确保不会删除用于在库中注册重要类的全局C++对象.对于链接器,它们可能看起来未使用,因为没有其他代码引用变量,但实际上它们的构造函数具有注册类的重要副作用.

  • 该库目前不支持bitcode,因此您需要在项目设置中禁用它.