diff options
Diffstat (limited to 'tensorflow/examples/android/README.md')
-rw-r--r-- | tensorflow/examples/android/README.md | 118 |
1 files changed, 62 insertions, 56 deletions
diff --git a/tensorflow/examples/android/README.md b/tensorflow/examples/android/README.md index f9881287cd..883f8e664f 100644 --- a/tensorflow/examples/android/README.md +++ b/tensorflow/examples/android/README.md @@ -8,10 +8,11 @@ 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 @@ -33,6 +34,12 @@ 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%"> @@ -51,20 +58,22 @@ for more details. ## Running the Demo -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. +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. 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' @@ -77,8 +86,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. @@ -104,50 +113,51 @@ 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 @@ -162,27 +172,23 @@ 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 |