TensorFlow Lite tersedia di Google Play Services API sebagai beta publik di semua perangkat Android yang menjalankan versi layanan Play saat ini, mulai 17 Februari 2022. API ini memungkinkan Anda menjalankan model pembelajaran mesin tanpa menggabungkan pustaka TensorFlow Lite secara statis ke dalam aplikasi Anda, memungkinkan Anda untuk:
- Kurangi ukuran aplikasi Anda
- Dapatkan peningkatan kinerja dari TensorFlow Lite versi terbaru dan stabil
Halaman ini memberikan ikhtisar singkat tentang cara menggunakan TensorFlow Lite baru di API layanan Google Play di aplikasi Android Anda.
Untuk informasi lebih lanjut tentang layanan Google Play, lihat situs web layanan Google Play .
Tambahkan TensorFlow Lite ke aplikasi Anda
Anda dapat menggunakan TensorFlow Lite di Google Play Services API dengan membuat beberapa perubahan pada dependensi modul aplikasi, menginisialisasi API baru, dan menggunakan kelas tertentu sebagai objek penerjemah Anda. Petunjuk berikut memberikan detail selengkapnya tentang cara mengubah kode aplikasi Anda.
1. Tambahkan dependensi proyek
Tambahkan dependensi berikut ke kode proyek aplikasi Anda untuk mengakses Play Services API untuk TensorFlow Lite:
dependencies {
...
// Tensorflow Lite dependencies for Google Play services
implementation 'com.google.android.gms:play-services-tflite-java:16.0.0-beta02'
// Optional: include Tensorflow Lite Support Library
implementation 'com.google.android.gms:play-services-tflite-support:16.0.0-beta02'
...
}
2. Tambahkan inisialisasi TensorFlow Lite
Inisialisasi komponen TensorFlow Lite dari Google Play Services API sebelum menggunakan TensorFlow Lite API:
Kotlin
val initializeTask: Task<Void> by lazy { TfLite.initialize(this) }
Jawa
Task<Void> initializeTask = TfLite.initialize(context);
3. Buat Interpreter dan atur opsi runtime
Buat juru bahasa menggunakan InterpreterApi.create()
dan konfigurasikan untuk menggunakan waktu proses layanan Google Play, dengan memanggil InterpreterApi.Options.setRuntime()
, seperti yang ditunjukkan dalam kode contoh berikut:
Kotlin
import org.tensorflow.lite.InterpreterApi import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime ... private lateinit var interpreter: InterpreterApi ... initializeTask.addOnSuccessListener { val interpreterOption = InterpreterApi.Options().setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY) interpreter = InterpreterApi.create( modelBuffer, interpreterOption )} .addOnFailureListener { e -> Log.e("Interpreter", "Cannot initialize interpreter", e) }
Jawa
import org.tensorflow.lite.InterpreterApi import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime ... private InterpreterApi interpreter; ... initializeTask.addOnSuccessListener(a -> { interpreter = InterpreterApi.create(modelBuffer, new InterpreterApi.Options().setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY)); }) .addOnFailureListener(e -> { Log.e("Interpreter", String.format("Cannot initialize interpreter: %s", e.getMessage())); });
Anda harus menggunakan implementasi di atas karena menghindari pemblokiran utas antarmuka pengguna Android. Jika Anda perlu mengelola eksekusi utas lebih dekat, Anda dapat menambahkan panggilan Tasks.await()
ke pembuatan juru bahasa:
Kotlin
import androidx.lifecycle.lifecycleScope ... lifecycleScope.launchWhenStarted { // uses coroutine initializeTask.await() }
Jawa
@BackgroundThread InterpreterApi initializeInterpreter() { Tasks.await(initializeTask); return InterpreterApi.create(...); }
4. Jalankan inferensi
Menggunakan objek interpreter
yang Anda buat, panggil metode run()
untuk menghasilkan inferensi.
Kotlin
interpreter.run(inputBuffer, outputBuffer)
Jawa
interpreter.run(inputBuffer, outputBuffer);
TensorFlow Lite di layanan Google Play
TensorFlow Lite di Google Play Services API memungkinkan Anda mengakses TensorFlow Lite Java API yang sebenarnya di aplikasi Anda setelah Anda menginisialisasinya menggunakan metode baru di layanan Play. Pendekatan ini membuat Anda meminimalkan perubahan kode untuk aplikasi yang ada, dan menyederhanakan implementasi baru. Untuk informasi selengkapnya tentang API untuk fitur ini, lihat referensi API TensorFlow Lite
Bermigrasi dari Standalone TensorFlow Lite
Jika Anda berencana untuk memigrasikan aplikasi Anda dari TensorFlow Lite mandiri ke API layanan Play, tinjau panduan tambahan berikut untuk memperbarui kode proyek aplikasi Anda:
- Tinjau bagian Batasan halaman ini untuk memastikan kasus penggunaan Anda didukung.
- Sebelum memperbarui kode Anda, lakukan pemeriksaan kinerja dan akurasi untuk model Anda, terutama jika Anda menggunakan versi TensorFlow Lite lebih awal dari versi 2.1, sehingga Anda memiliki dasar untuk dibandingkan dengan implementasi baru.
- Jika Anda telah memigrasikan semua kode untuk menggunakan API layanan Play untuk TensorFlow Lite, Anda harus menghapus dependensi library runtime TensorFlow Lite yang ada (entri dengan
org.tensorflow: tensorflow-lite :*
) dari file build.gradle sehingga Anda dapat mengurangi ukuran aplikasi Anda. - Identifikasi semua kemunculan pembuatan objek
new Interpreter
dalam kode Anda, dan modifikasi sehingga menggunakan panggilan InterpreterApi.create(). API baru ini tidak sinkron, yang berarti dalam banyak kasus ini bukan pengganti drop-in, dan Anda harus mendaftarkan pendengar saat panggilan selesai. Lihat cuplikan kode pada kode Langkah 3 . - Tambahkan
import org.tensorflow.lite.InterpreterApi;
danimport org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime;
ke file sumber apa pun menggunakan kelasorg.tensorflow.lite.Interpreter
atauorg.tensorflow.lite.InterpreterApi
. - Jika salah satu panggilan yang dihasilkan ke
InterpreterApi.create()
hanya memiliki satu argumen, tambahkannew InterpreterApi.Options()
ke daftar argumen. - Tambahkan
.setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY)
ke argumen terakhir dari setiap panggilan keInterpreterApi.create()
. - Ganti semua kemunculan lain dari kelas
org.tensorflow.lite.Interpreter
denganorg.tensorflow.lite.InterpreterApi
.
Jika Anda ingin menggunakan TensorFlow Lite mandiri dan API layanan Play secara berdampingan, Anda harus menggunakan TensorFlow Lite 2.9 (atau lebih baru). TensorFlow Lite 2.8 dan versi sebelumnya tidak kompatibel dengan versi API layanan Play.
Contoh Aplikasi
Anda dapat meninjau dan menguji contoh penerapan TensorFlow Lite di layanan Google Play di aplikasi contoh .
Pengujian
Setelah menerapkan TensorFlow Lite di layanan Google Play, pastikan untuk menguji aplikasi Anda dan menjalankan fungsi model pembelajaran mesin aplikasi Anda. Jika Anda mengalami kesalahan atau masalah yang tidak dapat Anda atasi, laporkan dengan menggunakan saluran yang diuraikan di bagian Dukungan dan umpan balik di bawah.
LoadingException: Tidak ada modul yang dapat diterima
Saat menguji aplikasi Anda melalui lingkungan pengembangan selama periode peluncuran Beta, Anda mungkin mendapatkan pengecualian saat aplikasi Anda mencoba untuk menginisialisasi kelas TensorFlow Lite ( TfLite.intialize(context)
):
com.google.android.gms.dynamite.DynamiteModule$LoadingException:
No acceptable module com.google.android.gms.tflite_dynamite found.
Local version is 0 and remote version is 0.
Kesalahan ini berarti bahwa TensorFlow Lite di Google Play Services API belum tersedia di perangkat pengujian Anda. Anda dapat mengatasi pengecualian ini dengan bergabung dengan grup Google tflite-play-services-beta-access dengan akun pengguna yang Anda gunakan untuk menguji perangkat Anda. Setelah Anda ditambahkan ke grup akses beta, pengecualian ini harus diselesaikan.
Biarkan setidaknya satu hari kerja setelah Anda bergabung dengan grup ini agar akses diberikan dan kesalahan dihapus. Jika Anda terus mengalami kesalahan ini, laporkan menggunakan saluran yang diuraikan di bagian Dukungan dan masukan di bawah.
Keterbatasan
TensorFlow Lite di layanan Google Play saat ini dalam versi beta publik dan memiliki batasan berikut:
- Hanya Delegasi NNAPI yang saat ini didukung oleh layanan Google Play. Delegasi TensorFlow Lite lainnya , termasuk GPU, dan Flex saat ini tidak didukung.
- Akses ke TensorFlow Lite melalui API asli tidak didukung. Hanya TensorFlow Lite Java API yang tersedia melalui layanan Google Play.
- API TensorFlow Lite eksperimental atau yang tidak digunakan lagi, termasuk operasi kustom, tidak didukung.
Dukungan dan umpan balik
Anda dapat memberikan masukan dan mendapatkan dukungan untuk fitur rilis beta ini, melalui Pelacak Masalah TensorFlow. Laporkan masalah dan permintaan dukungan menggunakan template Masalah untuk TensorFlow Lite di layanan Google Play.
Syarat dan Kebijakan Privasi
Penggunaan TensorFlow Lite di layanan Google Play tunduk pada Persyaratan Layanan Google API . Perhatikan bahwa TensorFlow Lite di layanan Google Play masih dalam versi beta dan, dengan demikian, fungsinya serta API terkait dapat berubah tanpa pemberitahuan sebelumnya.
Saat Anda menggunakan TensorFlow Lite di API layanan Google Play, pemrosesan data input, seperti gambar, video, teks, sepenuhnya terjadi di perangkat, dan TensorFlow Lite di layanan Google Play tidak mengirimkan data tersebut ke server Google. Akibatnya, Anda dapat menggunakan API kami untuk memproses data yang tidak boleh keluar dari perangkat.
TensorFlow Lite di API layanan Google Play dapat menghubungi server Google dari waktu ke waktu untuk menerima hal-hal seperti perbaikan bug, model yang diperbarui, dan informasi kompatibilitas akselerator perangkat keras. TensorFlow Lite di API layanan Google Play juga mengirimkan metrik tentang kinerja dan pemanfaatan API di aplikasi Anda ke Google. Google menggunakan data metrik ini untuk mengukur kinerja, men-debug, memelihara dan meningkatkan API, dan mendeteksi penyalahgunaan atau penyalahgunaan, seperti yang dijelaskan lebih lanjut dalam Kebijakan Privasi kami.
Anda bertanggung jawab untuk memberi tahu pengguna aplikasi Anda tentang pemrosesan TensorFlow Lite oleh Google di data metrik layanan Google Play sebagaimana diwajibkan oleh hukum yang berlaku.
Data yang kami kumpulkan meliputi:
- Informasi perangkat (seperti pabrikan, model, versi dan build OS) dan akselerator perangkat keras ML yang tersedia (GPU dan DSP). Digunakan untuk diagnostik dan analitik penggunaan.
- Pengenal perangkat yang digunakan untuk diagnostik dan analisis penggunaan.
- Informasi aplikasi (nama paket, versi aplikasi). Digunakan untuk diagnostik dan analitik penggunaan.
- Konfigurasi API (seperti delegasi mana yang digunakan). Digunakan untuk diagnostik dan analitik penggunaan.
- Jenis peristiwa (seperti pembuatan juru bahasa, inferensi). Digunakan untuk diagnostik dan analitik penggunaan.
- Kode kesalahan. Digunakan untuk diagnostik.
- Metrik kinerja. Digunakan untuk diagnostik.
Langkah selanjutnya
Untuk informasi selengkapnya tentang menerapkan pembelajaran mesin di aplikasi seluler Anda dengan TensorFlow Lite, lihat Panduan Pengembang TensorFlow Lite . Anda dapat menemukan model TensorFlow Lite tambahan untuk klasifikasi gambar, deteksi objek, dan aplikasi lain di TensorFlow Hub .