README.md
1# TensorFlow Lite Support
2
3TFLite Support is a toolkit that helps users to develop ML and deploy TFLite
4models onto mobile devices. It works cross-Platform and is supported on Java,
5C++ (WIP), and Swift (WIP). The TFLite Support project consists of the following
6major components:
7
8* **TFLite Support Library**: a cross-platform library that helps to
9 deploy TFLite models onto mobile devices.
10* **TFLite Model Metadata**: (metadata populator and metadata extractor
11 library): includes both human and machine readable information about what a
12 model does and how to use the model.
13* **TFLite Support Codegen Tool**: an executable that generates model wrapper
14 automatically based on the Support Library and the metadata.
15* **TFLite Support Task Library**: a flexible and ready-to-use library for
16 common machine learning model types, such as classification and detection,
17 client can also build their own native/Android/iOS inference API on Task
18 Library infra.
19
20TFLite Support library serves different tiers of deployment requirements from
21easy onboarding to fully customizable. There are three major use cases that
22TFLite Support targets at:
23
24* **Provide ready-to-use APIs for users to interact with the model**. \
25 This is achieved by the TFLite Support Codegen tool, where users can get the
26 model interface (contains ready-to-use APIs) simply by passing the model to
27 the codegen tool. The automatic codegen strategy is designed based on the
28 TFLite metadata.
29
30* **Provide optimized model interface for popular ML tasks**. \
31 The model interfaces provided by the TFLite Support Task Library are
32 specifically optimized compared to the codegen version in terms of both
33 usability and performance. Users can also swap their own custom models with
34 the default models in each task.
35
36* **Provide the flexibility to customize model interface and build inference
37 pipelines**. \
38 The TFLite Support Util Library contains varieties of util methods and data
39 structures to perform pre/post processing and data conversion. It is also
40 designed to match the behavior of TensorFlow modules, such as TF.Image and
41 TF.text, ensuring consistency from training to inferencing.
42
43See the
44[documentation on tensorflow.org](https://www.tensorflow.org/lite/inference_with_metadata/overview)
45for more instruction and examples.
46
47## Build Instructions
48
49We use Bazel to build the project. When you're building the Java (Android)
50Utils, you need to set up following env variables correctly:
51
52* `ANDROID_NDK_HOME`
53* `ANDROID_SDK_HOME`
54* `ANDROID_NDK_API_LEVEL`
55* `ANDROID_SDK_API_LEVEL`
56* `ANDROID_BUILD_TOOLS_VERSION`
57
58## Contact us
59
60Let us know what you think about TFLite Support by creating a
61[new Github issue](https://github.com/tensorflow/tflite-support/issues/new), or
62email us at tflite-support-team@google.com.
63