构建 TensorFlowLite Swift 自定义框架
Posted
技术标签:
【中文标题】构建 TensorFlowLite Swift 自定义框架【英文标题】:Build TensorFlowLite Swift Custom Framework 【发布时间】:2019-10-04 08:37:08 【问题描述】:我需要从源代码构建 TensorFlowLite Swift Framework/cocoapod,然后在其中一个 Swift 项目中使用它而不是原始框架。
在少数情况下下载了代码并按照说明进行操作,但没有成功:
1) https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/swift
a) python configure.py
b) CocoaPods 开发者 不适用,因为它没有从本地 TensofFlow 文件夹中获取源代码(或者我弄错了?)
c) Bazel 开发人员 我愿意:
bazel build tensorflow/lite/experimental/swift:TensorFlowLite
bazel test tensorflow/lite/experimental/swift:Tests --swiftcopt=-enable-testing
最终
generate_xcodeproj.sh --genconfig tensorflow/lite/experimental/swift/TensorFlowLite.tulsiproj:TensorFlowLite --outputfolder ~/path/to/generated/TensorFlowLite.xcodeproj
因此,我得到了一个包含 libtensorflow-lite-experimental-swift-TensorFlowLite.a 和几个 idx 文件的项目。它编译了,我看到了 .a 文件(但由于各种原因,应用程序和测试都没有编译),我不太明白如何将 .a lib 与 Swift 文件一起使用,因为没有模块/头文件等. 文件。
在所有这些练习之后,TensorFlow 的根目录和 experimental/Swift
文件夹中都有 TensorFlowLiteSwift.podspec
。它仍然取决于TensorFlowLiteC
,如果我通过路径参数在另一个项目中引用这个 podspec,我可以做import TensorFlowLiteC
但不是import TensorFlowLiteSwift
/ import TensorFlowLite
,我相信 TensorFlowLiteC 仍然取自互联网,而不是本地.
2) 从这里自定义框架路径: https://firebase.google.com/docs/ml-kit/ios/use-custom-tflite
这里有几个问题:
a) 如果我尝试只使用内部添加了 tensorflow_lite.framework 的项目,那么我无法在 Swift 文件中引用 TensorFlowLite
/ TensorFlowLiteC
等。
b) 如果我尝试遵循创建本地 pod 并引用 pod 项目的路线,则 pod install
不起作用,因为未设置强制参数(使用提供的示例)。
我希望获得一个从本地 TensorFlowFiles 构建的 Xcode 项目或工作区,并且我可以从其他项目(如“import TensorFlowLiteSwift”或“import TensorFlowLite”)中引用它
问题是我什至不明白实现它的正确途径是什么。
谢谢。
【问题讨论】:
【参考方案1】:好吧,我在这里想出了答案:
从根 tensorflow 文件夹构建 TensorFlowLiteC 框架:
bazel build --config=ios_fat -c opt //tensorflow/lite/experimental/ios:TensorFlowLiteC_framework
结果可以在这里找到:bazel-bin/tensorflow/lite/experimental/ios/TensorFlowLiteC_framework.zip
解压缩文件并将内容添加到新的 XCode 项目(在我的例子中是 Swift Single Window App)。如果你通过拖放操作,那么 XCode 会自动更改 Frameworks, libraries and embedded content 部分,也会修改 Framework 路径
将此设置 Build Settings\Linking\Other Linker Flags 更改为 -lc++
完成。你可以这样做
import TensorFlowLiteC
并使用swift
文件夹中的源文件。
【讨论】:
在目标 c 项目中运行交互的 TensorFlowLiteC_framework 时,出现错误“无法安装“应用程序名称””。我正在使用 Xcode 11.6 你能帮帮我吗?以上是关于构建 TensorFlowLite Swift 自定义框架的主要内容,如果未能解决你的问题,请参考以下文章
社区说 | 使用 TensorFlow Lite 构建和部署自定义对象检测模型
社区说 |今晚直播! 使用 TensorFlow Lite 构建和部署自定义对象检测模型
社区说 |今晚直播! 使用 TensorFlow Lite 构建和部署自定义对象检测模型
社区说 |今晚直播! 使用 TensorFlow Lite 构建和部署自定义对象检测模型