【问题标题】:Build TensorFlowLite Swift Custom Framework构建 TensorFlowLite Swift 自定义框架
【发布时间】: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”)中引用它

问题是我什至不明白实现它的正确途径是什么。

谢谢。

【问题讨论】:

    标签: ios swift tensorflow cocoapods tensorflow-lite


    【解决方案1】:

    好吧,我在这里想出了答案:

    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 会自动更改 Frameworks, libraries and embedded content 部分,也会修改 Framework 路径
    4. 将此设置 Build Settings\Linking\Other Linker Flags 更改为 -lc++
    5. 完成。你可以这样做

       import TensorFlowLiteC
      
    6. 并使用swift 文件夹中的源文件。

    【讨论】:

    • 在目标 c 项目中运行交互的 TensorFlowLiteC_framework 时,出现错误“无法安装“应用程序名称””。我正在使用 Xcode 11.6 你能帮帮我吗?
    猜你喜欢
    • 2016-08-20
    • 2023-03-24
    • 2020-02-25
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多