Parameter Tuning Model Secara Otomatis dengan Optuna

Apa itu Tuning Parameter

Ketika kita membuat model machine learning, kita tidak akan terlepas dengan yang namanya parameter tuning, yakni proses menentukan nilai parameter-parameter model ktia. Hampir semua model machine learning punya beberapa parameter (atau variabel) yang harus kita definisikan terlebih dahulu nilainya sebelum proses training. Nilai yang kita berikan pada parameter-parameter tersebut nantinya akan menentukan proses pelatihan model kita.

Sebagai contoh di neural network, kita harus menentukan parameter-parameter arsitektur kita, yang bisa meliputi: banyak hidden layer, banyak neuron di setiap layer, jenis fungsi aktivasi dan lain-lain. Penentuan angka-angka tersebut akan menentukan kualitas model kita. Misalkan, untuk tiga parameter yang disebutkan tadi kita menggunakan neural network dengan 2 layer, masing-masingnya 100 neuron, dan menggunakan fungsi aktivasi sigmoid. Itu berarti kita telah memilih nilai untuk tiga parameter yang disebutkan di atas dari banyak kemungkinan nilai. kenapa kok tidak 1 layer? atau 3 layer? kenapa tidak 50 neuron? atau 10 neuron? kenapa tidak pakai fungsi aktivasi lain? dan sebagainya.

Tentu pemilihan parameter harusnya memiliki suatu “dasar”. Biasanya parameter-parameter tersebut dipilih setelah melalui beberapa eksperimen dan merupakan parameter yang menghasilkan model terbaik untuk kasus yang digunakan.

Parameter Tuning model Neural Network

Pada contoh ini kita akan coba membuat model neural network sekaligus melakukan parameter tuning untuk kasus binary classification menggunakan data Sonar. Data tersebut berisikan ~200 pola sinyal sonar yang mendeteksi antara batu (kode “R”) atau besi (kode “M”). Dataset yang telah di-split dapat didownload di sini, contoh code dapat dilihat di Google Colab di sini

Langkah pertama, kita perlu load package dan dataset lalu ubah kode kelas “R”/”M” menjadi 1 dan 0.

Continue reading

Object Detection dengan Tensorflow dan Google Colab [1]

Jadi saya baru-baru ini dapat ajakan untuk membuat sebuah aplikasi yang menggunakan metode object detection untuk mengetahui objek apa saja yang ada pada citra dan posisinya di mana melalui tangkapan kamera Handphone. Proyek ini sangat baru bagi saya dan membuat saya jadi belajar banyak dalam pengerjaan proyek ini.

object detection illustration

Membuat model object detection bukanlah suatu yang mudah, dan menjadikannya bisa dijalankan di Handphone adalah masalah yang lain lagi. Pada artikel ini saya akan coba jelaskan bagaimana membuat sebuah model object detection menggunakan custom dataset buatan sendiri yang nantinya dapat diaplikasikan ke mobile (Android/IOS). Artikel ini fokus ke tahap pertama, yakni penyiapan data.

Tensorflow API

Kami menggunakan Tensorflow untuk menyelesaikan permasalahan ini. Salah satu keunggulan Tensorflow adalah kemudahannya dalam men-deploy model ke Handphone, yakni dengan cara mengkonversi model menjadi TFLite model. Dari TFlite model, nantinya model bisa langsung dipanggil di script Android. Selain itu Tensorflow juga menyediakan beberapa API yang memudahkan kita dalam proses pembuatan model object detection dengan custom dataset (dataset buatan kita sendiri).

Kami menggunakan Tensorflow versi 1.x karena Tensorflow versi 2 saat tulisan ini dibuat masih belum support untuk object detection dengan custom dataset.

Proses instalasi Tensorflow dan Tensorflow object detection dilakukan secara terpisah. Detailnya bisa dilihat sesuai dokumentasi resminya (bisa update setiap waktu). Instalasi Tensorflow dapat dilihat di halaman utamanya, sedangkan untuk instalasi tensorflow object detection API bisa di akses di link berikut ini.

Dataset

Format dataset untuk Object Detection tentu berbeda dengan dataset yang digunakan pada klasifikasi citra biasa. Data latih untuk kasus deteksi objek memerlukan label berupa file terpisah yang mencatat nama objek dan lokasi objek tersebut pada suatu citra atau disebut file anotasi. Terdapat dua style file anotasi yang cukup populer, yakni style COCO dataset dan PASCAL-VOC. Untuk masing-masing style, format dataset bisa berupa file JSON atau file XML. Kami menggunakan format PASCAL-VOC XML dengan tampilan seperti berikut:

Jadi pada contoh di atas saya punya file citra “Image1.jpg” dan file XML “Image1.xml”. Isi dari file XML nya adalah data di atas. Berisikan koordinat objek yang ingin dideteksi. Pembuatan file XML ini tidak perlu dibuat manual (diketik satu persatu), kita bisa menggunakan software anotasi. Anotasi citra diatas dibuat menggunakan software labelimg.

Selain itu, karena kita nantinya akan menggunakan fungsi-fungsi bawaan tensorflow, ada banyak penyesuaian data yang perlu dilakukan sebelum masuk ke proses model training, kira-kira alur pemrosesan datanya seperti ini:

Jadi setelah punya gambar beserta anotasi XML nya, kita perlu convert dulu ke CSV. File CSV ini merupakan 1 file yang “merangkum” semua file xml yang kita punya. Dari file CSV tersebut lalu kita convert ke TFRecord file, objek yang dapat dibaca oleh tensorflow dengan mudah. Semisal ada pembagian data train, data validation, dan data test, proses pemisahan ini dilakukan sebelum konvert ke CSV, jadi ilustrasi di atas hanya untuk salah satu set, data train misalnya.

Continue reading