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

1. Pengantar

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

Apa itu ML Kit?

ML Kit adalah SDK seluler yang menghadirkan keahlian machine learning Google ke aplikasi Android dan iOS dalam paket yang canggih dan mudah digunakan. Baik sebagai pemula atau berpengalaman dalam machine learning, Anda dapat dengan mudah mengimplementasikan fungsi yang diperlukan hanya dalam beberapa baris kode. Ada beberapa API yang dapat mengenali teks, wajah, dll. yang dapat langsung Anda gunakan. Akan tetapi, jika Anda perlu mengenali objek yang tidak didukung oleh API, seperti mengenali berbagai jenis bunga dari gambar, maka Anda perlu 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 spesifik bagi kebutuhan bisnis mereka, dengan memanfaatkan pembelajaran transfer tercanggih Google serta teknologi Neural Architecture Search.

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.pngS

Yang akan Anda pelajari

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

Yang Anda butuhkan

Untuk aplikasi Android

Untuk aplikasi iOS

  • Versi terbaru XCode (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 kita ke project Firebase. Nama paket Android: com.google.firebase.codelab.mlkit.automl
  2. Download file konfigurasi google-services.json, dan letakkan di aplikasi Android di android/mlkit-automl/app/google-services.json.

Menyiapkan aplikasi iOS

  1. Tambahkan aplikasi iOS kita ke project Firebase. ID paket iOS: com.google.firebase.codelab.mlkit.automl
  2. Download file konfigurasi GoogleService-Info.plist dan ikuti petunjuk untuk memasukkannya ke 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 kumpulan gambar dan memberi label pada setiap gambar. 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 berdasarkan bunga. Ini adalah cara praktis untuk membuat set data pelatihan untuk dimasukkan ke AutoML dan melatih model klasifikasi image.

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

e5772b6527a6048d.png 6c4443d31cd5653e.pngS

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 berlaku.
  1. Setelah progres penyiapan selesai, pilih Add dataset, dan beri nama "Flowers".
  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 sampai tugas impor selesai.
  6. Sekarang Anda dapat mengonfirmasi bahwa {i>dataset <i}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 akan berjalan di perangkat seluler dengan daya komputasi dan penyimpanan terbatas, kami tidak hanya harus memperhatikan akurasi model, tetapi juga ukuran dan kecepatannya. Selalu ada imbal balik antara akurasi model, latensi (yaitu, berapa lama waktu yang diperlukan untuk mengklasifikasikan gambar) dan ukuran model. Umumnya model dengan akurasi yang lebih tinggi juga berukuran lebih besar dan memerlukan waktu lebih lama untuk mengklasifikasikan gambar.

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

dd6b7eaa2dd5a9de.png

Berikut adalah langkah-langkah jika Anda ingin melatih model sendiri.

  1. Pilih Train model.
  2. Pilih opsi Tujuan umum dan 1 jam komputasi waktu pelatihan.
  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.pngS

5. Menggunakan model di aplikasi seluler

Persiapan

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

Download model klasifikasi gambar

  • Jika Anda telah melatih model di langkah sebelumnya, pilih Download untuk mendapatkan model.
  • Jika Anda tidak 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 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 model juga dapat menyediakan model yang disimpan di penyimpanan lokal. Dengan pemaketan, model akan langsung tersedia untuk pengguna 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.pngS

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.pngS
  4. Sekarang klik Run ( c8b8a080b7ead886.png) di toolbar Android Studio dan pastikan bahwa Anda dapat mengenali berbagai jenis bunga.

2e71ed2c7cb8757c.pngS

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.pngS) di toolbar Xcode dan pastikan bahwa Anda dapat mengenali berbagai jenis bunga.

65172c3f35336d4e.pngS

6. (Opsional) Gunakan model jarak jauh

Model jarak jauh ML Kit memungkinkan Anda untuk tidak menyertakan model Tensorflow Lite di biner aplikasi, tetapi mendownloadnya secara on-demand dari Firebase saat diperlukan. Model jarak jauh memiliki beberapa keunggulan 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 "ML Kit AutoML Codelab" project yang Anda buat sebelumnya.
  3. Pilih ML Kit > AutoML.
  4. Pilih "Bunga" yang telah dibuat sebelumnya.
  5. Konfirmasi bahwa tugas pelatihan telah selesai, lalu pilih model.
  6. Pilih Publikasikan, lalu 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 "Sumber" di footer layar aplikasi. Lihat "Pemecahan masalah" di bawah jika tidak berfungsi.

7c8292293fd858ad.pngS de359886ccecef2.png

Pemecahan masalah

Jika aplikasi contoh masih menggunakan model lokal, pastikan nama model jarak jauh sudah 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 sesuai dengan nama model yang Anda publikasikan sebelumnya melalui Firebase Console.
  2. Sekarang, klik Run ( c8b8a080b7ead886.png) di toolbar Android Studio untuk menjalankan kembali 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 Firebase Console
  2. Sekarang klik Run ( 16629f86bbeb4208.pngS) di toolbar Xcode untuk menjalankan kembali aplikasi.

7. Selamat!

Anda telah melalui 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.

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

Contoh Android

Contoh iOS