Migrate TFLite iOS directories out of experimental
PiperOrigin-RevId: 343958075 Change-Id: I4c7736094f1babab288fb57455e29ab4c0c4fa3d
This commit is contained in:
parent
5a086ba4f1
commit
5a063c275e
10
configure.py
10
configure.py
@ -55,16 +55,16 @@ NCCL_LIB_PATHS = [
|
|||||||
|
|
||||||
# List of files to configure when building Bazel on Apple platforms.
|
# List of files to configure when building Bazel on Apple platforms.
|
||||||
APPLE_BAZEL_FILES = [
|
APPLE_BAZEL_FILES = [
|
||||||
'tensorflow/lite/experimental/ios/BUILD',
|
'tensorflow/lite/ios/BUILD',
|
||||||
'tensorflow/lite/experimental/objc/BUILD',
|
'tensorflow/lite/objc/BUILD',
|
||||||
'tensorflow/lite/experimental/swift/BUILD',
|
'tensorflow/lite/swift/BUILD',
|
||||||
'tensorflow/lite/tools/benchmark/experimental/ios/BUILD'
|
'tensorflow/lite/tools/benchmark/experimental/ios/BUILD'
|
||||||
]
|
]
|
||||||
|
|
||||||
# List of files to move when building for iOS.
|
# List of files to move when building for iOS.
|
||||||
IOS_FILES = [
|
IOS_FILES = [
|
||||||
'tensorflow/lite/experimental/objc/TensorFlowLiteObjC.podspec',
|
'tensorflow/lite/objc/TensorFlowLiteObjC.podspec',
|
||||||
'tensorflow/lite/experimental/swift/TensorFlowLiteSwift.podspec',
|
'tensorflow/lite/swift/TensorFlowLiteSwift.podspec',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -54,15 +54,15 @@ Once Bazel is properly configured with iOS support, you can build the
|
|||||||
|
|
||||||
```sh
|
```sh
|
||||||
bazel build --config=ios_fat -c opt \
|
bazel build --config=ios_fat -c opt \
|
||||||
//tensorflow/lite/experimental/ios:TensorFlowLiteC_framework
|
//tensorflow/lite/ios:TensorFlowLiteC_framework
|
||||||
```
|
```
|
||||||
|
|
||||||
This command will generate the `TensorFlowLiteC_framework.zip` file under
|
This command will generate the `TensorFlowLiteC_framework.zip` file under
|
||||||
`bazel-bin/tensorflow/lite/experimental/ios/` directory under your TensorFlow
|
`bazel-bin/tensorflow/lite/ios/` directory under your TensorFlow root directory.
|
||||||
root directory. By default, the generated framework contains a "fat" binary,
|
By default, the generated framework contains a "fat" binary, containing armv7,
|
||||||
containing armv7, arm64, and x86_64 (but no i386). To see the full list of build
|
arm64, and x86_64 (but no i386). To see the full list of build flags used when
|
||||||
flags used when you specify `--config=ios_fat`, please refer to the iOS configs
|
you specify `--config=ios_fat`, please refer to the iOS configs section in the
|
||||||
section in the [`.bazelrc` file][bazelrc].
|
[`.bazelrc` file][bazelrc].
|
||||||
|
|
||||||
## Use in your own application
|
## Use in your own application
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ For Swift:
|
|||||||
```python
|
```python
|
||||||
swift_library(
|
swift_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/lite/experimental/swift:TensorFlowLite",
|
"//tensorflow/lite/swift:TensorFlowLite",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
@ -157,7 +157,7 @@ For Objective-C:
|
|||||||
```python
|
```python
|
||||||
objc_library(
|
objc_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/lite/experimental/objc:TensorFlowLite",
|
"//tensorflow/lite/objc:TensorFlowLite",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
@ -200,7 +200,7 @@ TensorFlow Lite's C API, defined by the header files under
|
|||||||
[bazel-install]: https://docs.bazel.build/versions/master/install-os-x.html
|
[bazel-install]: https://docs.bazel.build/versions/master/install-os-x.html
|
||||||
[bazelrc]: https://github.com/tensorflow/tensorflow/blob/master/.bazelrc
|
[bazelrc]: https://github.com/tensorflow/tensorflow/blob/master/.bazelrc
|
||||||
[configure-py]: https://github.com/tensorflow/tensorflow/blob/master/configure.py
|
[configure-py]: https://github.com/tensorflow/tensorflow/blob/master/configure.py
|
||||||
[objc-api]: https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/objc
|
[objc-api]: https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/objc
|
||||||
[private-cocoapods]: https://guides.cocoapods.org/making/private-cocoapods.html
|
[private-cocoapods]: https://guides.cocoapods.org/making/private-cocoapods.html
|
||||||
[swift-api]: https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/swift
|
[swift-api]: https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/swift
|
||||||
[tflite-podspec]: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/experimental/ios/TensorFlowLiteC.podspec
|
[tflite-podspec]: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/ios/TensorFlowLiteC.podspec
|
||||||
|
@ -85,9 +85,9 @@ information, please refer to the
|
|||||||
### iOS Platform
|
### iOS Platform
|
||||||
|
|
||||||
On iOS, TensorFlow Lite is available with native iOS libraries written in
|
On iOS, TensorFlow Lite is available with native iOS libraries written in
|
||||||
[Swift](https://www.tensorflow.org/code/tensorflow/lite/experimental/swift)
|
[Swift](https://www.tensorflow.org/code/tensorflow/lite/swift)
|
||||||
and
|
and
|
||||||
[Objective-C](https://www.tensorflow.org/code/tensorflow/lite/experimental/objc).
|
[Objective-C](https://www.tensorflow.org/code/tensorflow/lite/objc).
|
||||||
You can also use
|
You can also use
|
||||||
[C API](https://www.tensorflow.org/code/tensorflow/lite/c/c_api.h)
|
[C API](https://www.tensorflow.org/code/tensorflow/lite/c/c_api.h)
|
||||||
directly in Objective-C codes.
|
directly in Objective-C codes.
|
||||||
@ -238,7 +238,7 @@ Java inference API, but planned extensions will make this possible.
|
|||||||
*Platform: iOS*
|
*Platform: iOS*
|
||||||
|
|
||||||
The
|
The
|
||||||
[Swift API](https://www.tensorflow.org/code/tensorflow/lite/experimental/swift)
|
[Swift API](https://www.tensorflow.org/code/tensorflow/lite/swift)
|
||||||
is available in `TensorFlowLiteSwift` Pod from Cocoapods.
|
is available in `TensorFlowLiteSwift` Pod from Cocoapods.
|
||||||
|
|
||||||
First, you need to import `TensorFlowLite` module.
|
First, you need to import `TensorFlowLite` module.
|
||||||
@ -292,7 +292,7 @@ do {
|
|||||||
*Platform: iOS*
|
*Platform: iOS*
|
||||||
|
|
||||||
The
|
The
|
||||||
[Objective-C API](https://www.tensorflow.org/code/tensorflow/lite/experimental/objc)
|
[Objective-C API](https://www.tensorflow.org/code/tensorflow/lite/objc)
|
||||||
is available in `TensorFlowLiteObjC` Pod from Cocoapods.
|
is available in `TensorFlowLiteObjC` Pod from Cocoapods.
|
||||||
|
|
||||||
First, you need to import `TensorFlowLite` module.
|
First, you need to import `TensorFlowLite` module.
|
||||||
|
@ -23,10 +23,11 @@ use cases are available in [Examples](https://www.tensorflow.org/lite/examples).
|
|||||||
## Add TensorFlow Lite to your Swift or Objective-C project
|
## Add TensorFlow Lite to your Swift or Objective-C project
|
||||||
|
|
||||||
TensorFlow Lite offers native iOS libraries written in
|
TensorFlow Lite offers native iOS libraries written in
|
||||||
[Swift](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/swift)
|
[Swift](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/swift)
|
||||||
and
|
and
|
||||||
[Objective-C](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/objc).
|
[Objective-C](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/objc).
|
||||||
Start writing your own iOS code using the [Swift image classification example](https://github.com/tensorflow/examples/tree/master/lite/examples/image_classification/ios)
|
Start writing your own iOS code using the
|
||||||
|
[Swift image classification example](https://github.com/tensorflow/examples/tree/master/lite/examples/image_classification/ios)
|
||||||
as a starting point.
|
as a starting point.
|
||||||
|
|
||||||
The sections below demonstrate how to add TensorFlow Lite Swift or Objective-C
|
The sections below demonstrate how to add TensorFlow Lite Swift or Objective-C
|
||||||
@ -99,7 +100,7 @@ In your `BUILD` file, add the `TensorFlowLite` dependency to your target.
|
|||||||
```python
|
```python
|
||||||
swift_library(
|
swift_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/lite/experimental/swift:TensorFlowLite",
|
"//tensorflow/lite/swift:TensorFlowLite",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
@ -109,7 +110,7 @@ swift_library(
|
|||||||
```python
|
```python
|
||||||
objc_library(
|
objc_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/lite/experimental/objc:TensorFlowLite",
|
"//tensorflow/lite/objc:TensorFlowLite",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
@ -174,12 +174,12 @@ provide the list of target architectures excluding `i386`.
|
|||||||
|
|
||||||
```sh
|
```sh
|
||||||
bazel build -c opt --config=ios --ios_multi_cpus=armv7,arm64,x86_64 \
|
bazel build -c opt --config=ios --ios_multi_cpus=armv7,arm64,x86_64 \
|
||||||
//tensorflow/lite/experimental/ios:TensorFlowLiteSelectTfOps_framework
|
//tensorflow/lite/ios:TensorFlowLiteSelectTfOps_framework
|
||||||
```
|
```
|
||||||
|
|
||||||
This will generate the framework under
|
This will generate the framework under `bazel-bin/tensorflow/lite/ios/`
|
||||||
`bazel-bin/tensorflow/lite/experimental/ios/` directory. You can add this new
|
directory. You can add this new framework to your Xcode project by following
|
||||||
framework to your Xcode project by following similar steps described under the
|
similar steps described under the
|
||||||
[Xcode project settings](./build_ios.md#modify_xcode_project_settings_directly)
|
[Xcode project settings](./build_ios.md#modify_xcode_project_settings_directly)
|
||||||
section in the iOS build guide.
|
section in the iOS build guide.
|
||||||
|
|
||||||
|
@ -247,6 +247,6 @@ issue with all the necessary details to reproduce.
|
|||||||
|
|
||||||
## APIs
|
## APIs
|
||||||
|
|
||||||
* [Core ML delegate Swift API](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/experimental/swift/Sources/CoreMLDelegate.swift)
|
* [Core ML delegate Swift API](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/swift/Sources/CoreMLDelegate.swift)
|
||||||
* [Core ML delegate C API](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/experimental/delegates/coreml/coreml_delegate.h)
|
* [Core ML delegate C API](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/experimental/delegates/coreml/coreml_delegate.h)
|
||||||
* This can be used for Objective-C codes.
|
* This can be used for Objective-C codes.
|
||||||
|
@ -247,7 +247,7 @@ called.
|
|||||||
|
|
||||||
`TFLGpuDelegateCreate()` accepts a `struct` of options.
|
`TFLGpuDelegateCreate()` accepts a `struct` of options.
|
||||||
([C API](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/delegates/gpu/metal_delegate.h),
|
([C API](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/delegates/gpu/metal_delegate.h),
|
||||||
[Swift API](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/experimental/swift/Sources/MetalDelegate.swift))
|
[Swift API](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/swift/Sources/MetalDelegate.swift))
|
||||||
|
|
||||||
Passing `nullptr`(C API) or nothing (Swift API) to the initializer sets the
|
Passing `nullptr`(C API) or nothing (Swift API) to the initializer sets the
|
||||||
default options (which are explicated in the Basic Usage example above).
|
default options (which are explicated in the Basic Usage example above).
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
load("@bazel_skylib//rules:build_test.bzl", "build_test")
|
load("@bazel_skylib//rules:build_test.bzl", "build_test")
|
||||||
load(
|
load(
|
||||||
"//tensorflow/lite/experimental/ios:ios.bzl",
|
"//tensorflow/lite/ios:ios.bzl",
|
||||||
"TFL_MINIMUM_OS_VERSION",
|
"TFL_MINIMUM_OS_VERSION",
|
||||||
"strip_common_include_path_prefix",
|
"strip_common_include_path_prefix",
|
||||||
"tflite_ios_static_framework",
|
"tflite_ios_static_framework",
|
||||||
@ -44,7 +44,7 @@ strip_common_include_path_prefix(
|
|||||||
prefix = "TensorFlowLiteC/",
|
prefix = "TensorFlowLiteC/",
|
||||||
)
|
)
|
||||||
|
|
||||||
# bazel build -c opt --config=ios_fat //tensorflow/lite/experimental/ios:TensorFlowLiteC_framework
|
# bazel build -c opt --config=ios_fat //tensorflow/lite/ios:TensorFlowLiteC_framework
|
||||||
tflite_ios_static_framework(
|
tflite_ios_static_framework(
|
||||||
name = "TensorFlowLiteC_framework",
|
name = "TensorFlowLiteC_framework",
|
||||||
hdrs = [
|
hdrs = [
|
||||||
@ -68,7 +68,7 @@ tflite_ios_static_framework(
|
|||||||
# The flex delegate cannot be built for i386, so it can't be built with ios_fat
|
# The flex delegate cannot be built for i386, so it can't be built with ios_fat
|
||||||
# config.
|
# config.
|
||||||
#
|
#
|
||||||
# bazel build -c opt --config=ios --ios_multi_cpus=armv7,arm64,x86_64 //tensorflow/lite/experimental/ios:TensorFlowLiteSelectTfOps_framework
|
# bazel build -c opt --config=ios --ios_multi_cpus=armv7,arm64,x86_64 //tensorflow/lite/ios:TensorFlowLiteSelectTfOps_framework
|
||||||
ios_static_framework(
|
ios_static_framework(
|
||||||
name = "TensorFlowLiteSelectTfOps_framework",
|
name = "TensorFlowLiteSelectTfOps_framework",
|
||||||
avoid_deps = ["//tensorflow/lite/c:common"],
|
avoid_deps = ["//tensorflow/lite/c:common"],
|
||||||
@ -84,7 +84,7 @@ ios_static_framework(
|
|||||||
# TensorFlow Lite runtime, it is intended to be linked along with the
|
# TensorFlow Lite runtime, it is intended to be linked along with the
|
||||||
# TensorFlowLiteC framework above in a composable way.
|
# TensorFlowLiteC framework above in a composable way.
|
||||||
#
|
#
|
||||||
# bazel build -c opt --config=ios_fat //tensorflow/lite/experimental/ios:TensorFlowLiteCCoreML_framework
|
# bazel build -c opt --config=ios_fat //tensorflow/lite/ios:TensorFlowLiteCCoreML_framework
|
||||||
tflite_ios_static_framework(
|
tflite_ios_static_framework(
|
||||||
name = "TensorFlowLiteCCoreML_framework",
|
name = "TensorFlowLiteCCoreML_framework",
|
||||||
hdrs = [
|
hdrs = [
|
||||||
@ -103,7 +103,7 @@ tflite_ios_static_framework(
|
|||||||
# TensorFlow Lite runtime, it is intended to be linked along with the
|
# TensorFlow Lite runtime, it is intended to be linked along with the
|
||||||
# TensorFlowLiteC framework above in a composable way.
|
# TensorFlowLiteC framework above in a composable way.
|
||||||
#
|
#
|
||||||
# bazel build -c opt --config=ios_fat //tensorflow/lite/experimental/ios:TensorFlowLiteCMetal_framework
|
# bazel build -c opt --config=ios_fat //tensorflow/lite/ios:TensorFlowLiteCMetal_framework
|
||||||
tflite_ios_static_framework(
|
tflite_ios_static_framework(
|
||||||
name = "TensorFlowLiteCMetal_framework",
|
name = "TensorFlowLiteCMetal_framework",
|
||||||
hdrs = [
|
hdrs = [
|
@ -1,7 +1,7 @@
|
|||||||
# TensorFlow Lite for iOS
|
# TensorFlow Lite for iOS
|
||||||
- For Swift developers, add the `TensorFlowLiteSwift` pod to your Podfile. For
|
- For Swift developers, add the `TensorFlowLiteSwift` pod to your Podfile. For
|
||||||
Objective-C developers, add `TensorFlowLiteObjC`. See the TensorFlow Lite
|
Objective-C developers, add `TensorFlowLiteObjC`. See the TensorFlow Lite
|
||||||
[Swift](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/swift)
|
[Swift](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/swift)
|
||||||
and
|
and
|
||||||
[ObjC](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/objc)
|
[ObjC](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/objc)
|
||||||
directories for more details.
|
directories for more details.
|
@ -60,7 +60,7 @@ def tflite_ios_static_framework(
|
|||||||
"BUNDLE_NAME=\"" + bundle_name + "\" " +
|
"BUNDLE_NAME=\"" + bundle_name + "\" " +
|
||||||
"ALLOWLIST_FILE_PATH=\"$(location " + allowlist_symbols_file + ")\" " +
|
"ALLOWLIST_FILE_PATH=\"$(location " + allowlist_symbols_file + ")\" " +
|
||||||
"OUTPUT=\"$(OUTS)\" " +
|
"OUTPUT=\"$(OUTS)\" " +
|
||||||
"\"$(location //tensorflow/lite/experimental/ios:hide_symbols_with_allowlist)\"")
|
"\"$(location //tensorflow/lite/ios:hide_symbols_with_allowlist)\"")
|
||||||
|
|
||||||
native.genrule(
|
native.genrule(
|
||||||
name = name,
|
name = name,
|
||||||
@ -68,7 +68,7 @@ def tflite_ios_static_framework(
|
|||||||
outs = [name + ".zip"],
|
outs = [name + ".zip"],
|
||||||
cmd = cmd,
|
cmd = cmd,
|
||||||
tools = [
|
tools = [
|
||||||
"//tensorflow/lite/experimental/ios:hide_symbols_with_allowlist",
|
"//tensorflow/lite/ios:hide_symbols_with_allowlist",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
# TensorFlow Lite for Objective-C
|
# TensorFlow Lite for Objective-C
|
||||||
|
|
||||||
load("//tensorflow/lite:special_rules.bzl", "ios_visibility_whitelist", "tflite_ios_lab_runner")
|
load("//tensorflow/lite:special_rules.bzl", "ios_visibility_whitelist", "tflite_ios_lab_runner")
|
||||||
load("//tensorflow/lite/experimental/ios:ios.bzl", "TFL_DEFAULT_TAGS", "TFL_DISABLED_SANITIZER_TAGS", "TFL_MINIMUM_OS_VERSION")
|
load("//tensorflow/lite/ios:ios.bzl", "TFL_DEFAULT_TAGS", "TFL_DISABLED_SANITIZER_TAGS", "TFL_MINIMUM_OS_VERSION")
|
||||||
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application", "ios_unit_test")
|
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application", "ios_unit_test")
|
||||||
|
|
||||||
package(
|
package(
|
@ -51,7 +51,7 @@ In your `BUILD` file, add the `TensorFlowLite` dependency to your target:
|
|||||||
```python
|
```python
|
||||||
objc_library(
|
objc_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/lite/experimental/objc:TensorFlowLite",
|
"//tensorflow/lite/objc:TensorFlowLite",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
@ -71,23 +71,23 @@ Or, the module if you set `CLANG_ENABLE_MODULES = YES` in your Xcode project:
|
|||||||
Build the `TensorFlowLite` Objective-C library target:
|
Build the `TensorFlowLite` Objective-C library target:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
bazel build tensorflow/lite/experimental/objc:TensorFlowLite
|
bazel build tensorflow/lite/objc:TensorFlowLite
|
||||||
```
|
```
|
||||||
|
|
||||||
Build the `Tests` target:
|
Build the `Tests` target:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
bazel test tensorflow/lite/experimental/objc:Tests
|
bazel test tensorflow/lite/objc:Tests
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Generate the Xcode project using Tulsi
|
#### Generate the Xcode project using Tulsi
|
||||||
|
|
||||||
Open the `//tensorflow/lite/experimental/objc/TensorFlowLite.tulsiproj` using
|
Open the `//tensorflow/lite/objc/TensorFlowLite.tulsiproj` using
|
||||||
the [TulsiApp](https://github.com/bazelbuild/tulsi)
|
the [TulsiApp](https://github.com/bazelbuild/tulsi)
|
||||||
or by running the
|
or by running the
|
||||||
[`generate_xcodeproj.sh`](https://github.com/bazelbuild/tulsi/blob/master/src/tools/generate_xcodeproj.sh)
|
[`generate_xcodeproj.sh`](https://github.com/bazelbuild/tulsi/blob/master/src/tools/generate_xcodeproj.sh)
|
||||||
script from the root `tensorflow` directory:
|
script from the root `tensorflow` directory:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
generate_xcodeproj.sh --genconfig tensorflow/lite/experimental/objc/TensorFlowLite.tulsiproj:TensorFlowLite --outputfolder ~/path/to/generated/TensorFlowLite.xcodeproj
|
generate_xcodeproj.sh --genconfig tensorflow/lite/objc/TensorFlowLite.tulsiproj:TensorFlowLite --outputfolder ~/path/to/generated/TensorFlowLite.xcodeproj
|
||||||
```
|
```
|
@ -2,21 +2,21 @@
|
|||||||
"sourceFilters" : [
|
"sourceFilters" : [
|
||||||
"tensorflow/lite",
|
"tensorflow/lite",
|
||||||
"tensorflow/lite/c",
|
"tensorflow/lite/c",
|
||||||
"tensorflow/lite/experimental/objc",
|
"tensorflow/lite/objc",
|
||||||
"tensorflow/lite/experimental/objc/apis",
|
"tensorflow/lite/objc/apis",
|
||||||
"tensorflow/lite/experimental/objc/apps/TestApp/TestApp",
|
"tensorflow/lite/objc/apps/TestApp/TestApp",
|
||||||
"tensorflow/lite/experimental/objc/apps/TestApp/TestApp/Base.lproj",
|
"tensorflow/lite/objc/apps/TestApp/TestApp/Base.lproj",
|
||||||
"tensorflow/lite/experimental/objc/sources",
|
"tensorflow/lite/objc/sources",
|
||||||
"tensorflow/lite/experimental/objc/tests",
|
"tensorflow/lite/objc/tests",
|
||||||
"tensorflow/lite/kernels",
|
"tensorflow/lite/kernels",
|
||||||
"tensorflow/lite/kernels/internal",
|
"tensorflow/lite/kernels/internal",
|
||||||
"tensorflow/lite/nnapi",
|
"tensorflow/lite/nnapi",
|
||||||
"tensorflow/lite/schema",
|
"tensorflow/lite/schema"
|
||||||
],
|
],
|
||||||
"buildTargets" : [
|
"buildTargets" : [
|
||||||
"//tensorflow/lite/experimental/objc:TensorFlowLite",
|
"//tensorflow/lite/objc:TensorFlowLite",
|
||||||
"//tensorflow/lite/experimental/objc:TestApp",
|
"//tensorflow/lite/objc:TestApp",
|
||||||
"//tensorflow/lite/experimental/objc:Tests",
|
"//tensorflow/lite/objc:Tests"
|
||||||
],
|
],
|
||||||
"projectName" : "TensorFlowLite",
|
"projectName" : "TensorFlowLite",
|
||||||
"optionSet" : {
|
"optionSet" : {
|
||||||
@ -58,6 +58,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalFilePaths" : [
|
"additionalFilePaths" : [
|
||||||
"tensorflow/lite/experimental/objc/BUILD",
|
"tensorflow/lite/objc/BUILD"
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -11,7 +11,7 @@
|
|||||||
},
|
},
|
||||||
"projectName" : "TensorFlowLite",
|
"projectName" : "TensorFlowLite",
|
||||||
"packages" : [
|
"packages" : [
|
||||||
"tensorflow/lite/experimental/objc"
|
"tensorflow/lite/objc"
|
||||||
],
|
],
|
||||||
"workspaceRoot" : "../../../../.."
|
"workspaceRoot" : "../../../.."
|
||||||
}
|
}
|
@ -20,7 +20,7 @@ Pod::Spec.new do |s|
|
|||||||
s.static_framework = true
|
s.static_framework = true
|
||||||
|
|
||||||
tfl_dir = 'tensorflow/lite/'
|
tfl_dir = 'tensorflow/lite/'
|
||||||
objc_dir = tfl_dir + 'experimental/objc/'
|
objc_dir = tfl_dir + 'objc/'
|
||||||
|
|
||||||
s.pod_target_xcconfig = {
|
s.pod_target_xcconfig = {
|
||||||
'HEADER_SEARCH_PATHS' =>
|
'HEADER_SEARCH_PATHS' =>
|
@ -12,7 +12,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLCoreMLDelegate.h"
|
#import "tensorflow/lite/objc/apis/TFLCoreMLDelegate.h"
|
||||||
|
|
||||||
#ifdef COCOAPODS
|
#ifdef COCOAPODS
|
||||||
@import TensorFlowLiteCCoreML;
|
@import TensorFlowLiteCCoreML;
|
@ -12,7 +12,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLDelegate.h"
|
#import "tensorflow/lite/objc/apis/TFLDelegate.h"
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLInterpreter.h"
|
#import "tensorflow/lite/objc/apis/TFLInterpreter.h"
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
@ -12,7 +12,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLInterpreter.h"
|
#import "tensorflow/lite/objc/apis/TFLInterpreter.h"
|
||||||
|
|
||||||
@class TFLTensor;
|
@class TFLTensor;
|
||||||
|
|
@ -12,16 +12,16 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLInterpreter.h"
|
#import "tensorflow/lite/objc/apis/TFLInterpreter.h"
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#import "TFLErrorUtil.h"
|
#import "TFLErrorUtil.h"
|
||||||
#import "TFLQuantizationParameters+Internal.h"
|
#import "TFLQuantizationParameters+Internal.h"
|
||||||
#import "TFLTensor+Internal.h"
|
#import "TFLTensor+Internal.h"
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLDelegate.h"
|
#import "tensorflow/lite/objc/apis/TFLDelegate.h"
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLInterpreterOptions.h"
|
#import "tensorflow/lite/objc/apis/TFLInterpreterOptions.h"
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLTensor.h"
|
#import "tensorflow/lite/objc/apis/TFLTensor.h"
|
||||||
|
|
||||||
#include "tensorflow/lite/c/c_api.h"
|
#include "tensorflow/lite/c/c_api.h"
|
||||||
#include "tensorflow/lite/delegates/xnnpack/xnnpack_delegate.h"
|
#include "tensorflow/lite/delegates/xnnpack/xnnpack_delegate.h"
|
@ -12,7 +12,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLInterpreterOptions.h"
|
#import "tensorflow/lite/objc/apis/TFLInterpreterOptions.h"
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
@ -12,7 +12,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLMetalDelegate.h"
|
#import "tensorflow/lite/objc/apis/TFLMetalDelegate.h"
|
||||||
|
|
||||||
#ifdef COCOAPODS
|
#ifdef COCOAPODS
|
||||||
@import TensorFlowLiteCMetal;
|
@import TensorFlowLiteCMetal;
|
@ -12,7 +12,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLQuantizationParameters.h"
|
#import "tensorflow/lite/objc/apis/TFLQuantizationParameters.h"
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
@ -12,7 +12,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLQuantizationParameters.h"
|
#import "tensorflow/lite/objc/apis/TFLQuantizationParameters.h"
|
||||||
|
|
||||||
#import "TFLQuantizationParameters+Internal.h"
|
#import "TFLQuantizationParameters+Internal.h"
|
||||||
|
|
@ -12,7 +12,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLTensor.h"
|
#import "tensorflow/lite/objc/apis/TFLTensor.h"
|
||||||
|
|
||||||
@class TFLInterpreter;
|
@class TFLInterpreter;
|
||||||
|
|
@ -12,13 +12,13 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLTensor.h"
|
#import "tensorflow/lite/objc/apis/TFLTensor.h"
|
||||||
|
|
||||||
#import "TFLErrorUtil.h"
|
#import "TFLErrorUtil.h"
|
||||||
#import "TFLInterpreter+Internal.h"
|
#import "TFLInterpreter+Internal.h"
|
||||||
#import "TFLTensor+Internal.h"
|
#import "TFLTensor+Internal.h"
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLInterpreter.h"
|
#import "tensorflow/lite/objc/apis/TFLInterpreter.h"
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
@ -15,8 +15,8 @@
|
|||||||
#ifdef COCOAPODS
|
#ifdef COCOAPODS
|
||||||
@import TFLTensorFlowLite;
|
@import TFLTensorFlowLite;
|
||||||
#else
|
#else
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLCoreMLDelegate.h"
|
#import "tensorflow/lite/objc/apis/TFLCoreMLDelegate.h"
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLTensorFlowLite.h"
|
#import "tensorflow/lite/objc/apis/TFLTensorFlowLite.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#import <XCTest/XCTest.h>
|
#import <XCTest/XCTest.h>
|
@ -12,7 +12,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLInterpreterOptions.h"
|
#import "tensorflow/lite/objc/apis/TFLInterpreterOptions.h"
|
||||||
|
|
||||||
#import <XCTest/XCTest.h>
|
#import <XCTest/XCTest.h>
|
||||||
|
|
@ -12,7 +12,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLTensorFlowLite.h"
|
#import "tensorflow/lite/objc/apis/TFLTensorFlowLite.h"
|
||||||
|
|
||||||
#import <XCTest/XCTest.h>
|
#import <XCTest/XCTest.h>
|
||||||
|
|
@ -15,8 +15,8 @@
|
|||||||
#ifdef COCOAPODS
|
#ifdef COCOAPODS
|
||||||
@import TFLTensorFlowLite;
|
@import TFLTensorFlowLite;
|
||||||
#else
|
#else
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLMetalDelegate.h"
|
#import "tensorflow/lite/objc/apis/TFLMetalDelegate.h"
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLTensorFlowLite.h"
|
#import "tensorflow/lite/objc/apis/TFLTensorFlowLite.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#import <Metal/MTLDevice.h>
|
#import <Metal/MTLDevice.h>
|
@ -12,11 +12,11 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/apis/TFLQuantizationParameters.h"
|
#import "tensorflow/lite/objc/apis/TFLQuantizationParameters.h"
|
||||||
|
|
||||||
#import <XCTest/XCTest.h>
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "tensorflow/lite/experimental/objc/sources/TFLQuantizationParameters+Internal.h"
|
#import "tensorflow/lite/objc/sources/TFLQuantizationParameters+Internal.h"
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
# TensorFlow Lite for Swift
|
# TensorFlow Lite for Swift
|
||||||
|
|
||||||
load("//tensorflow/lite:special_rules.bzl", "ios_visibility_whitelist", "tflite_ios_lab_runner")
|
load("//tensorflow/lite:special_rules.bzl", "ios_visibility_whitelist", "tflite_ios_lab_runner")
|
||||||
load("//tensorflow/lite/experimental/ios:ios.bzl", "TFL_DEFAULT_TAGS", "TFL_DISABLED_SANITIZER_TAGS", "TFL_MINIMUM_OS_VERSION")
|
load("//tensorflow/lite/ios:ios.bzl", "TFL_DEFAULT_TAGS", "TFL_DISABLED_SANITIZER_TAGS", "TFL_MINIMUM_OS_VERSION")
|
||||||
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_static_framework", "ios_unit_test")
|
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_static_framework", "ios_unit_test")
|
||||||
load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")
|
load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ swift_library(
|
|||||||
tags = TFL_DEFAULT_TAGS + ["nobuilder"],
|
tags = TFL_DEFAULT_TAGS + ["nobuilder"],
|
||||||
visibility = ios_visibility_whitelist(),
|
visibility = ios_visibility_whitelist(),
|
||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/lite/experimental/ios:tensorflow_lite_c",
|
"//tensorflow/lite/ios:tensorflow_lite_c",
|
||||||
] + select({
|
] + select({
|
||||||
":use_coreml_delegate": [
|
":use_coreml_delegate": [
|
||||||
"//tensorflow/lite/experimental/delegates/coreml:coreml_delegate",
|
"//tensorflow/lite/experimental/delegates/coreml:coreml_delegate",
|
||||||
@ -86,15 +86,15 @@ swift_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/lite/delegates/gpu:metal_delegate",
|
"//tensorflow/lite/delegates/gpu:metal_delegate",
|
||||||
"//tensorflow/lite/experimental/delegates/coreml:coreml_delegate",
|
"//tensorflow/lite/experimental/delegates/coreml:coreml_delegate",
|
||||||
"//tensorflow/lite/experimental/ios:tensorflow_lite_c",
|
"//tensorflow/lite/ios:tensorflow_lite_c",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
# bazel build -c opt --config=ios_fat //tensorflow/lite/experimental/swift:TensorFlowLite_framework
|
# bazel build -c opt --config=ios_fat //tensorflow/lite/swift:TensorFlowLite_framework
|
||||||
ios_static_framework(
|
ios_static_framework(
|
||||||
name = "TensorFlowLite_framework",
|
name = "TensorFlowLite_framework",
|
||||||
avoid_deps = [
|
avoid_deps = [
|
||||||
"//tensorflow/lite/experimental/ios:tensorflow_lite_c",
|
"//tensorflow/lite/ios:tensorflow_lite_c",
|
||||||
],
|
],
|
||||||
bundle_name = "TensorFlowLite",
|
bundle_name = "TensorFlowLite",
|
||||||
minimum_os_version = TFL_MINIMUM_OS_VERSION,
|
minimum_os_version = TFL_MINIMUM_OS_VERSION,
|
@ -42,7 +42,7 @@ In your `BUILD` file, add the `TensorFlowLite` dependency to your target:
|
|||||||
```python
|
```python
|
||||||
swift_library(
|
swift_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/lite/experimental/swift:TensorFlowLite",
|
"//tensorflow/lite/swift:TensorFlowLite",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
@ -56,25 +56,25 @@ import TensorFlowLite
|
|||||||
Build the `TensorFlowLite` Swift library target:
|
Build the `TensorFlowLite` Swift library target:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
bazel build tensorflow/lite/experimental/swift:TensorFlowLite
|
bazel build tensorflow/lite/swift:TensorFlowLite
|
||||||
```
|
```
|
||||||
|
|
||||||
Build the `Tests` target:
|
Build the `Tests` target:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
bazel test tensorflow/lite/experimental/swift:Tests --swiftcopt=-enable-testing
|
bazel test tensorflow/lite/swift:Tests --swiftcopt=-enable-testing
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: `--swiftcopt=-enable-testing` is required for optimized builds (`-c opt`).
|
Note: `--swiftcopt=-enable-testing` is required for optimized builds (`-c opt`).
|
||||||
|
|
||||||
#### Generate the Xcode project using Tulsi
|
#### Generate the Xcode project using Tulsi
|
||||||
|
|
||||||
Open the `//tensorflow/lite/experimental/swift/TensorFlowLite.tulsiproj` using
|
Open the `//tensorflow/lite/swift/TensorFlowLite.tulsiproj` using
|
||||||
the [TulsiApp](https://github.com/bazelbuild/tulsi)
|
the [TulsiApp](https://github.com/bazelbuild/tulsi)
|
||||||
or by running the
|
or by running the
|
||||||
[`generate_xcodeproj.sh`](https://github.com/bazelbuild/tulsi/blob/master/src/tools/generate_xcodeproj.sh)
|
[`generate_xcodeproj.sh`](https://github.com/bazelbuild/tulsi/blob/master/src/tools/generate_xcodeproj.sh)
|
||||||
script from the root `tensorflow` directory:
|
script from the root `tensorflow` directory:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
generate_xcodeproj.sh --genconfig tensorflow/lite/experimental/swift/TensorFlowLite.tulsiproj:TensorFlowLite --outputfolder ~/path/to/generated/TensorFlowLite.xcodeproj
|
generate_xcodeproj.sh --genconfig tensorflow/lite/swift/TensorFlowLite.tulsiproj:TensorFlowLite --outputfolder ~/path/to/generated/TensorFlowLite.xcodeproj
|
||||||
```
|
```
|
@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"additionalFilePaths" : [
|
"additionalFilePaths" : [
|
||||||
"tensorflow/lite/experimental/swift/BUILD"
|
"tensorflow/lite/swift/BUILD"
|
||||||
],
|
],
|
||||||
"buildTargets" : [
|
"buildTargets" : [
|
||||||
"//tensorflow/lite/experimental/swift:TensorFlowLiteAllDelegates",
|
"//tensorflow/lite/swift:TensorFlowLiteAllDelegates",
|
||||||
"//tensorflow/lite/experimental/swift:Tests",
|
"//tensorflow/lite/swift:Tests",
|
||||||
"//tensorflow/lite/experimental/swift:TestsLibrary"
|
"//tensorflow/lite/swift:TestsLibrary"
|
||||||
],
|
],
|
||||||
"optionSet" : {
|
"optionSet" : {
|
||||||
"BazelBuildOptionsDebug" : {
|
"BazelBuildOptionsDebug" : {
|
||||||
@ -54,8 +54,8 @@
|
|||||||
"projectName" : "TensorFlowLite",
|
"projectName" : "TensorFlowLite",
|
||||||
"sourceFilters" : [
|
"sourceFilters" : [
|
||||||
"tensorflow/lite/c",
|
"tensorflow/lite/c",
|
||||||
"tensorflow/lite/experimental/swift",
|
"tensorflow/lite/swift",
|
||||||
"tensorflow/lite/experimental/swift/Sources",
|
"tensorflow/lite/swift/Sources",
|
||||||
"tensorflow/lite/experimental/swift/Tests"
|
"tensorflow/lite/swift/Tests"
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -11,7 +11,7 @@
|
|||||||
},
|
},
|
||||||
"projectName" : "TensorFlowLite",
|
"projectName" : "TensorFlowLite",
|
||||||
"packages" : [
|
"packages" : [
|
||||||
"tensorflow/lite/experimental/swift"
|
"tensorflow/lite/swift"
|
||||||
],
|
],
|
||||||
"workspaceRoot" : "../../../../.."
|
"workspaceRoot" : "../../../.."
|
||||||
}
|
}
|
@ -19,7 +19,7 @@ Pod::Spec.new do |s|
|
|||||||
s.static_framework = true
|
s.static_framework = true
|
||||||
|
|
||||||
tfl_dir = 'tensorflow/lite/'
|
tfl_dir = 'tensorflow/lite/'
|
||||||
swift_dir = tfl_dir + 'experimental/swift/'
|
swift_dir = tfl_dir + 'swift/'
|
||||||
|
|
||||||
s.default_subspec = 'Core'
|
s.default_subspec = 'Core'
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
load("@bazel_skylib//rules:build_test.bzl", "build_test")
|
load("@bazel_skylib//rules:build_test.bzl", "build_test")
|
||||||
load("//tensorflow/lite/experimental/ios:ios.bzl", "TFL_MINIMUM_OS_VERSION")
|
load("//tensorflow/lite/ios:ios.bzl", "TFL_MINIMUM_OS_VERSION")
|
||||||
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_static_framework")
|
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_static_framework")
|
||||||
|
|
||||||
package(
|
package(
|
||||||
|
Loading…
Reference in New Issue
Block a user