GPU Accelerated TensorFlow Lite applications on Android NDK.
Run and measure the performance of TensorFlow Lite GPU Delegate on Android NDK.
1. Applications
Blazeface
DBFace
Age Gender Estimation
- Detect faces and estimage their Age and Gender
- based on pretrained model of https://github.com/yu4u/age-gender-estimation
Image Classification
Object Detection
Hair Segmentation
3D Handpose
Iris Detection
Posenet
Depth Estimation (DenseDepth)
- Depth Estimation from single images.
- based on pretrained model of https://github.com/ialhashim/DenseDepth
Semantic Segmentation
Selfie to Anime
- Generate anime-style face image.
- based on pretrained model of https://github.com/margaretmz/Selfie2Anime-with-TFLite
Anime GAN
- Transform photos into anime style images.
- based on pretrained model of https://github.com/TachibanaYoshino/AnimeGANv2
U^2-Net portrait drawing
- Human portrait drawing by U^2-Net.
Artistic Style Transfer
MIRNet
- Enhance low-light images upto a great extent.
- based on pretrained model of https://github.com/sayakpaul/MIRNet-TFLite
2. How to Build & Run
2.1 setup environment
- Download and install Android NDK.
$ mkdir ~/Android/
$ mv ~/Download/android-ndk-r20b-linux-x86_64.zip ~/Android
$ cd ~/Android
$ unzip android-ndk-r20b-linux-x86_64.zip
- Download and install bazel.
$ wget https://github.com/bazelbuild/bazel/releases/download/3.1.0/bazel-3.1.0-installer-linux-x86_64.sh
$ chmod 755 bazel-3.1.0-installer-linux-x86_64.sh
$ sudo ./bazel-3.1.0-installer-linux-x86_64.sh
2.2 build TensorFlow Lite library and GPU Delegate library
- run the build script to build TensorFlow Library
$ mkdir ~/work
$ git clone https://github.com/terryky/android_tflite.git
$ cd android_tflite/third_party/
$ ./build_libtflite_r2.4_android.sh
(Tensorflow configure will start after a while. Please enter according to your environment)
$ ls -l tensorflow/bazel-bin/tensorflow/lite/
-r-xr-xr-x 1 terryky terryky 3118552 Dec 26 19:58 libtensorflowlite.so*
$ ls -l tensorflow/bazel-bin/tensorflow/lite/delegates/gpu/
-r-xr-xr-x 1 terryky terryky 80389344 Dec 26 19:59 libtensorflowlite_gpu_delegate.so*
2.3 Download the needed assets
$ cd ~/work/android_tflite
$ ./download_all_assets.sh
2.4 Build Android Applications
- Download and install Android Studio.
- Start Android Studio.
$ cd ${ANDROID_STUDIO_INSTALL_DIR}/android-studio/bin/
$ ./studio.sh
- Install NDK 20.0 by SDK Manager of Android Studio.
- Open application folder (eg.
~/work/android_tflite/tflite_posenet
). - Build and Run.
3. Tested Environment
Host PC | Target Device |
---|---|
x86_64 | arm64-v8a |
Ubuntu 18.04.4 LTS | Android 9 (API Level 28) |
Android NDK r20b |
4. Related Articles
5. Acknowledgements
- https://github.com/google/mediapipe
- https://github.com/yu4u/age-gender-estimation
- https://github.com/TachibanaYoshino/AnimeGANv2
- https://github.com/openvinotoolkit/open_model_zoo/tree/master/demos/python_demos/human_pose_estimation_3d_demo
- https://github.com/ialhashim/DenseDepth
- https://github.com/MaybeShewill-CV/bisenetv2-tensorflow
- https://github.com/margaretmz/Selfie2Anime-with-TFLite
- https://github.com/NathanUA/U-2-Net
- https://tfhub.dev/sayakpaul/lite-model/east-text-detector/int8/1
- https://github.com/PINTO0309/PINTO_model_zoo