Dokumen ini menjelaskan cara membuat library Android TensorFlow Lite sendiri. Biasanya, Anda tidak perlu membuat library Android TensorFlow Lite secara lokal. Jika Anda hanya ingin menggunakannya, lihat panduan memulai Android untuk detail selengkapnya tentang cara menggunakannya di proyek Android Anda.
Gunakan Snapshot Malam Hari
Untuk menggunakan snapshot malam, tambahkan repo berikut ke konfigurasi root Gradle build Anda.
allprojects {
repositories { // should be already there
mavenCentral() // should be already there
maven { // add this repo to use snapshots
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
}
}
Bangun TensorFlow Lite secara lokal
Dalam beberapa kasus, Anda mungkin ingin menggunakan build lokal TensorFlow Lite. Misalnya, Anda mungkin membuat biner kustom yang menyertakan operasi yang dipilih dari TensorFlow , atau Anda mungkin ingin membuat perubahan lokal pada TensorFlow Lite.
Siapkan lingkungan build menggunakan Docker
- Unduh file Docker. Dengan mengunduh file Docker, Anda setuju bahwa persyaratan layanan berikut mengatur penggunaan Anda terhadapnya:
Dengan mengeklik untuk menerima, Anda dengan ini setuju bahwa semua penggunaan Android Studio dan Android Native Development Kit akan diatur oleh Perjanjian Lisensi Kit Pengembangan Perangkat Lunak Android yang tersedia di https://developer.android.com/studio/terms (URL tersebut dapat diperbarui atau diubah oleh Google dari waktu ke waktu).
Anda harus menyetujui persyaratan layanan untuk mengunduh file. Akui- Anda dapat mengubah versi Android SDK atau NDK secara opsional. Letakkan file Docker yang diunduh di folder kosong dan buat gambar buruh pelabuhan Anda dengan menjalankan:
docker build . -t tflite-builder -f tflite-android.Dockerfile
- Mulai wadah buruh pelabuhan secara interaktif dengan memasang folder Anda saat ini ke /host_dir di dalam wadah (perhatikan bahwa /tensorflow_src adalah repositori TensorFlow di dalam wadah):
docker run -it -v $PWD:/host_dir tflite-builder bash
Jika Anda menggunakan PowerShell di Windows, ganti "$PWD" dengan "pwd".
Jika Anda ingin menggunakan repositori TensorFlow pada host, mount direktori host tersebut sebagai gantinya (-v hostDir:/host_dir).
- Setelah Anda berada di dalam wadah, Anda dapat menjalankan yang berikut ini untuk mengunduh alat dan pustaka Android tambahan (perhatikan bahwa Anda mungkin perlu menerima lisensi):
sdkmanager \
"build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
"platform-tools" \
"platforms;android-${ANDROID_API_LEVEL}"
Sekarang Anda harus melanjutkan ke bagian Configure WORKSPACE dan .bazelrc untuk mengonfigurasi pengaturan build.
Setelah Anda selesai membangun perpustakaan, Anda dapat menyalinnya ke /host_dir di dalam wadah sehingga Anda dapat mengaksesnya di host.
Siapkan lingkungan build tanpa Docker
Instal Bazel dan Prasyarat Android
Bazel adalah sistem build utama untuk TensorFlow. Untuk membangunnya, Anda harus menginstalnya dan Android NDK dan SDK di sistem Anda.
- Instal versi terbaru dari sistem pembangunan Bazel .
- Android NDK diperlukan untuk membuat kode TensorFlow Lite asli (C/C++). Versi yang direkomendasikan saat ini adalah 19c, yang dapat ditemukan di sini .
- SDK Android dan alat pembangunan dapat diperoleh di sini , atau sebagai alternatif sebagai bagian dari Android Studio . Build tools API >= 23 adalah versi yang direkomendasikan untuk membuat TensorFlow Lite.
Konfigurasi WORKSPACE dan .bazelrc
Ini adalah langkah konfigurasi satu kali yang diperlukan untuk membangun perpustakaan TF Lite. Jalankan skrip ./configure
di direktori checkout root TensorFlow, dan jawab "Ya" saat skrip meminta untuk mengonfigurasi ./WORKSPACE
untuk build Android secara interaktif. Skrip akan mencoba mengonfigurasi pengaturan menggunakan variabel lingkungan berikut:
-
ANDROID_SDK_HOME
-
ANDROID_SDK_API_LEVEL
-
ANDROID_NDK_HOME
-
ANDROID_NDK_API_LEVEL
Jika variabel ini tidak disetel, variabel tersebut harus disediakan secara interaktif di prompt skrip. Konfigurasi yang berhasil akan menghasilkan entri yang mirip dengan berikut ini di file .tf_configure.bazelrc
di folder root:
build --action_env ANDROID_NDK_HOME="/usr/local/android/android-ndk-r19c"
build --action_env ANDROID_NDK_API_LEVEL="21"
build --action_env ANDROID_BUILD_TOOLS_VERSION="28.0.3"
build --action_env ANDROID_SDK_API_LEVEL="23"
build --action_env ANDROID_SDK_HOME="/usr/local/android/android-sdk-linux"
Bangun dan pasang
Setelah Bazel dikonfigurasi dengan benar, Anda dapat membuat TensorFlow Lite AAR dari direktori checkout root sebagai berikut:
bazel build -c opt --fat_apk_cpu=x86,x86_64,arm64-v8a,armeabi-v7a \
--host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
//tensorflow/lite/java:tensorflow-lite
Ini akan menghasilkan file AAR di bazel-bin/tensorflow/lite/java/
. Perhatikan bahwa ini membangun AAR "gemuk" dengan beberapa arsitektur berbeda; jika Anda tidak membutuhkan semuanya, gunakan subset yang sesuai untuk lingkungan penerapan Anda.
Anda dapat membuat file AAR yang lebih kecil yang hanya menargetkan sekumpulan model sebagai berikut:
bash tensorflow/lite/tools/build_aar.sh \
--input_models=model1,model2 \
--target_archs=x86,x86_64,arm64-v8a,armeabi-v7a
Skrip di atas akan menghasilkan file tensorflow-lite.aar
dan secara opsional file tensorflow-lite-select-tf-ops.aar
jika salah satu model menggunakan Tensorflow ops. Untuk detail selengkapnya, lihat bagian Reduce TensorFlow Lite binary size .
Tambahkan AAR langsung ke proyek
Pindahkan file tensorflow-lite.aar
ke direktori bernama libs
di proyek Anda. Ubah file build.gradle
aplikasi Anda untuk mereferensikan direktori baru dan ganti dependensi TensorFlow Lite yang ada dengan pustaka lokal baru, misalnya:
allprojects {
repositories {
mavenCentral()
maven { // Only for snapshot artifacts
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
flatDir {
dirs 'libs'
}
}
}
dependencies {
compile(name:'tensorflow-lite', ext:'aar')
}
Instal AAR ke repositori Maven lokal
Jalankan perintah berikut dari direktori checkout root Anda:
mvn install:install-file \
-Dfile=bazel-bin/tensorflow/lite/java/tensorflow-lite.aar \
-DgroupId=org.tensorflow \
-DartifactId=tensorflow-lite -Dversion=0.1.100 -Dpackaging=aar
Di build.gradle
aplikasi Anda, pastikan Anda memiliki dependensi mavenLocal()
dan ganti dependensi TensorFlow Lite standar dengan yang memiliki dukungan untuk operasi TensorFlow tertentu:
allprojects {
repositories {
mavenCentral()
maven { // Only for snapshot artifacts
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
mavenLocal()
}
}
dependencies {
implementation 'org.tensorflow:tensorflow-lite:0.1.100'
}
Perhatikan bahwa versi 0.1.100
di sini murni untuk pengujian/pengembangan. Dengan AAR lokal terinstal, Anda dapat menggunakan API inferensi Java TensorFlow Lite standar dalam kode aplikasi Anda.