Ada 5 hal yang perlu diketahui sebelum menyesuaikan model machine learning pertama Anda dengan MediaPipe Model Maker

MEI 04, 2023
Jen Person Developer Relations Engineer

Jika Anda membaca blog ini, Anda mungkin tertarik untuk membuat model machine learning (ML) khusus. Saya baru saja menjalani prosesnya sendiri, membuat detektor anjing khusus untuk dipakai bersama Codelab, Membuat aplikasi web pendeteksi objek khusus dengan MediaPipe. Seperti setiap tugas coding baru, proses ini membutuhkan beberapa kali uji coba untuk mengetahui apa yang saya lakukan selama prosesnya. Untuk meminimalkan error dalam pengalaman "uji coba" Anda, saya dengan senang hati membagikan lima hal yang dapat diambil dari pengalaman pelatihan model saya.


1. Mempersiapkan data membutuhkan waktu lama. Pastikan Anda meluangkan waktu

Mempersiapkan data Anda untuk pelatihan akan terlihat berbeda tergantung pada tipe model yang disesuaikan. Secara umum, ada langkah untuk mengumpulkan data dan langkah untuk membuat anotasi data.

Mengumpulkan data

Menemukan cukup titik data yang paling merepresentasikan kasus penggunaan Anda merupakan sebuah tantangan. Pertama, Anda harus memastikan bahwa Anda memiliki hak untuk menggunakan semua gambar atau teks yang Anda sertakan dalam data. Periksa lisensi data Anda sebelum melakukan pelatihan. Salah satu cara untuk mengatasi hal ini adalah dengan menyediakan data Anda sendiri. Kebetulan saya memiliki ratusan foto anjing saya, jadi memilih foto tersebut untuk detektor objek saya sangatlah mudah. Anda juga bisa mencari set data yang ada di Kaggle. Ada begitu banyak pilihan di Kaggle yang mencakup berbagai macam kasus penggunaan. Jika beruntung, Anda akan menemukan set data yang sesuai dengan kebutuhan Anda dan mungkin sudah memiliki anotasi!

Membuat anotasi data

MediaPipe Model Maker menerima data dengan setiap input memiliki file XML yang sesuai yang mencantumkan anotasinya. Misalnya:

Ada beberapa program software yang bisa membantu dengan anotasi. Hal ini sangat berguna ketika Anda perlu menyoroti area gambar tertentu. Sebagian program software didesain untuk memungkinkan kolaborasi–UI yang intuitif dan petunjuk untuk anotator yang berarti Anda bisa meminta bantuan orang lain. Opsi open source yang sering dipakai adalah Label Studio, yang saya gunakan untuk membuat anotasi gambar saya.

Jadi, bersiaplah karena langkah ini akan memakan waktu lama, tetapi ingatlah bahwa ini akan memakan waktu lebih lama dari yang Anda perkirakan.

2. Sederhanakan model khusus Anda

Jika Anda sama seperti saya, Anda pasti memiliki ide yang luar biasa besar untuk model khusus pertama Anda. Anjing saya, Ben, adalah inspirasi untuk model pertama saya. Dia berasal dari tempat penyelamatan golden retriever lokal, tetapi ketika saya melakukan tes DNA, ternyata dia 0% golden retriever! Ide pertama saya adalah membuat detektor golden retriever – solusi yang bisa memberi tahu Anda apakah seekor anjing adalah "golden retriever" atau "bukan golden retriever". Saya pikir akan menyenangkan melihat apa yang dipikirkan model tentang Ben, tetapi saya segera menyadari bahwa saya harus mengumpulkan lebih banyak gambar anjing selain yang saya miliki agar saya dapat menjalankan model tersebut pada anjing lain juga. Dan, saya harus memastikan bahwa model ini dapat secara akurat mengidentifikasi golden retriever dari semua warna. Setelah berjam-jam melakukan upaya ini, saya menyadari Saya harus menyederhanakannya. Saat itulah saya memutuskan untuk mencoba solusi untuk ketiga anjing saya. Saya memiliki banyak foto yang bisa dipilih, jadi saya memilih foto terbaik yang menunjukkan anjing-anjing ini secara detail. Ini adalah solusi yang jauh lebih berhasil, dan merupakan bukti konsep yang bagus untuk model golden retriever saya, karena saya menolak untuk meninggalkan ide tersebut.

Inilah beberapa cara untuk menyederhanakan model khusus pertama Anda:

  1. Mulai dengan lebih sedikit label. Pilih 2-5 class untuk ditetapkan ke data Anda.
  2. Abaikan kasus berisiko. Jika Anda memiliki latar belakang rekayasa software, maka Anda pasti sudah terbiasa memperhatikan dan menangani kasus berisiko. Dalam machine learning, Anda mungkin menyebabkan beberapa error atau perilaku aneh ketika Anda mencoba melatih kasus berisiko. Sebagai contoh, saya tidak memilih foto anjing yang kepalanya tidak terlihat. Tentu saja, saya mungkin menginginkan model yang bisa mendeteksi anjing saya bahkan hanya dari bagian belakangnya saja. Namun, saya tidak menyertakan sebagian foto anjing dalam pelatihan saya dan ternyata model ini masih bisa mendeteksinya.
5things2
Aplikasi web masih mengidentifikasi ACi dalam gambar bahkan ketika kepalanya tidak terlihat
  1. Sertakan beberapa kasus berisiko dalam pengujian dan pembuatan prototipe Anda untuk melihat bagaimana model menanganinya. Jika tidak, jangan terlalu memusingkan kasus berisiko.
  2. Sedikit data akan sangat membantu. Karena MediaPipe Model Maker menggunakan transfer learning, Anda hanya perlu melatih sedikit data daripada jika Anda melatih model dari awal. Targetkan 100 contoh untuk setiap class. Anda mungkin bisa melatih kurang dari 100 contoh jika tidak banyak kemungkinan iterasi data. Sebagai contoh, kolega saya melatih model untuk mendeteksi dua patung Android yang berbeda. Dia tidak membutuhkan terlalu banyak foto karena sudut pandang untuk melihat patung itu cukup terbatas. Anda mungkin membutuhkan lebih dari 100 contoh untuk memulai jika Anda memerlukan lebih banyak data untuk menunjukkan berbagai kemungkinan iterasi data. Sebagai contoh, anjing golden retriever memiliki banyak warna. Anda mungkin memerlukan beberapa lusin contoh untuk setiap warna guna memastikan model dapat mengidentifikasinya secara akurat, sehingga membutuhkan lebih dari 100 contoh.

Jadi, ketika sampai pada pengalaman pelatihan ML pertama Anda, ingatlah untuk sederhanakan, sederhanakan, sederhanakan.

Sederhanakan.

Sederhanakan.

3. Harapkan beberapa iterasi pelatihan

Meskipun saya ingin mengatakan dengan percaya diri bahwa Anda akan mendapatkan hasil yang tepat dari model pada saat pertama kali Anda melatihnya, itu kemungkinan besar tidak akan terjadi. Meluangkan waktu Anda untuk memilih contoh data dan anotasi sudah pasti akan meningkatkan keberhasilan Anda, tetapi ada begitu banyak faktor yang bisa mengubah perilaku model. Anda mungkin menemukan bahwa Anda perlu memulai dengan arsitektur model yang berbeda untuk mencapai akurasi yang diinginkan. Atau, Anda dapat mencoba pembagian data pelatihan dan validasi yang berbeda. Anda mungkin perlu menambahkan lebih banyak contoh ke set data Anda. Untungnya, transfer learning dengan MediaPipe Model Maker umumnya membutuhkan waktu beberapa menit, sehingga Anda dapat mengerjakan iterasi baru secara cepat.

4. Prototipe di luar aplikasi Anda

Setelah selesai melatih model, Anda mungkin sangat bersemangat dan ingin segera menambahkannya ke aplikasi Anda. Namun, saya menganjurkan Anda untuk mencoba model terlebih dahulu di MediaPipe Studio untuk beberapa alasan:

  1. Setiap kali Anda membuat perubahan pada aplikasi, Anda mungkin harus menunggu beberapa kompilasi dan/atau langkah build selesai. Bahkan dengan hot reload, tetap saja ada waktu tunggu. Jadi, jika Anda memutuskan untuk menyesuaikan opsi konfigurasi seperti ambang batas skor, Anda harus menunggu setiap penyesuaian yang dilakukan dan waktu tersebut dapat bertambah. Tidak sepadan dengan waktu ekstra untuk menunggu seluruh aplikasi dibangun ketika Anda hanya mencoba menguji satu komponen. Dengan MediaPipe Studio, Anda bisa mencoba berbagai opsi dan melihat hasilnya dengan latensi yang sangat rendah.
  2. Jika Anda tidak mendapatkan hasil yang diharapkan, Anda tidak bisa memastikan apakah masalahnya ada pada model, konfigurasi tugas, atau aplikasi Anda.

Dengan MediaPipe Studio, saya dapat dengan cepat mencoba ambang batas skor yang berbeda pada berbagai gambar untuk menentukan ambang batas yang harus saya gunakan dalam aplikasi. Saya juga mengeliminasi aplikasi web saya sebagai faktor dalam performa ini.

5things3

5. Buat perubahan bertahap

Setelah mengumpulkan data yang berkualitas, menyederhanakan kasus penggunaan, pelatihan, dan pembuatan prototipe, Anda mungkin merasa bahwa Anda perlu mengulangi siklus untuk mendapatkan hasil yang tepat. Jika hal itu terjadi, pilih satu bagian saja dari proses yang perlu diubah, dan lakukan perubahan kecil. Dalam kasus saya, banyak foto anjing yang diambil pada sofa biru yang sama. Jika model mulai terbiasa dengan sofa ini, karena sering berada dalam kotak pembatas, maka itu bisa memengaruhi caranya mengategorikan gambar ketika anjing tidak berada di sofa. Daripada membuang semua foto sofa, saya hanya menghapus beberapa foto dan menambahkan sekitar 10 foto lagi untuk setiap anjing saat mereka tidak berada di sofa. Ini sangat meningkatkan hasil saya. Jika Anda mencoba membuat perubahan besar secara langsung, Anda mungkin akan memunculkan masalah baru, alih-alih menyelesaikannya.

Terus melangkah dan sesuaikan!

Dengan memperhatikan semua tips ini, sekaranglah saatnya bagi Anda untuk menyesuaikan solusi ML Anda sendiri! Anda bisa menyesuaikan model klasifikasi gambar, pengenalan gestur, klasifikasi teks, atau deteksi objek untuk digunakan di MediaPipe Tasks.

Jika Anda ingin membagikan pembelajaran dari pelatihan model pertama Anda, posting detailnya di LinkedIn bersama dengan link ke postingan blog ini, lalu tag saya. Saya tidak sabar melihat apa yang Anda pelajari dan apa yang akan Anda bangun!