aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/examples/android/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/examples/android/README.md')
-rw-r--r--tensorflow/examples/android/README.md118
1 files changed, 56 insertions, 62 deletions
diff --git a/tensorflow/examples/android/README.md b/tensorflow/examples/android/README.md
index 883f8e664f..f9881287cd 100644
--- a/tensorflow/examples/android/README.md
+++ b/tensorflow/examples/android/README.md
@@ -8,11 +8,10 @@ devices.
The demos in this folder are designed to give straightforward samples of using
TensorFlow in mobile applications.
-Inference is done using the [TensorFlow Android Inference
-Interface](../../../tensorflow/contrib/android), which may be built separately
-if you want a standalone library to drop into your existing application. Object
-tracking and efficient YUV -> RGB conversion are handled by
-`libtensorflow_demo.so`.
+Inference is done using the [TensorFlow Android Inference Interface](../../../tensorflow/contrib/android),
+which may be built separately if you want a standalone library to drop into your
+existing application. Object tracking and efficient YUV -> RGB conversion are
+handled by `libtensorflow_demo.so`.
A device running Android 5.0 (API 21) or higher is required to run the demo due
to the use of the camera2 API, although the native libraries themselves can run
@@ -34,12 +33,6 @@ on API >= 14 devices.
Uses a model based on [A Learned Representation For Artistic
Style](https://arxiv.org/abs/1610.07629) to restyle the camera preview
image to that of a number of different artists.
-4. [TF
- Speech](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/android/src/org/tensorflow/demo/SpeechActivity.java):
- Runs a simple speech recognition model built by the [audio training
- tutorial](https://www.tensorflow.org/tutorials/image_retraining). Listens
- for a small set of words, and highlights them in the UI when they are
- recognized.
<img src="sample_images/classify1.jpg" width="30%"><img src="sample_images/stylize1.jpg" width="30%"><img src="sample_images/detect1.jpg" width="30%">
@@ -58,22 +51,20 @@ for more details.
## Running the Demo
-Once the app is installed it can be started via the "TF Classify", "TF Detect",
-"TF Stylize", and "TF Speech" icons, which have the orange TensorFlow logo as
-their icon.
+Once the app is installed it can be started via the "TF Classify", "TF Detect"
+and "TF Stylize" icons, which have the orange TensorFlow logo as their icon.
While running the activities, pressing the volume keys on your device will
-toggle debug visualizations on/off, rendering additional info to the screen that
-may be useful for development purposes.
+toggle debug visualizations on/off, rendering additional info to the screen
+that may be useful for development purposes.
## Building in Android Studio using the TensorFlow AAR from JCenter
The simplest way to compile the demo app yourself, and try out changes to the
-project code is to use AndroidStudio. Simply set this `android` directory as the
-project root.
+project code is to use AndroidStudio. Simply set this `android` directory as the project root.
-Then edit the `build.gradle` file and change the value of `nativeBuildSystem` to
-`'none'` so that the project is built in the simplest way possible:
+Then edit the `build.gradle` file and change the value of `nativeBuildSystem`
+to `'none'` so that the project is built in the simplest way possible:
```None
def nativeBuildSystem = 'none'
@@ -86,8 +77,8 @@ Note: Currently, in this build mode, YUV -> RGB is done using a less efficient
Java implementation, and object tracking is not available in the "TF Detect"
activity. Setting the build system to `'cmake'` currently only builds
`libtensorflow_demo.so`, which provides fast YUV -> RGB conversion and object
-tracking, while still acquiring TensorFlow support via the downloaded AAR, so it
-may be a lightweight way to enable these features.
+tracking, while still acquiring TensorFlow support via the downloaded AAR, so
+it may be a lightweight way to enable these features.
For any project that does not include custom low level TensorFlow code, this is
likely sufficient.
@@ -113,51 +104,50 @@ protobuf compilation.
NOTE: Bazel does not currently support building for Android on Windows. Full
support for gradle/cmake builds is coming soon, but in the meantime we suggest
-that Windows users download the [prebuilt
-binaries](https://ci.tensorflow.org/view/Nightly/job/nightly-android/) instead.
+that Windows users download the
+[prebuilt binaries](https://ci.tensorflow.org/view/Nightly/job/nightly-android/)
+instead.
##### Install Bazel and Android Prerequisites
-Bazel is the primary build system for TensorFlow. To build with Bazel, it and
-the Android NDK and SDK must be installed on your system.
-
-1. Install the latest version of Bazel as per the instructions [on the Bazel
- website](https://bazel.build/versions/master/docs/install.html).
-2. The Android NDK is required to build the native (C/C++) TensorFlow code. The
- current recommended version is 12b, which may be found
- [here](https://developer.android.com/ndk/downloads/older_releases.html#ndk-12b-downloads).
-3. The Android SDK and build tools may be obtained
- [here](https://developer.android.com/tools/revisions/build-tools.html), or
- alternatively as part of [Android
- Studio](https://developer.android.com/studio/index.html). Build tools API >=
- 23 is required to build the TF Android demo (though it will run on API >= 21
- devices).
+Bazel is the primary build system for TensorFlow. To build with Bazel,
+it and the Android NDK and SDK must be installed on your system.
+
+1. Install the latest version of Bazel as per the instructions [on the Bazel website](https://bazel.build/versions/master/docs/install.html).
+2. The Android NDK is required to build the native (C/C++) TensorFlow code.
+ The current recommended version is 12b, which may be found
+ [here](https://developer.android.com/ndk/downloads/older_releases.html#ndk-12b-downloads).
+3. The Android SDK and build tools may be obtained
+ [here](https://developer.android.com/tools/revisions/build-tools.html),
+ or alternatively as part of
+ [Android Studio](https://developer.android.com/studio/index.html). Build
+ tools API >= 23 is required to build the TF Android demo (though it will
+ run on API >= 21 devices).
##### Edit WORKSPACE
-The Android entries in
-[`<workspace_root>/WORKSPACE`](../../../WORKSPACE#L19-L36) must be uncommented
-with the paths filled in appropriately depending on where you installed the NDK
-and SDK. Otherwise an error such as: "The external label
-'//external:android/sdk' is not bound to anything" will be reported.
+The Android entries in [`<workspace_root>/WORKSPACE`](../../../WORKSPACE#L19-L36)
+must be uncommented with the paths filled in appropriately depending on where
+you installed the NDK and SDK. Otherwise an error such as:
+"The external label '//external:android/sdk' is not bound to anything" will
+be reported.
-Also edit the API levels for the SDK in WORKSPACE to the highest level you have
-installed in your SDK. This must be >= 23 (this is completely independent of the
-API level of the demo, which is defined in AndroidManifest.xml). The NDK API
-level may remain at 14.
+Also edit the API levels for the SDK in WORKSPACE to the highest level you
+have installed in your SDK. This must be >= 23 (this is completely independent
+of the API level of the demo, which is defined in AndroidManifest.xml).
+The NDK API level may remain at 14.
##### Install Model Files (optional)
-The TensorFlow `GraphDef`s that contain the model definitions and weights are
-not packaged in the repo because of their size. They are downloaded
+The TensorFlow `GraphDef`s that contain the model definitions and weights
+are not packaged in the repo because of their size. They are downloaded
automatically and packaged with the APK by Bazel via a new_http_archive defined
-in `WORKSPACE` during the build process, and by Gradle via
-download-models.gradle.
+in `WORKSPACE` during the build process, and by Gradle via download-models.gradle.
-**Optional**: If you wish to place the models in your assets manually, remove
-all of the `model_files` entries from the `assets` list in `tensorflow_demo`
-found in the `[BUILD](BUILD)` file. Then download and extract the archives
-yourself to the `assets` directory in the source tree:
+**Optional**: If you wish to place the models in your assets manually,
+remove all of the `model_files` entries from the `assets`
+list in `tensorflow_demo` found in the `[BUILD](BUILD)` file. Then download
+and extract the archives yourself to the `assets` directory in the source tree:
```bash
BASE_URL=https://storage.googleapis.com/download.tensorflow.org/models
@@ -172,23 +162,27 @@ This will extract the models and their associated metadata files to the local
assets/ directory.
If you are using Gradle, make sure to remove download-models.gradle reference
-from build.gradle after your manually download models; otherwise gradle might
-download models again and overwrite your models.
+from build.gradle after your manually download models; otherwise gradle
+might download models again and overwrite your models.
##### Build
-After editing your WORKSPACE file to update the SDK/NDK configuration, you may
-build the APK. Run this from your workspace root:
+After editing your WORKSPACE file to update the SDK/NDK configuration,
+you may build the APK. Run this from your workspace root:
```bash
bazel build -c opt //tensorflow/examples/android:tensorflow_demo
```
+If you get build errors about protocol buffers, run
+`git submodule update --init` and make sure that you've modified your WORKSPACE
+file as instructed, then try building again.
+
##### Install
-Make sure that adb debugging is enabled on your Android 5.0 (API 21) or later
-device, then after building use the following command from your workspace root
-to install the APK:
+Make sure that adb debugging is enabled on your Android 5.0 (API 21) or
+later device, then after building use the following command from your workspace
+root to install the APK:
```bash
adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk