TensorFlow Lite di layanan Google Play (BETA)

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:

  1. Tinjau bagian Batasan halaman ini untuk memastikan kasus penggunaan Anda didukung.
  2. 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.
  3. 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.
  4. 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 .
  5. Tambahkan import org.tensorflow.lite.InterpreterApi; dan import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime; ke file sumber apa pun menggunakan kelas org.tensorflow.lite.Interpreter atau org.tensorflow.lite.InterpreterApi .
  6. Jika salah satu panggilan yang dihasilkan ke InterpreterApi.create() hanya memiliki satu argumen, tambahkan new InterpreterApi.Options() ke daftar argumen.
  7. Tambahkan .setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY) ke argumen terakhir dari setiap panggilan ke InterpreterApi.create() .
  8. Ganti semua kemunculan lain dari kelas org.tensorflow.lite.Interpreter dengan org.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 .