IoT Monitoring Pompa Air: Tahap Machine Learning

Setelah hardware selesai dibuat dan berhasil mendapatkan gambar yang saya inginkan, kini saatnya masuk ke tahap memasukkan modul kecerdasan buatan untuk mengenali gambar, yaitu machine learning. Ini topik yang sangat menarik.

Sebenarnya dari awal saya agak enggan buat memakai solusi ini. Hanya ada dua gambar yang harus saya klasifikasi. Saya mencoba memakai algoritma Mean Square Error dan Structural Similarity Index. Algoritma ini kira-kira mengukur “jarak” kemiripan antar gambar. Tapi ternyata tidak cocok. Dari dua gambar posisi pressure gauge ON dan OFF, semua dianggap mirip. Hasil perhitungan ini tidak konklusif.

Jadi tidak ada pilihan lain kecuali machine learning.

Saya sudah pernah belajar teori machine learning di tahun 2017, seperti yang saya tuliskan di sini. Semuanya terlihat baik-baik saja. Namun ada jarak yang cukup besar antara teori dan memulai proyek machine learning kita sendiri. Implementasinya mau pakai apa? Tentu saja pakai Python. Bahasa yang paling populer untuk topik machine learning. Mau pakai library apa? Ada dua pilihan: Scikit-learn atau Tensorflow. Akhirnya saya putuskan untuk pakai Tensorflow dengan pertimbangan ini adalah library high-level. Kali ini saya ingin solusi yang praktis saja.

Kesulitan berikutnya adalah bagaimana menyiapkan dataset untuk training? Dari tutorial yang ada di internet, kebanyakan membahas proses machine learning-nya, jarang ada yang membahas persiapan dataset. Dataset sudah tersedia rapi. Dan memang internet banyak menyediakan dataset untuk training. Tapi kebutuhan saya sangat spesifik. Jadi harus menyiapkan dataset sendiri.

Untung saya menemukan blog post yang sedang membahas klasifikasi gambar paru-paru orang yang positif Covid-19 dan yang negatif. Ini mirip dengan kebutuhan saya. Mengklasifikasi gambar menjadi dua bagian. Positif dan negatif. Akhirnya saya persis mengikuti tutorial di sini dengan dataset saya sendiri. Data training sebanyak 120 buah, dengan 60 buah posisi ON dan 60 buah posisi OFF.

Dataset saya. Saya menjalankan scheduler setiap 15 menit kemudian disimpan di folder. Gambar dilakukan pre-processing dengan meng-crop bagian yang diperlukan saja (yaitu pressure gauge) dan mengubahnya ke grayscale untuk meringkankan komputasi. Di sini saya tidak memerlukan perbedaan warna.

Hasilnya cukup menjanjikan. Dari 25 kali iterasi, model menghasilkan akurasi 100% ketika dicoba dengan data test. Dari 120 gambar itu, 80% jadi data training dan 20% jadi data test.

Akhirnya waktu yang ditunggu-tunggu tiba. Mengambil gambar yang benar-benar baru dari kamera dan menyuruh komputer menebak kondisinya. Dan ternyata berhasil. Beberapa kali percobaan, komputer berhasil mengklasifikasi gambar dengan tepat. Dari konsep angan-angan menjadi kenyataan.

Hasil tebakan komputer untuk kondisi pompa OFF
Hasil tebakan komputer untuk kondisi pompa OFF.

Selesai? Tentu saja belum. Proses ini saya lakukan di Notebook Windows 10 dengan Python 3.8. Saya ingin proses dilakukan di Raspberry Pi sehingga dia bisa realtime. Begitu kamera selesai mengambil gambar, komputer langsung bisa mengenali kondisinya. Jadi, perjalanan masih cukup panjang.

Leave a Reply

Your email address will not be published. Required fields are marked *