If you're an experienced ML developer and the pre-built TensorFlow Lite library doesn't meet your needs, you can use a custom TensorFlow Lite build with ML Kit. For example, you may want to add custom ops.
Prerequisites
- A working TensorFlow Lite build environment
- A checkout of TensorFlow Lite 1.10.1
You can check out the correct version using Git:
git checkout -b work
git reset --hard tflite-v1.10.1
git cherry-pick 4dcfddc5d12018a5a0fdca652b9221ed95e9eb23
Building the Tensorflow Lite library
- Build Tensorflow Lite (with your modifications) following the standard instructions
- Build the framework:
tensorflow/lite/lib_package/create_ios_frameworks.sh
The generated framework can be found at tensorflow/lite/gen/ios_frameworks/tensorflow_lite.framework.zip
Creating a local pod
- Create a directory for your local pod
- Run
pod lib create TensorFlowLite
in the directory you created - Create a
Frameworks
directory inside theTensorFlowLite
directory - Unzip the
tensorflow_lite.framework.zip
file generated above - Copy the unzipped
tensorflow_lite.framework
toTensorFlowLite/Frameworks
- Modify the generated
TensorFlowLite/TensorFlowLite.podspec
to reference the library:
Pod::Spec.new do |s|
s.name = 'TensorFlowLite'
s.version = '0.1.7' # Version must match.
s.ios.deployment_target = '9.0'
# ... make other changes as desired
internal_pod_root = Pathname.pwd
s.frameworks = 'Accelerate'
s.libraries = 'c++'
s.vendored_frameworks = 'Frameworks/tensorflow_lite.framework'
s.pod_target_xcconfig = {
'SWIFT_VERSION' => '4.0',
'INTERNAL_POD_ROOT' => "#{internal_pod_root}",
'HEADER_SEARCH_PATHS' => "$(inherited) '${INTERNAL_POD_ROOT}/Frameworks/tensorflow_lite.framework/Headers'",
'OTHER_LDFLAGS' => "-force_load '${INTERNAL_POD_ROOT}/Frameworks/tensorflow_lite.framework/tensorflow_lite'"
}
end
Referencing the custom pod in your project
You can include the custom pod by referencing it directly from your app's
Podfile
:
pod 'Firebase/MLModelInterpreter'
pod 'TensorFlowLite', :path => 'path/to/your/TensorflowLite'
For other options for managing private pods, see
Private Pods in
the Cocoapods documentation. Note that the version must exactly match, and you
should reference this version when including the pod from your
private repository, e.g. pod 'TensorFlowLite', "1.10.1"
.