Latih dan deploy model klasifikasi gambar di perangkat dengan AutoML Vision di ML Kit

1. Pengantar

Kemajuan terbaru dalam machine learning telah mempermudah komputer mengenali objek dalam gambar. Dalam codelab ini, kami akan memandu Anda dalam perjalanan menyeluruh untuk membangun model klasifikasi gambar yang dapat mengenali berbagai jenis objek, lalu men-deploy model di aplikasi Android dan iOS. ML Kit dan AutoML memungkinkan Anda membangun dan men-deploy model dalam skala besar tanpa keahlian machine learning.

Apa itu ML Kit?

ML Kit adalah SDK seluler yang menghadirkan keahlian machine learning Google untuk aplikasi Android dan iOS dalam paket yang andal dan mudah digunakan. Sebagai pengguna machine learning, baik pemula maupun berpengalaman, Anda dapat menerapkan fungsionalitas yang diperlukan dengan mudah hanya dalam beberapa baris kode. Ada beberapa API yang dapat mengenali teks, wajah, dll. yang dapat Anda gunakan langsung. Namun, jika Anda perlu mengenali objek yang tidak didukung oleh API, seperti mengenali berbagai jenis bunga dari gambar, Anda harus melatih model Anda sendiri. Di sinilah AutoML dapat membantu Anda.

Apa itu AutoML?

Cloud AutoML adalah rangkaian produk machine learning yang memungkinkan developer dengan keahlian machine learning terbatas untuk melatih model berkualitas tinggi yang sesuai dengan kebutuhan bisnis mereka, dengan memanfaatkan teknologi transfer learning canggih dan Neural Architecture Search Google.

Dalam codelab ini, kita akan menggunakan AutoML Vision Edge di ML Kit untuk melatih model klasifikasi bunga. Model dilatih di cloud, tetapi kemudian dipaketkan atau didownload oleh aplikasi untuk menjalankan inferensi sepenuhnya di perangkat.

93f21fd287496e4e.png

Yang akan Anda pelajari

  • Cara melatih model klasifikasi gambar menggunakan AutoML Vision Edge di ML Kit.
  • Cara menjalankannya di aplikasi contoh Android atau iOS menggunakan ML Kit SDK.

Yang Anda butuhkan

Untuk aplikasi Android

Untuk aplikasi iOS

  • XCode versi terbaru (v10.2+)
  • Simulator iOS atau perangkat iOS fisik (v9.0+)
  • CocoaPods
  • Pengetahuan dasar tentang pengembangan iOS di Swift

2. Penyiapan

Mendownload kode dan set data pelatihan

Download arsip zip yang berisi kode sumber untuk codelab ini dan set data pelatihan. Ekstrak arsip di komputer lokal Anda.

Membuat Project Firebase console

  1. Buka Firebase console.
  2. Pilih Create New Project, lalu beri nama project Anda "ML Kit Codelab".

Menyiapkan aplikasi Android

  1. Tambahkan aplikasi Android kami ke project Firebase. Nama paket Android: com.google.firebase.codelab.mlkit.automl
  2. Download file konfigurasi google-services.json, lalu masukkan ke aplikasi Android di android/mlkit-automl/app/google-services.json.

Menyiapkan aplikasi iOS

  1. Tambahkan aplikasi iOS kami ke project Firebase. ID paket iOS: com.google.firebase.codelab.mlkit.automl
  2. Download file konfigurasi GoogleService-Info.plist dan ikuti petunjuk untuk menempatkannya di aplikasi iOS di ios/mlkit-automl/GoogleService-Info.plist.

3. Menyiapkan set data pelatihan

Untuk melatih model agar dapat mengenali berbagai jenis objek, Anda harus menyiapkan serangkaian gambar dan memberi label pada setiap gambar tersebut. Kami telah membuat arsip foto bunga berlisensi creative commons untuk Anda gunakan dalam codelab ini.

Set data dikemas dalam file zip bernama flower_photos.zip yang disertakan dalam arsip zip yang Anda download di langkah sebelumnya.

Menjelajahi set data

Jika mengekstrak file flower_photos.zip, Anda akan melihat bahwa set data berisi gambar 5 jenis bunga: dandelion, daisy, tulip, bunga matahari, dan mawar yang disusun ke dalam folder yang diberi nama sesuai dengan nama bunga. Cara ini sangat berguna untuk membuat set data pelatihan yang akan dimasukkan ke AutoML dan melatih model klasifikasi gambar.

Ada 200 gambar untuk setiap jenis bunga dalam set data pelatihan ini. Anda hanya memerlukan minimal 10 gambar per kelas untuk melatih model. Namun, gambar pelatihan yang lebih banyak umumnya akan menghasilkan model yang lebih baik.

e5772b6527a6048d.png 6c4443d31cd5653e.png

4. Melatih model

Mengupload set data pelatihan

  1. Dari Firebase console, buka project yang baru saja Anda buat.
  2. Pilih ML Kit > AutoML.
  3. Anda mungkin melihat beberapa layar sambutan. Pilih Mulai jika ada.
  1. Setelah progres penyiapan selesai, pilih Tambahkan set data, dan beri nama "Bunga".
  2. Di Tujuan model, pilih Klasifikasi label tunggal,karena data pelatihan hanya berisi satu label per gambar.
  3. Pilih Create.
  4. Upload file flower_photos.zip yang Anda download pada langkah sebelumnya untuk mengimpor set data pelatihan bunga.
  5. Tunggu beberapa menit hingga tugas impor selesai.
  6. Sekarang Anda dapat mengonfirmasi bahwa set data telah diimpor dengan benar.
  7. Karena semua gambar dalam set data pelatihan telah diberi label, Anda dapat melanjutkan untuk melatih model.

cdb18b61f890934f.png

Melatih model klasifikasi gambar

Karena model kita akan berjalan di perangkat seluler dengan daya komputasi dan penyimpanan terbatas, kita harus memperhatikan tidak hanya akurasi model, tetapi juga ukuran dan kecepatannya. Selalu ada kompromi antara akurasi model, latensi (yaitu berapa lama waktu yang diperlukan untuk mengklasifikasikan gambar), dan ukuran model. Umumnya, model dengan akurasi yang lebih tinggi juga lebih besar dan akan membutuhkan waktu lebih lama untuk mengklasifikasikan gambar.

AutoML memberi Anda beberapa opsi: Anda dapat memilih untuk mengoptimalkan akurasi, atau mengoptimalkan latensi dan ukuran model, atau menyeimbangkan keduanya. Anda juga dapat memilih berapa lama Anda mengizinkan model untuk dilatih. Set data yang lebih besar perlu dilatih lebih lama.

dd6b7eaa2dd5a9de.png

Berikut langkah-langkah jika Anda ingin melatih model sendiri.

  1. Pilih Train model.
  2. Pilih opsi General purpose dan waktu pelatihan 1 compute hour.
  3. Tunggu beberapa saat (mungkin beberapa jam) hingga tugas pelatihan selesai.
  4. Setelah tugas pelatihan selesai, Anda akan melihat metrik evaluasi tentang performa model yang dilatih.

73f98fbed5ae5ee5.png

5. Menggunakan model di aplikasi seluler

Persiapan

  • Codelab ini berisi aplikasi contoh Android dan iOS yang menunjukkan cara menggunakan model klasifikasi gambar yang kita latih sebelumnya di aplikasi seluler. Kedua aplikasi memiliki fitur yang serupa. Anda dapat memilih platform yang lebih Anda kuasai.
  • Sebelum melanjutkan, pastikan Anda telah mendownload aplikasi contoh dan mengonfigurasinya di langkah 2.
  • Pastikan juga lingkungan lokal Anda telah disiapkan agar dapat membangun aplikasi untuk platform yang telah Anda pilih (Android/iOS).

Mendownload model klasifikasi gambar

  • Jika Anda telah melatih model pada langkah sebelumnya, pilih Download untuk mendapatkan model.
  • Jika Anda belum melatih model atau tugas pelatihan belum selesai, Anda dapat menggunakan model yang disertakan dalam aplikasi contoh.

Menambahkan model ke aplikasi contoh

Anda hanya perlu menambahkan model ke aplikasi contoh dan model tersebut akan langsung berfungsi. Untuk panduan lengkap tentang cara mengintegrasikan ML Kit AutoML ke aplikasi Anda, lihat dokumentasi kami ( Android, iOS). Kode yang berinteraksi dengan ML Kit SDK masing-masing ada di file ImageClassifier.kt dan ImageClassifier.swift, sehingga Anda dapat mulai dari sana untuk mempelajari cara kerja aplikasi.

Ada dua opsi untuk men-deploy model: lokal dan jarak jauh.

  • Model lokal terutama digunakan untuk memaketkan model klasifikasi gambar dalam biner aplikasi Anda, meskipun Anda juga dapat menyediakan model yang disimpan di penyimpanan lokal. Dengan bundling, model tersedia langsung untuk pengguna Anda setelah mereka mendownload aplikasi Anda dari App Store / Play Store, dan model akan berfungsi tanpa koneksi internet.
  • Model jarak jauh berarti model dihosting di Firebase dan hanya akan didownload ke perangkat pengguna Anda saat diperlukan untuk pertama kalinya. Setelah itu, model juga akan berfungsi secara offline.

2e71ed2c7cb8757c.png

Aplikasi Android

  1. Buka Android Studio.
  2. Impor aplikasi Android di bagian android/mlkit-automl/
  3. (Opsional) Ekstrak model yang telah Anda download dan salin kontennya ke model yang disertakan dalam aplikasi contoh. 10cf6b1e0f34de29.png
  4. Sekarang klik Run ( c8b8a080b7ead886.png) di toolbar Android Studio dan verifikasi bahwa aplikasi dapat mengenali berbagai jenis bunga.

2e71ed2c7cb8757c.png

Aplikasi iOS

  1. Buka Terminal, lalu buka folder ios/mlkit-automl/
  2. Jalankan pod install untuk mendownload dependensi melalui Cocoapods
  3. Jalankan open MLVisionExample.xcworkspace/ untuk membuka ruang kerja project di Xcode.
  4. (Opsional) Ekstrak model yang telah Anda download dan salin kontennya ke model yang disertakan dalam aplikasi contoh di bagian ios/ml-automl/Resources/automl/cd291fe04bcdc6ee.png
  5. Sekarang klik Run ( 16629f86bbeb4208.png) di toolbar Xcode dan verifikasi bahwa aplikasi dapat mengenali berbagai jenis bunga.

65172c3f35336d4e.png

6. (Opsional) Menggunakan model jarak jauh

Model jarak jauh ML Kit memungkinkan Anda tidak menyertakan model Tensorflow Lite dalam biner aplikasi, tetapi mendownloadnya sesuai permintaan dari Firebase saat diperlukan. Model jarak jauh memiliki beberapa manfaat dibandingkan model lokal:

  • Biner aplikasi yang lebih kecil
  • Dapat mengupdate model tanpa mengupdate aplikasi
  • Pengujian A/B dengan beberapa versi model

Pada langkah ini, kita akan memublikasikan model jarak jauh dan menggunakannya di aplikasi contoh. Pastikan Anda telah menyelesaikan pelatihan model di langkah 4 codelab ini.

Memublikasikan model

  1. Buka Firebase console.
  2. Pilih project "ML Kit AutoML Codelab" yang Anda buat sebelumnya.
  3. Pilih ML Kit > AutoML.
  4. Pilih set data "Flowers" yang telah Anda buat sebelumnya.
  5. Pastikan tugas pelatihan telah selesai, lalu pilih model.
  6. Pilih Publikasikan dan beri nama "mlkit_flowers". b63a58b83e814acd.png

Mengenali bunga dengan model jarak jauh

Aplikasi contoh dikonfigurasi untuk menggunakan model jarak jauh jika tersedia. Setelah memublikasikan model jarak jauh, Anda hanya perlu menjalankan ulang aplikasi untuk memicu download model. Anda dapat memverifikasi bahwa aplikasi menggunakan model jarak jauh dengan melihat nilai "Sumber" di footer layar aplikasi. Lihat bagian "Pemecahan masalah" di bawah jika tidak berfungsi.

7c8292293fd858ad.png de359886ccecef2.png

Pemecahan masalah

Jika aplikasi contoh masih menggunakan model lokal, pastikan nama model jarak jauh ditetapkan dengan benar di dalam kode.

Aplikasi Android

  1. Buka ImageClassifier.kt dan temukan blok ini.
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
  1. Pastikan nama model yang ditetapkan dalam kode cocok dengan nama model yang Anda publikasikan sebelumnya melalui Konsol Firebase.
  2. Sekarang klik Run ( c8b8a080b7ead886.png) di toolbar Android Studio untuk menjalankan ulang aplikasi.

Aplikasi iOS

  1. Buka ImageClassifier.swift dan temukan blok ini,
return RemoteModel(
  name: Constant.remoteAutoMLModelName,
  allowsModelUpdates: true,
  initialConditions: initialConditions,
  updateConditions: updateConditions
)
  1. Pastikan nama model yang ditetapkan dalam kode cocok dengan nama model yang Anda publikasikan sebelumnya melalui Konsol Firebase
  2. Sekarang klik Run ( 16629f86bbeb4208.png) di toolbar Xcode untuk menjalankan kembali aplikasi.

7. Selamat!

Anda telah menyelesaikan perjalanan end-to-end untuk melatih model klasifikasi gambar dengan data pelatihan Anda sendiri menggunakan AutoML, lalu menggunakan model tersebut di aplikasi seluler menggunakan ML Kit.

Lihat dokumentasi kami untuk mempelajari cara mengintegrasikan AutoML Vision Edge di ML Kit ke aplikasi Anda sendiri.

Anda juga dapat mencoba aplikasi contoh ML Kit kami untuk melihat fitur lain dari Firebase ML Kit.

Contoh Android

Contoh iOS