Build TensorFlowLite Swift Custom Framework



我需要从源代码构建 TensorFlowLite Swift Framework/cocoapod,然后在其中一个 Swift 项目中使用它而不是原始框架。

下载了代码并在少数情况下按照说明进行操作,但没有成功:

1( https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/swift

a( 蟒蛇 configure.py

b(CocoaPods 开发人员不适用,因为它不会从本地 TensofFlow 文件夹中获取源代码(或者我弄错了?

c(巴泽尔开发商我愿意: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
    
  2. 结果可以在这里找到:bazel-bin/tensorflow/lite/experimental/ios/TensorFlowLiteC_framework.zip
  3. 解压缩文件并将内容添加到新的 XCode 项目中(在我的例子中是 Swift Single Window App(。如果您通过拖放执行此操作,则XCode将自动更改框架,库和嵌入式内容部分,还将修改框架路径
  4. 将此设置"生成设置\链接\其他链接器标志"更改为-lc++
  5. 做。你可以做

    import TensorFlowLiteC
    
  6. ,然后使用swift文件夹中的源文件。

最新更新