Menggunakan model TensorFlow Lite kustom dengan Flutter

Jika aplikasi Anda menggunakan model TensorFlow Lite kustom, Anda dapat menggunakan Firebase ML untuk men-deploy model. Dengan men-deploy model menggunakan Firebase, Anda dapat memperkecil ukuran download awal aplikasi dan mengupdate model ML aplikasi tanpa merilis versi baru aplikasi. Selain itu, dengan Remote Config dan Pengujian A/B, Anda dapat menyalurkan berbagai model secara dinamis ke berbagai kelompok pengguna yang berbeda.

Model TensorFlow Lite

Model TensorFlow Lite adalah model ML yang dioptimalkan untuk berjalan di perangkat seluler. Untuk mendapatkan model TensorFlow Lite:

Perlu diperhatikan bahwa jika library TensorFlow Lite untuk Dart tidak dipertahankan, Anda harus mengintegrasikan dengan library TensorFlow Lite native untuk platform Anda. Integrasi ini tidak didokumentasikan di sini.

Sebelum memulai

  1. Instal dan inisialisasi Firebase SDK untuk Flutter jika Anda belum melakukannya.

  2. Dari direktori utama project Flutter Anda, jalankan perintah berikut untuk menginstal plugin downloader model ML:

    flutter pub add firebase_ml_model_downloader
    
  3. Build ulang project Anda

    flutter run
    

1. Deploy model Anda

Deploy model TensorFlow kustom Anda menggunakan Firebase console atau Firebase Admin Python dan Node.js SDK. Lihat Men-deploy dan mengelola model kustom.

Setelah menambahkan model kustom ke project Firebase, Anda dapat mereferensikan model tersebut di aplikasi menggunakan nama yang Anda tentukan. Anda dapat men-deploy model TensorFlow Lite baru kapan saja dan mendownload model baru ke perangkat pengguna dengan memanggil getModel() (lihat di bawah).

2. Download model ke perangkat dan lakukan inisialisasi penafsir TensorFlow Lite

Untuk menggunakan model TensorFlow Lite di aplikasi Anda, pertama-tama gunakan downloader model untuk mendownload versi terbaru model ke perangkat. Kemudian, buat instance penafsir TensorFlow Lite dengan model tersebut.

Untuk mulai mendownload model, panggil metode getModel() downloader model, dengan menentukan nama yang Anda tetapkan untuk model saat menguploadnya, apakah Anda ingin selalu mendownload model terbaru, dan kondisi yang Anda inginkan untuk mengizinkan download.

Anda dapat memilih di antara tiga perilaku download:

Jenis download Deskripsi
localModel Mendapatkan model lokal dari perangkat. Jika tidak ada model lokal yang tersedia, jenis ini akan berperilaku seperti latestModel. Gunakan jenis download ini jika Anda tidak ingin memeriksa update model. Misalnya, Anda menggunakan Remote Config untuk mengambil nama model dan Anda selalu mengupload model dengan nama baru (direkomendasikan).
localModelUpdateInBackground Mendapatkan model lokal dari perangkat dan mulai mengupdate model di latar belakang. Jika tidak ada model lokal yang tersedia, jenis ini akan berperilaku seperti latestModel.
latestModel Mendapatkan model terbaru. Jika model lokal adalah versi terbaru, jenis ini akan menggunakan model lokal. Jika bukan, model terbaru akan didownload. Perilaku ini akan memblokir model hingga versi terbarunya didownload (tidak direkomendasikan). Gunakan perilaku ini hanya jika Anda memerlukan versi terbaru secara eksplisit.

Anda harus menonaktifkan fungsionalitas terkait model—misalnya, menyamarkan atau menyembunyikan sebagian UI—hingga Anda mengonfirmasi model tersebut telah didownload.

FirebaseModelDownloader.instance
    .getModel(
        "yourModelName",
        FirebaseModelDownloadType.localModel,
        FirebaseModelDownloadConditions(
          iosAllowsCellularAccess: true,
          iosAllowsBackgroundDownloading: false,
          androidChargingRequired: false,
          androidWifiRequired: false,
          androidDeviceIdleRequired: false,
        )
    )
    .then((customModel) {
      // Download complete. Depending on your app, you could enable the ML
      // feature, or switch from the local model to the remote model, etc.

      // The CustomModel object contains the local path of the model file,
      // which you can use to instantiate a TensorFlow Lite interpreter.
      final localModelPath = customModel.file;

      // ...
    });

Banyak aplikasi memulai tugas download dalam kode inisialisasinya, tetapi Anda dapat melakukannya kapan saja sebelum menggunakan model.

3. Melakukan inferensi pada data masukan

Setelah memiliki file model di perangkat, Anda dapat menggunakannya dengan penafsir TensorFlow Lite untuk melakukan inferensi. Jika library TensorFlow Lite untuk Dart tidak dipertahankan, Anda harus mengintegrasikan dengan library TensorFlow Lite native untuk iOS dan Android.

Lampiran: Keamanan model

Terlepas dari cara Anda menyediakan model TensorFlow Lite untuk Firebase ML, Firebase ML akan menyimpannya dalam format protobuf serial standar di penyimpanan lokal.

Secara teori, ini artinya siapa saja dapat menyalin model Anda. Namun, dalam praktiknya, sebagian besar model bersifat spesifik aplikasi dan di-obfuscate melalui pengoptimalan sehingga risikonya serupa dengan jika pesaing membongkar dan menggunakan kembali kode Anda. Meskipun demikian, Anda harus menyadari risiko ini sebelum menggunakan model kustom di aplikasi.