diff options
Diffstat (limited to 'tensorflow/examples/android/README.md')
-rw-r--r-- | tensorflow/examples/android/README.md | 118 |
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 |