Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

quickstart Android

Untuk memulai TensorFlow Lite pada Android, kami sarankan menjelajahi contoh berikut.

Image Android contoh klasifikasi

Baca klasifikasi citra TensorFlow Lite Android untuk penjelasan dari kode sumber.

Contoh Aplikasi ini menggunakan klasifikasi citra untuk terus mengklasifikasikan apapun itu melihat dari kamera menghadap ke belakang perangkat. Aplikasi ini dapat berjalan baik pada perangkat atau emulator.

Inferensi dilakukan menggunakan API TensorFlow Lite Java dan Perpustakaan Dukungan Android TensorFlow Lite . Demo aplikasi mengklasifikasikan frame secara real-time, menampilkan bagian atas yang paling mungkin klasifikasi. Hal ini memungkinkan pengguna untuk memilih antara floating point atau terkuantisasi Model, pilih thread count, dan memutuskan apakah akan dijalankan pada CPU, GPU, atau melalui NNAPI .

Membangun di Android Studio

Untuk membangun contoh di Android Studio, ikuti petunjuk di README.md .

Buat aplikasi Android Anda sendiri

Untuk memulai dengan cepat menulis kode Android Anda sendiri, sebaiknya gunakan kami Android contoh klasifikasi citra sebagai titik awal.

Bagian berikut ini berisi beberapa informasi yang berguna untuk bekerja dengan TensorFlow Lite di Android.

Gunakan Lite Android Perpustakaan Dukungan TensorFlow

The TensorFlow Lite Android Dukungan Perpustakaan membuatnya lebih mudah untuk mengintegrasikan model ke dalam aplikasi Anda. Ini menyediakan API tingkat tinggi yang membantu mentransformasi input data mentah menjadi bentuk yang dibutuhkan oleh model, dan menginterpretasikan output model, mengurangi jumlah kode boilerplate diperlukan.

Ini mendukung format data umum untuk input dan output, termasuk gambar dan array. Ini juga menyediakan unit pra dan pasca-pengolahan yang melakukan tugas-tugas seperti mengubah ukuran gambar dan tanam.

Untuk memulai, ikuti petunjuk di TensorFlow Lite Android Dukungan Perpustakaan README.md .

Gunakan TensorFlow Lite AAR dari JCenter

Untuk menggunakan TensorFlow Lite di aplikasi Android, kami sarankan menggunakan TensorFlow Lite AAR host di JCenter .

Anda dapat menentukan ini dalam build.gradle dependensi sebagai berikut:

 dependencies {
    implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly'
}
 

AAR ini termasuk binari untuk semua ABI Android . Anda dapat mengurangi ukuran biner aplikasi Anda dengan hanya termasuk ABI Anda perlu dukungan.

Kami merekomendasikan sebagian besar pengembang menghilangkan x86 , x86_64 , dan arm32 ABI. Hal ini dapat dicapai dengan konfigurasi Gradle berikut, yang secara khusus hanya mencakup armeabi-v7a dan arm64-v8a , yang harus mencakup sebagian besar perangkat Android modern.

 android {
    defaultConfig {
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }
    }
}
 

Untuk mempelajari lebih lanjut tentang abiFilters , lihat NdkOptions dalam dokumentasi Android Gradle.

Membangun TensorFlow Lite lokal

Dalam beberapa kasus, Anda mungkin ingin menggunakan membangun lokal TensorFlow Lite. Sebagai contoh, Anda mungkin akan membangun biner kustom yang mencakup operasi yang dipilih dari TensorFlow , atau Anda mungkin ingin membuat perubahan lokal untuk TensorFlow Lite.

Mengatur membangun lingkungan menggunakan Docker

  • Download file Docker. Dengan men-download file Docker, Anda setuju bahwa mengikuti persyaratan layanan mengatur penggunaan daripadanya:

Dengan mengklik untuk menerima, Anda setuju bahwa semua penggunaan Android Studio dan Android asli Development Kit akan diatur oleh Perjanjian Lisensi Software Development Kit Android tersedia di https://developer.android.com/studio/terms (URL seperti mungkin diperbarui atau diubah oleh Google dari waktu ke waktu).

Anda harus mengakui persyaratan layanan untuk mendownload file. Mengakui

  • Anda dapat mengubah Android SDK atau NDK versi. Letakkan file Docker download dalam folder kosong dan membangun citra buruh pelabuhan anda dengan menjalankan:
 docker build . -t tflite-builder -f tflite-android.Dockerfile
 
  • Mulai wadah buruh pelabuhan interaktif dengan me-mount folder Anda saat ini untuk / tmp dalam wadah (catatan / tensorflow_src adalah repositori TensorFlow dalam wadah):
 docker run -it -v $PWD:/tmp tflite-builder bash
 

Jika Anda menggunakan PowerShell pada Windows, ganti "$ PWD" dengan "pwd".

Jika Anda ingin menggunakan repositori TensorFlow pada host, mount direktori tuan rumah bukan (v hostDir: / tmp).

  • Setelah Anda berada di dalam wadah, Anda dapat menjalankan berikut untuk men-download alat Android tambahan dan perpustakaan (catatan bahwa Anda mungkin perlu untuk menerima lisensi):
 android update sdk --no-ui -a --filter tools,platform-tools,android-${ANDROID_API_LEVEL},build-tools-${ANDROID_BUILD_TOOLS_VERSION}
 

Anda sekarang dapat melanjutkan ke "Membangun dan Instal" bagian. Setelah Anda selesai membangun perpustakaan, Anda dapat menyalinnya ke / tmp dalam wadah sehingga Anda dapat mengaksesnya pada host.

Mengatur membangun lingkungan tanpa Docker

Instal Bazel dan Android Prasyarat

Bazel adalah utama membangun sistem untuk TensorFlow. Untuk membangun dengan itu, Anda harus memiliki itu dan NDK Android dan SDK diinstal pada sistem Anda.

  1. Menginstal versi terbaru dari Bazel membangun sistem .
  2. Android NDK diperlukan untuk membangun asli (C / C ++) TensorFlow Lite kode. Versi direkomendasikan saat ini adalah 17c, yang dapat ditemukan di sini .
  3. Android SDK dan alat membangun dapat diperoleh di sini , atau alternatif sebagai bagian dari Android Studio . Membangun alat API> = 23 adalah versi direkomendasikan untuk membangun TensorFlow Lite.
Konfigurasi ruang kerja dan .bazelrc

Jalankan ./configure skrip di direktori checkout akar TensorFlow, dan jawabannya "Ya" ketika script meminta untuk interaktif mengkonfigurasi ./WORKSPACE untuk Android membangun. script akan mencoba untuk pengaturan konfigurasi menggunakan variabel lingkungan berikut:

  • ANDROID_SDK_HOME
  • ANDROID_SDK_API_LEVEL
  • ANDROID_NDK_HOME
  • ANDROID_NDK_API_LEVEL

Jika variabel-variabel ini tidak diatur, mereka harus disediakan secara interaktif di prompt naskah. Konfigurasi sukses harus menghasilkan entri mirip dengan berikut di .tf_configure.bazelrc file dalam folder root:

 build --action_env ANDROID_NDK_HOME="/usr/local/android/android-ndk-r17c"
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"
 

Membangun dan menginstal

Setelah Bazel dikonfigurasi dengan benar, Anda dapat membangun TensorFlow Lite AAR dari direktori checkout akar 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/ . Catatan bahwa ini membangun "gemuk" AAR dengan beberapa arsitektur yang berbeda; jika Anda tidak perlu semua dari mereka, gunakan sesuai bagian untuk lingkungan deployment Anda. Dari sana, ada beberapa pendekatan yang dapat Anda ambil untuk menggunakan .aar dalam proyek Android Studio Anda.

Menambahkan AAR langsung ke proyek

Pindahkan tensorflow-lite.aar file ke direktori yang disebut libs dalam proyek Anda. Memodifikasi aplikasi Anda build.gradle berkas untuk referensi direktori baru dan mengganti yang sudah ada ketergantungan TensorFlow Lite dengan perpustakaan lokal baru, misalnya:

 allprojects {
    repositories {
        jcenter()
        flatDir {
            dirs 'libs'
        }
    }
}

dependencies {
    compile(name:'tensorflow-lite', ext:'aar')
}
 
Install 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
 

Dalam aplikasi Anda build.gradle , pastikan Anda memiliki mavenLocal() ketergantungan dan menggantikan standar ketergantungan TensorFlow Lite dengan satu yang memiliki dukungan untuk pilih ops TensorFlow:

 allprojects {
    repositories {
        jcenter()
        mavenLocal()
    }
}

dependencies {
    implementation 'org.tensorflow:tensorflow-lite:0.1.100'
}
 

Perhatikan bahwa 0.1.100 versi sini adalah semata-mata untuk kepentingan pengujian / pembangunan. Dengan AAR lokal diinstal, Anda dapat menggunakan standar API inferensi TensorFlow Lite Java dalam kode aplikasi Anda.

Membangun aplikasi Android menggunakan C ++

Ada dua cara untuk menggunakan TFLite melalui C ++ jika Anda membangun aplikasi Anda dengan NDK:

Gunakan TFLite C API

Ini adalah pendekatan yang direkomendasikan. Download TensorFlow Lite AAR host di JCenter , mengganti nama ke tensorflow-lite-*.zip , Dan unzip itu. Anda harus menyertakan empat file header di headers/tensorflow/lite/ dan headers/tensorflow/lite/c/ folder dan relevan libtensorflowlite_jni.so perpustakaan dinamis dalam jni/ folder dalam proyek NDK Anda.

The c_api.h file header berisi dokumentasi dasar tentang menggunakan API TFLite C.

Gunakan TFLite C ++ API

Jika Anda ingin menggunakan TFLite melalui C ++ API, Anda dapat membangun C ++ shared library:

32bit armeabi-V7A:

 bazel build -c opt --config=android_arm //tensorflow/lite:libtensorflowlite.so
 

64bit arm64-V8A:

 bazel build -c opt --config=android_arm64 //tensorflow/lite:libtensorflowlite.so
 

Saat ini, tidak ada cara mudah untuk mengekstrak semua file header yang dibutuhkan, sehingga Anda harus mencakup semua file header di tensorflow/lite/ dari repositori TensorFlow. Selain itu, Anda akan perlu file header dari FlatBuffers dan Abseil .